RE: [PATCH v2 6/6] PCI: hv: Use async probing to reduce boot time

From: Michael Kelley (LINUX)
Date: Fri Apr 07 2023 - 12:14:45 EST


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