From: Michael Kelley (LINUX) <mikelley@xxxxxxxxxxxxx> Sent: Friday, April 7, 2023 9:12 AM > > From: Dexuan Cui <decui@xxxxxxxxxxxxx> Sent: Monday, April 3, 2023 7:06 PM > > > > Commit 414428c5da1c ("PCI: hv: Lock PCI bus on device eject") added > > pci_lock_rescan_remove() and pci_unlock_rescan_remove() in > > create_root_hv_pci_bus() and in hv_eject_device_work() to address the > > race between create_root_hv_pci_bus() and hv_eject_device_work(), but it > > turns that grubing the pci_rescan_remove_lock mutex is not enough: There's some kind of spelling error or typo above. Should "grubing" be "grabbing"? Or did you intend something else? Michael > > refer to the earlier fix "PCI: hv: Add a per-bus mutex state_lock". > > > > Now with hbus->state_lock and other fixes, the race is resolved, so > > remove pci_{lock,unlock}_rescan_remove() in create_root_hv_pci_bus(): > > this removes the serialization in hv_pci_probe() and hence allows > > async-probing (PROBE_PREFER_ASYNCHRONOUS) to work. > > > > Add the async-probing flag to hv_pci_drv. > > > > pci_{lock,unlock}_rescan_remove() in hv_eject_device_work() and in > > hv_pci_remove() are still kept: according to the comment before > > drivers/pci/probe.c: static DEFINE_MUTEX(pci_rescan_remove_lock), > > "PCI device removal routines should always be executed under this mutex". > > > > Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > > Cc: stable@xxxxxxxxxxxxxxx