Re: [PATCH] usb: ohci/uhci - add soft dependencies on ehci_hcd
From: Alan Stern <stern@rowland.harvard.edu>
Date: 2013-09-10 17:02:20
Also in:
lkml
On Tue, 10 Sep 2013, Tom Gundersen wrote:
Support for specifying soft dependencies in the modules themselves was introduced in commit 7cb14ba. In Arch we have always been shipping a module.d(5) fragment ordering ohci/uhci after ehci. If this ordering is really necessary, it would be great to move it to the kernel and getting the correct fragment generated by depmod.
The ordering is more of a recommendation than a necessity. Systems should work oksy if the modules are loaded in the wrong order. The only issue if the drivers are loaded in the wrong order is that full- and low-speed devices will end up being detected and enumerated twice, with a disconnection in between. This can result in disconcerting messages appearing in the system log. In theory, it is possible for a problem to arise. For example, suppose a full-speed flash drive is plugged in when the system starts up. When uhci-hcd or ohci-hcd gets loaded, the drive will be detected and it may even be mounted. Then when ehci-hcd loads, the drive will get disconnected and reconnected. Any open file references to the original mount will be orphaned.
quoted hunk ↗ jump to hunk
Signed-off-by: Tom Gundersen <redacted> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/usb/host/ohci-hcd.c | 1 + drivers/usb/host/uhci-hcd.c | 1 + 2 files changed, 2 insertions(+)diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 8f6b695..783b50a 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c@@ -1171,6 +1171,7 @@ EXPORT_SYMBOL_GPL(ohci_init_driver); MODULE_AUTHOR (DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE ("GPL"); +MODULE_SOFTDEP("pre: ehci_hcd"); #if defined(CONFIG_ARCH_SA1100) && defined(CONFIG_SA1111) #include "ohci-sa1111.c"diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index 4a86b63..c2babf3 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c@@ -937,3 +937,4 @@ module_exit(uhci_hcd_cleanup); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_SOFTDEP("pre: ehci_hcd");
Where is MODULE_SOFTDEP defined? It isn't mentioned in any .h files in my kernel tree. Alan Stern