Hi, As mentioned by Jiri, I found a way to have this horrible list a thing from the past (to some extends). The basic observation is that now, since v4.12, hid-generic should not be an issue for any device, given that all it does is parsing the report descriptor and starting the IRQs/URBs. So it should not be an issue to have hid-generic handling all incoming devices until the specialized driver comes in and replace it. For users, that means that they will see an input node appearing and disappearing as soon as hid-XXX.ko gets loaded. I have tested this on the Logitech Unifying Receiver and some Wacom devices, and all seem happy with the situation. Patches 1 and 2 are HID cleanup and something I wanted to put in from a long time. Patch 3 is the one that does the magic and where I need input from the drivers specialists. To make things easier to handle, I deported the logic of unbinding hid-generic into hid-generic itself. I would think a bus_notifier would be better than instrumenting struct hid_driver for drivers (un)registering on the bus, but we are missing those events in bus_notifiers. Would such events (BUS_NOTIFY_ADD_DRIVER, BUS_NOTIFY_REMOVED_DRIVER) make sense outside of this particular case? The second question I have is whether or not I need locks around the unbinding magic in hid-generic. After a lot of thinking I believe I don't, but I'd prefer having a second pair of eyes on this. Jiri, this series is on top of a merge of your for-next and your other for-4.12/driver-matching-fix branch. I'll resubmit a proper patch that will apply properly to for-next as soon as for-4.12/driver-matching-fix gets merged. Cheers, Benjamin Benjamin Tissoires (3): HID: core: move the dynamic quirks handling in core HID: quirks: move the list of special devices into a quirk HID: core: remove the absolute need of hid_have_special_driver[] drivers/hid/Makefile | 2 +- drivers/hid/hid-core.c | 918 ++--------------------------- drivers/hid/hid-generic.c | 68 ++- drivers/hid/hid-quirks.c | 1236 +++++++++++++++++++++++++++++++++++++++ drivers/hid/usbhid/Makefile | 2 +- drivers/hid/usbhid/hid-core.c | 10 +- drivers/hid/usbhid/hid-quirks.c | 399 ------------- include/linux/hid.h | 19 +- net/bluetooth/hidp/core.c | 2 +- 9 files changed, 1380 insertions(+), 1276 deletions(-) create mode 100644 drivers/hid/hid-quirks.c delete mode 100644 drivers/hid/usbhid/hid-quirks.c -- 2.9.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html