diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-10 11:00:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-10 11:00:17 -0400 |
commit | ed458df4d2470adc02762a87a9ad665d0b1a2bd4 (patch) | |
tree | 7f5a8409b5b1514e05bf54c4c666711131f6de2f /drivers/pnp | |
parent | 82219fceeb654789a9dd7cd3c6cce12dbf659342 (diff) |
PnP: move pnpacpi/pnpbios_init to after PCI init
We already did that a long time ago for pnp_system_init, but
pnpacpi_init and pnpbios_init remained as subsys_initcalls, and get
linked into the kernel before the arch-specific routines that finalize
the PCI resources (pci_subsys_init).
This means that the PnP routines would either register their resources
before the PCI layer could, or would be unable to check whether a PCI
resource had already been registered. Both are problematic.
I wanted to do this before 2.6.27, but every time we change something
like this, something breaks. That said, _every_ single time we trust
some firmware (like PnP tables) more than we trust the hardware itself
(like PCI probing), the problems have been worse.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/pnp')
-rw-r--r-- | drivers/pnp/Makefile | 5 | ||||
-rw-r--r-- | drivers/pnp/pnpacpi/core.c | 2 | ||||
-rw-r--r-- | drivers/pnp/pnpbios/core.c | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/drivers/pnp/Makefile b/drivers/pnp/Makefile index 26f5abc9c3f7..e83f34f1b5ba 100644 --- a/drivers/pnp/Makefile +++ b/drivers/pnp/Makefile | |||
@@ -2,12 +2,15 @@ | |||
2 | # Makefile for the Linux Plug-and-Play Support. | 2 | # Makefile for the Linux Plug-and-Play Support. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := core.o card.o driver.o resource.o manager.o support.o interface.o quirks.o system.o | 5 | obj-y := core.o card.o driver.o resource.o manager.o support.o interface.o quirks.o |
6 | 6 | ||
7 | obj-$(CONFIG_PNPACPI) += pnpacpi/ | 7 | obj-$(CONFIG_PNPACPI) += pnpacpi/ |
8 | obj-$(CONFIG_PNPBIOS) += pnpbios/ | 8 | obj-$(CONFIG_PNPBIOS) += pnpbios/ |
9 | obj-$(CONFIG_ISAPNP) += isapnp/ | 9 | obj-$(CONFIG_ISAPNP) += isapnp/ |
10 | 10 | ||
11 | # pnp_system_init goes after pnpacpi/pnpbios init | ||
12 | obj-y += system.o | ||
13 | |||
11 | ifeq ($(CONFIG_PNP_DEBUG),y) | 14 | ifeq ($(CONFIG_PNP_DEBUG),y) |
12 | EXTRA_CFLAGS += -DDEBUG | 15 | EXTRA_CFLAGS += -DDEBUG |
13 | endif | 16 | endif |
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index c1b9ea34977b..53561d72b4ee 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c | |||
@@ -268,7 +268,7 @@ static int __init pnpacpi_init(void) | |||
268 | return 0; | 268 | return 0; |
269 | } | 269 | } |
270 | 270 | ||
271 | subsys_initcall(pnpacpi_init); | 271 | fs_initcall(pnpacpi_init); |
272 | 272 | ||
273 | static int __init pnpacpi_setup(char *str) | 273 | static int __init pnpacpi_setup(char *str) |
274 | { | 274 | { |
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c index 19a4be1a9a31..662dfcddedc6 100644 --- a/drivers/pnp/pnpbios/core.c +++ b/drivers/pnp/pnpbios/core.c | |||
@@ -571,7 +571,7 @@ static int __init pnpbios_init(void) | |||
571 | return 0; | 571 | return 0; |
572 | } | 572 | } |
573 | 573 | ||
574 | subsys_initcall(pnpbios_init); | 574 | fs_initcall(pnpbios_init); |
575 | 575 | ||
576 | static int __init pnpbios_thread_init(void) | 576 | static int __init pnpbios_thread_init(void) |
577 | { | 577 | { |