aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-12 11:30:08 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-12 11:30:08 -0700
commit1efd325fbadc02c1338e0ef676f0a6669b251c7a (patch)
tree9992bffadcf0be95d7dfaa6efddc89ac4ee5d77c
parentfd048088306656824958e7783ffcee27e241b361 (diff)
Fix RTC wakealarm sysfs interface breakage.
Commit ed458df4d2470adc02762a87a9ad665d0b1a2bd4 ("PnP: move pnpacpi/pnpbios_init to after PCI init") moved the PnP RTC discovery later, and now the ACPI RTC glue code doesn't find it any more, breaking the RTC wakealarm sysfs interfaces, as reported by Rafael. This really is fairly messy, and we have several annoying ordering constraints here - the PnP code that sets up the RTC resources wants to run after the PCI resources have to be registered, which in turn needs to run after ACPI has at least enumerated the root PCI buses etc. Our initcall ordering is not fine-grained enough to make this all painless. So this moves the ACPI RTC glue ("acpi_rtc_init()") down to a regular module call, which fixes the problem Rafael has. The reason this isn't wonderful is that we really should do acpi_rtc_init before we do the rtc_cmos init, and now those two are in the same module_init() section. Which happens to work, but only because drivers/rtc is linked after drivers/acpi. In other words, we still have a very subtle ordering issue here. Grr. Reported-and-tested-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: David Brownell <david-b@pacbell.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/acpi/glue.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/acpi/glue.c b/drivers/acpi/glue.c
index 8dd3336efd7..3c578ef78c4 100644
--- a/drivers/acpi/glue.c
+++ b/drivers/acpi/glue.c
@@ -369,7 +369,6 @@ static int __init acpi_rtc_init(void)
DBG("RTC unavailable?\n");
return 0;
}
-/* do this between RTC subsys_initcall() and rtc_cmos driver_initcall() */
-fs_initcall(acpi_rtc_init);
+module_init(acpi_rtc_init);
#endif