ACPICA: acpiexec/acpinames: Support very large number of ACPI tables
authorBob Moore <robert.moore@intel.com>
Tue, 25 Aug 2015 02:29:33 +0000 (10:29 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 25 Aug 2015 21:11:31 +0000 (23:11 +0200)
ACPICA commit ca3bd4c5cdc39a9009280032adbbc20f34e94c47

Fix a couple of issues with >40 ACPI tables.
Return exit error for acpinames to enable use with BIOS builds.

The new exported function is used by acpinames. For Linux kernel, this
change is a no-op.

Link: https://github.com/acpica/acpica/commit/ca3bd4c5
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/actables.h
drivers/acpi/acpica/tbxfload.c
drivers/acpi/acpica/utfileio.c

index ab7f3a03f1797673442ca43a040b4b4494d4fcca..f7731f260c318606e32455b7175a01ea157d8267 100644 (file)
@@ -165,4 +165,9 @@ acpi_status acpi_tb_parse_root_table(acpi_physical_address rsdp_address);
 
 u8 acpi_is_valid_signature(char *signature);
 
+/*
+ * tbxfload
+ */
+acpi_status acpi_tb_load_namespace(void);
+
 #endif                         /* __ACTABLES_H__ */
index fb4d4e64f8aa2cc17163594cdff72a7ef4273151..96b82a818d76622ea57e4e49f403dfa37054201f 100644 (file)
@@ -51,9 +51,6 @@
 #define _COMPONENT          ACPI_TABLES
 ACPI_MODULE_NAME("tbxfload")
 
-/* Local prototypes */
-static acpi_status acpi_tb_load_namespace(void);
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_load_tables
@@ -65,7 +62,6 @@ static acpi_status acpi_tb_load_namespace(void);
  * DESCRIPTION: Load the ACPI tables from the RSDT/XSDT
  *
  ******************************************************************************/
-
 acpi_status __init acpi_load_tables(void)
 {
        acpi_status status;
@@ -75,6 +71,13 @@ acpi_status __init acpi_load_tables(void)
        /* Load the namespace from the tables */
 
        status = acpi_tb_load_namespace();
+
+       /* Don't let single failures abort the load */
+
+       if (status == AE_CTRL_TERMINATE) {
+               status = AE_OK;
+       }
+
        if (ACPI_FAILURE(status)) {
                ACPI_EXCEPTION((AE_INFO, status,
                                "While loading namespace from ACPI tables"));
@@ -97,7 +100,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_load_tables)
  *              the RSDT/XSDT.
  *
  ******************************************************************************/
-static acpi_status acpi_tb_load_namespace(void)
+acpi_status acpi_tb_load_namespace(void)
 {
        acpi_status status;
        u32 i;
@@ -214,6 +217,10 @@ static acpi_status acpi_tb_load_namespace(void)
                ACPI_ERROR((AE_INFO,
                            "%u ACPI AML tables successfully acquired and loaded, %u failed",
                            tables_loaded, tables_failed));
+
+               /* Indicate at least one failure */
+
+               status = AE_CTRL_TERMINATE;
        }
 
 unlock_and_exit:
index 857af824337bebae5b6de938be7f1afeafc676b6..75a94f52b4bee07df7ac5722b64276bad82e42f4 100644 (file)
@@ -312,7 +312,7 @@ acpi_ut_read_table_from_file(char *filename, struct acpi_table_header ** table)
        /* Get the entire file */
 
        fprintf(stderr,
-               "Reading ACPI table from file %10s - Length %.8u (0x%06X)\n",
+               "Reading ACPI table from file %12s - Length %.8u (0x%06X)\n",
                filename, file_size, file_size);
 
        status = acpi_ut_read_table(file, table, &table_length);