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>
This commit is contained in:
Bob Moore 2007-02-02 19:48:23 +03:00 committed by Len Brown
parent 987c21a0b0
commit c857303ad4
3 changed files with 33 additions and 0 deletions

View file

@ -65,6 +65,14 @@ acpi_status acpi_enable(void)
ACPI_FUNCTION_TRACE(acpi_enable); 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) { if (acpi_hw_get_mode() == ACPI_SYS_MODE_ACPI) {
ACPI_DEBUG_PRINT((ACPI_DB_INIT, ACPI_DEBUG_PRINT((ACPI_DB_INIT,
"System is already in ACPI mode\n")); "System is already in ACPI mode\n"));

View file

@ -52,6 +52,29 @@ static acpi_physical_address
acpi_tb_get_root_table_entry(u8 * table_entry, acpi_tb_get_root_table_entry(u8 * table_entry,
acpi_native_uint table_entry_size); 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 * FUNCTION: acpi_tb_print_table_header

View file

@ -97,6 +97,8 @@ void acpi_tb_set_table_loaded_flag(acpi_native_uint table_index, u8 is_loaded);
/* /*
* tbutils - table manager utilities * tbutils - table manager utilities
*/ */
u8 acpi_tb_tables_loaded(void);
void void
acpi_tb_print_table_header(acpi_physical_address address, acpi_tb_print_table_header(acpi_physical_address address,
struct acpi_table_header *header); struct acpi_table_header *header);