linux/include
David Brownell 49a4ec188f fix hotplug for legacy platform drivers
We've had various reports of some legacy "probe the hardware" style
platform drivers having nasty problems with hotplug support.

The core issue is that those legacy drivers don't fully conform to the
driver model.  They assume a role that should be the responsibility of
infrastructure code: creating device nodes.

The "modprobe" step in hotplugging relies on drivers to have split those
roles into different modules.  The lack of this split causes the problems.
When a driver creates nodes for devices that don't exist (sending a hotplug
event), then exits (aborting one modprobe) before the "modprobe $MODALIAS"
step completes (by failing, since it's in the middle of a modprobe), the
result can be an endless loop of modprobe invocations ...  badness.

This fix uses the newish per-device flag controlling issuance of "add"
events.  (A previous version of this patch used a per-device "driver can
hotplug" flag, which only scrubbed $MODALIAS from the environment rather
than suppressing the entire hotplug event.) It also shrinks that flag to
one bit, saving a word in "struct device".

So the net of this patch is removing some nasty failures with legacy
drivers, while retaining hotplug capability for the majority of platform
drivers.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: Greg KH <gregkh@suse.de>
Cc: Andres Salomon <dilinger@debian.org>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-08 11:15:10 -07:00
..
acpi PNPACPI sets pnpdev->dev.archdata 2007-05-08 11:15:08 -07:00
asm-alpha move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-arm kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-arm26 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-avr32 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-blackfin blackfin architecture 2007-05-07 12:12:58 -07:00
asm-cris move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-frv move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-generic move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-h8300 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-i386 i386: sched.h inclusion from module.h is baack 2007-05-08 11:15:08 -07:00
asm-ia64 kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-m32r move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-m68k move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-m68knommu move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-mips kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-parisc move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-powerpc kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-ppc move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-s390 kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-sh kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-sh64 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-sparc move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-sparc64 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-um move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-v850 move die notifier handling to common code 2007-05-08 11:15:04 -07:00
asm-x86_64 kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
asm-xtensa move die notifier handling to common code 2007-05-08 11:15:04 -07:00
crypto
keys
linux fix hotplug for legacy platform drivers 2007-05-08 11:15:10 -07:00
math-emu Delete unused header file math-emu/extended.h 2007-05-08 11:15:05 -07:00
media
mtd
net cleanup compat ioctl handling 2007-05-08 11:15:09 -07:00
pcmcia add new_id to PCMCIA drivers 2007-05-07 12:12:50 -07:00
rdma Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband 2007-05-07 12:18:21 -07:00
rxrpc
scsi
sound
video
Kbuild