Commit 1efd325f authored by Linus Torvalds's avatar Linus Torvalds

Fix RTC wakealarm sysfs interface breakage.

Commit ed458df4 ("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: default avatarRafael J. Wysocki <rjw@sisk.pl>
Acked-by: default avatarDavid Brownell <david-b@pacbell.net>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fd048088
...@@ -369,7 +369,6 @@ static int __init acpi_rtc_init(void) ...@@ -369,7 +369,6 @@ static int __init acpi_rtc_init(void)
DBG("RTC unavailable?\n"); DBG("RTC unavailable?\n");
return 0; return 0;
} }
/* do this between RTC subsys_initcall() and rtc_cmos driver_initcall() */ module_init(acpi_rtc_init);
fs_initcall(acpi_rtc_init);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment