From 518bd99430de86ec9d0042e61774349074fb9234 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Fri, 2 Feb 2007 19:48:23 +0300 Subject: [PATCH] --- yaml --- r: 46406 b: refs/heads/master c: c857303ad496e1f52955e95994a67869882e89f9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/acpi/events/evxfevnt.c | 8 ++++++++ trunk/drivers/acpi/tables/tbutils.c | 23 +++++++++++++++++++++++ trunk/include/acpi/actables.h | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 70e59471c1d0..7773ec388d87 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 987c21a0b0081d480ec3cd04875509cdc10e15e7 +refs/heads/master: c857303ad496e1f52955e95994a67869882e89f9 diff --git a/trunk/drivers/acpi/events/evxfevnt.c b/trunk/drivers/acpi/events/evxfevnt.c index a3d148e4d39f..4eab4f5a1004 100644 --- a/trunk/drivers/acpi/events/evxfevnt.c +++ b/trunk/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/trunk/drivers/acpi/tables/tbutils.c b/trunk/drivers/acpi/tables/tbutils.c index 0cb743962faf..0874ab299784 100644 --- a/trunk/drivers/acpi/tables/tbutils.c +++ b/trunk/drivers/acpi/tables/tbutils.c @@ -52,6 +52,29 @@ static acpi_physical_address acpi_tb_get_root_table_entry(u8 * table_entry, acpi_native_uint table_entry_size); +/******************************************************************************* + * + * 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 diff --git a/trunk/include/acpi/actables.h b/trunk/include/acpi/actables.h index 5ef1b6939370..e7efb8a03a9c 100644 --- a/trunk/include/acpi/actables.h +++ b/trunk/include/acpi/actables.h @@ -97,6 +97,8 @@ void acpi_tb_set_table_loaded_flag(acpi_native_uint table_index, u8 is_loaded); /* * tbutils - table manager utilities */ +u8 acpi_tb_tables_loaded(void); + void acpi_tb_print_table_header(acpi_physical_address address, struct acpi_table_header *header);