ACPI / init: Fix the ordering of acpi_reserve_resources()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 7 May 2015 19:19:39 +0000 (21:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Jun 2015 06:20:00 +0000 (23:20 -0700)
commit92c934b10ec3ed9db375161829d715892c9f4f99
tree1e44edea2fdb54d16a3d726dbb93175ebdd9bf88
parent1b577b9f2aadfca6935ceb96867d3b2def39cc9c
ACPI / init: Fix the ordering of acpi_reserve_resources()

commit b9a5e5e18fbf223502c0b2264c15024e393da928 upstream.

Since acpi_reserve_resources() is defined as a device_initcall(),
there's no guarantee that it will be executed in the right order
with respect to the rest of the ACPI initialization code.  On some
systems this leads to breakage if, for example, the address range
that should be reserved for the ACPI fixed registers is given to
the PCI host bridge instead if the race is won by the wrong code
path.

Fix this by turning acpi_reserve_resources() into a void function
and calling it directly from within the ACPI initialization sequence.

Reported-and-tested-by: George McCollister <george.mccollister@gmail.com>
Link: http://marc.info/?t=143092384600002&r=1&w=2
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/osl.c