diff options
author | Bob Moore <robert.moore@intel.com> | 2007-02-02 16:48:23 (GMT) |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-03 02:14:30 (GMT) |
commit | c857303ad496e1f52955e95994a67869882e89f9 (patch) | |
tree | f08011d43627bc7fc401253b5f8446bab708d87d /drivers | |
parent | 987c21a0b0081d480ec3cd04875509cdc10e15e7 (diff) | |
download | linux-c857303ad496e1f52955e95994a67869882e89f9.tar.xz |
ACPICA: Fail AcpiEnable if ACPI tables not loaded.
AcpiEnable will now fail if all of the required ACPI tables are not
loaded (FADT, FACS, DSDT). BZ 477
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/events/evxfevnt.c | 8 | ||||
-rw-r--r-- | drivers/acpi/tables/tbutils.c | 23 |
2 files changed, 31 insertions, 0 deletions
diff --git a/drivers/acpi/events/evxfevnt.c b/drivers/acpi/events/evxfevnt.c index a3d148e..4eab4f5 100644 --- a/drivers/acpi/events/evxfevnt.c +++ b/drivers/acpi/events/evxfevnt.c @@ -65,6 +65,14 @@ acpi_status acpi_enable(void) ACPI_FUNCTION_TRACE(acpi_enable); + /* ACPI tables must be present */ + + if (!acpi_tb_tables_loaded()) { + return_ACPI_STATUS(AE_NO_ACPI_TABLES); + } + + /* Check current mode */ + if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) { ACPI_DEBUG_PRINT((ACPI_DB_INIT, "System is already in ACPI mode\n")); diff --git a/drivers/acpi/tables/tbutils.c b/drivers/acpi/tables/tbutils.c index 0cb7439..0874ab2 100644 --- a/drivers/acpi/tables/tbutils.c +++ b/drivers/acpi/tables/tbutils.c @@ -54,6 +54,29 @@ acpi_tb_get_root_table_entry(u8 * table_entry, /******************************************************************************* * + * FUNCTION: acpi_tb_tables_loaded + * + * PARAMETERS: None + * + * RETURN: TRUE if required ACPI tables are loaded + * + * DESCRIPTION: Determine if the minimum required ACPI tables are present + * (FADT, FACS, DSDT) + * + ******************************************************************************/ + +u8 acpi_tb_tables_loaded(void) +{ + + if (acpi_gbl_root_table_list.count >= 3) { + return (TRUE); + } + + return (FALSE); +} + +/******************************************************************************* + * * FUNCTION: acpi_tb_print_table_header * * PARAMETERS: Address - Table physical address |