Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [RFC][PATCH] module: allow multiple calls to MODULE_DEVICE_TABLE() per module | Date | Tue, 28 Jan 2014 12:04:53 +1030 |
| |
Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: > On Mon, Jan 27, 2014 at 08:09:55PM +0100, Tom Gundersen wrote: >> Commit 78551277e4df5: "Input: i8042 - add PNP modaliases" had a bug, where the >> second call to MODULE_DEVICE_TABLE() overrode the first resulting in not all >> the modaliases being exposed. >> >> This fixes the problem by including the name of the device_id table in the >> __mod_*_device_table alias, allowing us to export several device_id tables >> per module. >> >> Suggested-by: Kay Sievers <kay@vrfy.org> >> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> >> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> Cc: Rusty Russell <rusty@rustcorp.com.au> >> --- >> include/linux/module.h | 2 +- >> scripts/mod/file2alias.c | 14 +++++++++----- >> 2 files changed, 10 insertions(+), 6 deletions(-) > > Ah, very nice, I've wanted this for a while now, it would make a number > of different drivers much smaller and simpler to add new device ids to > (no multiple lists of ids, one for the module loader and one for the > sub-driver that is in the single file.)
You never asked :(
I've applied, this, but I'm actually amazed this patch works. C is weird sometimes. It changes declarations of the form:
extern const struct pci_device_id __mod_pci_device_id_table __attribute__ ((unused, alias("e1000_pci_tbl"));
Into:
extern const struct pci__e1000_pci_tbl_device_id __mod_pci__e1000_pci_tbl_device_id_table __attribute__ ((unused, alias("e1000_pci_tbl"));
Now, that's a completely unknown type, but gcc doesn't care because it's just an extern declaration. It does insert the alias, which is all we care about.
We would normally use a special section for this, so it's mainly historical. Now we have DEFINE_PCI_DEVICE_TABLE etc, we should use those to put it in a special section (eg. "pci_ids") and grab that directly.
Volunteers welcome :) Rusty.
| |