Re: [PATCH] usb: ohci/uhci - add soft dependencies on ehci_hcd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alan,

On Tue, Sep 10, 2013 at 7:02 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> 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.
//

>> Signed-off-by: Tom Gundersen <teg@xxxxxxx>
>> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>> ---
>>  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

Cheers,

Tom
--
To unsubscribe from this list: send the line "unsubscribe linux-modules" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux