lkml.org 
[lkml]   [2013]   [Sep]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH] usb: ohci/uhci - add soft dependencies on ehci_hcd
On Tue, Sep 10, 2013 at 7:31 PM, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 10 Sep 2013, Tom Gundersen wrote:
>
>> Hi Alan,
>>
>> On Tue, Sep 10, 2013 at 7:02 PM, Alan Stern <stern@rowland.harvard.edu> wrote:
>> > 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.
>>
>> Thanks for the explanation. Sounds to me that a softdep is indeed appropriate:
>>
>> //
>> The softdep command allows you to specify soft, or optional, module
>> dependencies. modulename can be used without these optional modules
>> installed, but usually with some features missing. For example, a
>> driver for a storage HBA might require another module be loaded in
>> order to use management features.
>>
>> pre-deps and post-deps modules are lists of names and/or aliases of
>> other modules that modprobe will attempt to install (or remove) in
>> order before and after the main module given in the modulename
>> argument.
>> //
>
> So this means that before installing ohci-hcd, modprobe would attempt
> to install ehci-hcd? And if the attempt failed, it would go ahead and
> load ohci-hcd anyway?

Exactly.

> What about during unloading? Would this mean that rmmod ohci-hcd would
> automatically cause ehci-hcd to be unloaded also? Or would unloading
> ehci-hcd cause ohci-hcd to be unloaded?

No, unloading does not care about dependencies.

>> >> Signed-off-by: Tom Gundersen <teg@jklm.no>
>> >> 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.
>>
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/module.h#n104
>
> I think I get the picture.
>
> The MODULE_SOFTDEP lines should be moved to uhci-pci.c and ohci-pci.c,
> because the ordering restrictions apply only to the PCI versions of
> these drivers. And they should specify "pre: ehci-pci", not ehci-hcd.

Thanks, I'll send a new patch.

-t


\
 
 \ /
  Last update: 2013-09-10 23:41    [W:0.089 / U:0.236 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site