Message ID | 20221028141821.1.I9a5353f81d1509f85f3a04f0cdc9099f6fe60811@changeid |
---|---|
State | Superseded |
Headers | show |
Series | [1/2] usb: ehci-pci: Set PROBE_PREFER_ASYNCHRONOUS | expand |
On Fri, Oct 28, 2022 at 02:19:07PM -0700, Brian Norris wrote: > This driver often takes on the order of 8ms to start, but every little > bit counts. It shouldn't have many cross-device dependencies to > race with, nor racy access to shared state with other drivers, so this > should be a relatively low risk change. > > This driver was pinpointed as part of a survey of top slowest initcalls > (i.e., are built in, and probing synchronously) on a lab of ChromeOS > systems. > > Signed-off-by: Brian Norris <briannorris@chromium.org> > --- Acked-by: Alan Stern <stern@rowland.harvard.edu> However, I'm curious to know why this patch makes ehci-pci use PROBE_PREFER_ASYNCHRONOUS even when CONFIG_PM isn't set, whereas the 2/2 patch makes xhci-pci use PROBE_PREFER_ASYNCHRONOUS only when CONFIG_PM is set. Alan Stern > drivers/usb/host/ehci-pci.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c > index 17f8b6ea0c35..4b148fe5e43b 100644 > --- a/drivers/usb/host/ehci-pci.c > +++ b/drivers/usb/host/ehci-pci.c > @@ -411,11 +411,12 @@ static struct pci_driver ehci_pci_driver = { > .remove = ehci_pci_remove, > .shutdown = usb_hcd_pci_shutdown, > > -#ifdef CONFIG_PM > .driver = { > - .pm = &usb_hcd_pci_pm_ops > - }, > +#ifdef CONFIG_PM > + .pm = &usb_hcd_pci_pm_ops, > #endif > + .probe_type = PROBE_PREFER_ASYNCHRONOUS, > + }, > }; > > static int __init ehci_pci_init(void) > -- > 2.38.1.273.g43a17bfeac-goog >
On Fri, Oct 28, 2022 at 09:13:14PM -0400, Alan Stern wrote: > However, I'm curious to know why this patch makes ehci-pci use > PROBE_PREFER_ASYNCHRONOUS even when CONFIG_PM isn't set, whereas the 2/2 > patch makes xhci-pci use PROBE_PREFER_ASYNCHRONOUS only when CONFIG_PM > is set. That's definitely a bug in patch 2. This has nothing (or, little; probe order can technically affect the PM suspend/resume order) to do with CONFIG_PM, except that the .pm hooks tend to sit nearby, and repeated driver patching makes the author's eyes glaze over sometimes... Thanks. v2 coming. Brian
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index 17f8b6ea0c35..4b148fe5e43b 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c @@ -411,11 +411,12 @@ static struct pci_driver ehci_pci_driver = { .remove = ehci_pci_remove, .shutdown = usb_hcd_pci_shutdown, -#ifdef CONFIG_PM .driver = { - .pm = &usb_hcd_pci_pm_ops - }, +#ifdef CONFIG_PM + .pm = &usb_hcd_pci_pm_ops, #endif + .probe_type = PROBE_PREFER_ASYNCHRONOUS, + }, }; static int __init ehci_pci_init(void)
This driver often takes on the order of 8ms to start, but every little bit counts. It shouldn't have many cross-device dependencies to race with, nor racy access to shared state with other drivers, so this should be a relatively low risk change. This driver was pinpointed as part of a survey of top slowest initcalls (i.e., are built in, and probing synchronously) on a lab of ChromeOS systems. Signed-off-by: Brian Norris <briannorris@chromium.org> --- drivers/usb/host/ehci-pci.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)