Move GPE enable until after _REG/_STA/_INI methods are run.

This ensures that all operation regions and devices throughout the
namespace have been initialized before GPEs are enabled.
Alexey Starikovskiy, BZ 9916
This commit is contained in:
Robert Moore 2008-05-07 14:35:59 -07:00
parent 990816baed
commit deac354959

View File

@ -262,7 +262,9 @@ AcpiEnableSubsystem (
*
* Note2: Fixed events are initialized and enabled here. GPEs are
* initialized, but cannot be enabled until after the hardware is
* completely initialized (SCI and GlobalLock activated)
* completely initialized (SCI and GlobalLock activated) and the various
* initialization control methods are run (_REG, _STA, _INI) on the
* entire namespace.
*/
if (!(Flags & ACPI_NO_EVENT_INIT))
{
@ -292,26 +294,6 @@ AcpiEnableSubsystem (
}
}
/*
* Complete the GPE initialization for the GPE blocks defined in the FADT
* (GPE block 0 and 1).
*
* Note1: This is where the _PRW methods are executed for the GPEs. These
* methods can only be executed after the SCI and Global Lock handlers are
* installed and initialized.
*
* Note2: Currently, there seems to be no need to run the _REG methods
* before execution of the _PRW methods and enabling of the GPEs.
*/
if (!(Flags & ACPI_NO_EVENT_INIT))
{
Status = AcpiEvInstallFadtGpes ();
if (ACPI_FAILURE (Status))
{
return (Status);
}
}
return_ACPI_STATUS (Status);
}
@ -393,6 +375,27 @@ AcpiInitializeObjects (
}
}
/*
* Initialize the GPE blocks defined in the FADT (GPE block 0 and 1).
* The runtime GPEs are enabled here.
*
* This is where the _PRW methods are executed for the GPEs. These
* methods can only be executed after the SCI and Global Lock handlers are
* installed and initialized.
*
* GPEs can only be enabled after the _REG, _STA, and _INI methods have
* been run. This ensures that all Operation Regions and all Devices have
* been initialized and are ready.
*/
if (!(Flags & ACPI_NO_EVENT_INIT))
{
Status = AcpiEvInstallFadtGpes ();
if (ACPI_FAILURE (Status))
{
return (Status);
}
}
/*
* Empty the caches (delete the cached objects) on the assumption that
* the table load filled them up more than they will be at runtime --