[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2dc437fe-2ab4-23e3-44f3-f06feaf88d86@codeaurora.org>
Date: Thu, 28 Sep 2017 12:47:45 -0400
From: Sinan Kaya <okaya@...eaurora.org>
To: Govindarajulu Varadarajan <gvaradar@...co.com>, benve@...co.com,
bhelgaas@...gle.com, linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org, jlbec@...lplan.org, hch@....de,
mingo@...hat.com, peterz@...radead.org
Subject: Re: [PATCH 3/4] pci aer: fix deadlock in do_recovery
On 9/27/2017 5:42 PM, Govindarajulu Varadarajan wrote:
> CPU0 CPU1
> ---------------------------------------------------------------------
> __driver_attach()
> device_lock(&dev->mutex) <--- device mutex lock here
> driver_probe_device()
> pci_enable_sriov()
> pci_iov_add_virtfn()
> pci_device_add()
> aer_isr() <--- pci aer error
> do_recovery()
> broadcast_error_message()
> pci_walk_bus()
> down_read(&pci_bus_sem) <--- rd sem
How about releasing the device_lock here on CPU0? or in other words keep
device_lock as short as possible?
> down_write(&pci_bus_sem) <-- stuck on wr sem
> report_error_detected()
> device_lock(&dev->mutex)<--- DEAD LOCK
--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Powered by blists - more mailing lists