]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ACPICA: Table manager: deploy new firmware error/warning interfaces
authorBob Moore <robert.moore@intel.com>
Mon, 16 Jul 2012 01:39:54 +0000 (09:39 +0800)
committerLen Brown <len.brown@intel.com>
Tue, 17 Jul 2012 04:05:49 +0000 (00:05 -0400)
Emit firmware error/warning messages where appropriate for table
and FADT errors.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/acpica/tbfadt.c
drivers/acpi/acpica/tbinstal.c
drivers/acpi/acpica/tbutils.c
drivers/acpi/acpica/tbxfroot.c

index d919f4055dbafad613d0236ef93fc64ebbedfd55..b3e3fd0307651475612b428d44eec52a3ea41175 100644 (file)
@@ -303,11 +303,11 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length)
         * a warning.
         */
        if (length > sizeof(struct acpi_table_fadt)) {
-               ACPI_WARNING((AE_INFO,
-                             "FADT (revision %u) is longer than ACPI 5.0 version, "
-                             "truncating length %u to %u",
-                             table->revision, length,
-                             (u32)sizeof(struct acpi_table_fadt)));
+               ACPI_BIOS_WARNING((AE_INFO,
+                                  "FADT (revision %u) is longer than ACPI 5.0 version, "
+                                  "truncating length %u to %u",
+                                  table->revision, length,
+                                  (u32)sizeof(struct acpi_table_fadt)));
        }
 
        /* Clear the entire local FADT */
@@ -452,11 +452,13 @@ static void acpi_tb_convert_fadt(void)
                 * they must match.
                 */
                if (address64->address && address32 &&
-                   (address64->address != (u64) address32)) {
-                       ACPI_ERROR((AE_INFO,
-                                   "32/64X address mismatch in %s: 0x%8.8X/0x%8.8X%8.8X, using 32",
-                                   fadt_info_table[i].name, address32,
-                                   ACPI_FORMAT_UINT64(address64->address)));
+                   (address64->address != (u64)address32)) {
+                       ACPI_BIOS_ERROR((AE_INFO,
+                                        "32/64X address mismatch in FADT/%s: "
+                                        "0x%8.8X/0x%8.8X%8.8X, using 32",
+                                        fadt_info_table[i].name, address32,
+                                        ACPI_FORMAT_UINT64(address64->
+                                                           address)));
                }
 
                /* Always use 32-bit address if it is valid (non-null) */
@@ -511,25 +513,25 @@ static void acpi_tb_validate_fadt(void)
         * DSDT/X_DSDT) would indicate the presence of two FACS or two DSDT tables.
         */
        if (acpi_gbl_FADT.facs &&
-           (acpi_gbl_FADT.Xfacs != (u64) acpi_gbl_FADT.facs)) {
-               ACPI_WARNING((AE_INFO,
-                             "32/64X FACS address mismatch in FADT - "
-                             "0x%8.8X/0x%8.8X%8.8X, using 32",
-                             acpi_gbl_FADT.facs,
-                             ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
-
-               acpi_gbl_FADT.Xfacs = (u64) acpi_gbl_FADT.facs;
+           (acpi_gbl_FADT.Xfacs != (u64)acpi_gbl_FADT.facs)) {
+               ACPI_BIOS_WARNING((AE_INFO,
+                                  "32/64X FACS address mismatch in FADT - "
+                                  "0x%8.8X/0x%8.8X%8.8X, using 32",
+                                  acpi_gbl_FADT.facs,
+                                  ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
+
+               acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
        }
 
        if (acpi_gbl_FADT.dsdt &&
-           (acpi_gbl_FADT.Xdsdt != (u64) acpi_gbl_FADT.dsdt)) {
-               ACPI_WARNING((AE_INFO,
-                             "32/64X DSDT address mismatch in FADT - "
-                             "0x%8.8X/0x%8.8X%8.8X, using 32",
-                             acpi_gbl_FADT.dsdt,
-                             ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
-
-               acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
+           (acpi_gbl_FADT.Xdsdt != (u64)acpi_gbl_FADT.dsdt)) {
+               ACPI_BIOS_WARNING((AE_INFO,
+                                  "32/64X DSDT address mismatch in FADT - "
+                                  "0x%8.8X/0x%8.8X%8.8X, using 32",
+                                  acpi_gbl_FADT.dsdt,
+                                  ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
+
+               acpi_gbl_FADT.Xdsdt = (u64)acpi_gbl_FADT.dsdt;
        }
 
        /* If Hardware Reduced flag is set, we are all done */
@@ -559,10 +561,10 @@ static void acpi_tb_validate_fadt(void)
                 */
                if (address64->address &&
                    (address64->bit_width != ACPI_MUL_8(length))) {
-                       ACPI_WARNING((AE_INFO,
-                                     "32/64X length mismatch in %s: %u/%u",
-                                     name, ACPI_MUL_8(length),
-                                     address64->bit_width));
+                       ACPI_BIOS_WARNING((AE_INFO,
+                                          "32/64X length mismatch in FADT/%s: %u/%u",
+                                          name, ACPI_MUL_8(length),
+                                          address64->bit_width));
                }
 
                if (fadt_info_table[i].type & ACPI_FADT_REQUIRED) {
@@ -571,13 +573,13 @@ static void acpi_tb_validate_fadt(void)
                         * Both the address and length must be non-zero.
                         */
                        if (!address64->address || !length) {
-                               ACPI_ERROR((AE_INFO,
-                                           "Required field %s has zero address and/or length:"
-                                           0x%8.8X%8.8X/0x%X",
-                                           name,
-                                           ACPI_FORMAT_UINT64(address64->
-                                                              address),
-                                           length));
+                               ACPI_BIOS_ERROR((AE_INFO,
+                                                "Required FADT field %s has zero address and/or length: "
+                                                "0x%8.8X%8.8X/0x%X",
+                                                name,
+                                                ACPI_FORMAT_UINT64(address64->
+                                                                   address),
+                                                length));
                        }
                } else if (fadt_info_table[i].type & ACPI_FADT_SEPARATE_LENGTH) {
                        /*
@@ -587,13 +589,13 @@ static void acpi_tb_validate_fadt(void)
                         */
                        if ((address64->address && !length) ||
                            (!address64->address && length)) {
-                               ACPI_WARNING((AE_INFO,
-                                             "Optional field %s has zero address or length: "
-                                             "0x%8.8X%8.8X/0x%X",
-                                             name,
-                                             ACPI_FORMAT_UINT64(address64->
-                                                                address),
-                                             length));
+                               ACPI_BIOS_WARNING((AE_INFO,
+                                                  "Optional FADT field %s has zero address or length: "
+                                                  "0x%8.8X%8.8X/0x%X",
+                                                  name,
+                                                  ACPI_FORMAT_UINT64
+                                                  (address64->address),
+                                                  length));
                        }
                }
        }
@@ -638,12 +640,12 @@ static void acpi_tb_setup_fadt_registers(void)
                            (fadt_info_table[i].default_length > 0) &&
                            (fadt_info_table[i].default_length !=
                             target64->bit_width)) {
-                               ACPI_WARNING((AE_INFO,
-                                             "Invalid length for %s: %u, using default %u",
-                                             fadt_info_table[i].name,
-                                             target64->bit_width,
-                                             fadt_info_table[i].
-                                             default_length));
+                               ACPI_BIOS_WARNING((AE_INFO,
+                                                  "Invalid length for FADT/%s: %u, using default %u",
+                                                  fadt_info_table[i].name,
+                                                  target64->bit_width,
+                                                  fadt_info_table[i].
+                                                  default_length));
 
                                /* Incorrect size, set width to the default */
 
index c03500b4cc7ac999bc757205fd765708745220a9..a265d4ab40ac94ec5190b6e1173e399012e2973a 100644 (file)
@@ -138,13 +138,14 @@ acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index)
        if ((table_desc->pointer->signature[0] != 0x00) &&
            (!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_SSDT))
            && (ACPI_STRNCMP(table_desc->pointer->signature, "OEM", 3))) {
-               ACPI_ERROR((AE_INFO,
-                           "Table has invalid signature [%4.4s] (0x%8.8X), must be SSDT or OEMx",
-                           acpi_ut_valid_acpi_name(*(u32 *)table_desc->
-                                                   pointer->
-                                                   signature) ? table_desc->
-                           pointer->signature : "????",
-                           *(u32 *)table_desc->pointer->signature));
+               ACPI_BIOS_ERROR((AE_INFO,
+                                "Table has invalid signature [%4.4s] (0x%8.8X), "
+                                "must be SSDT or OEMx",
+                                acpi_ut_valid_acpi_name(*(u32 *)table_desc->
+                                                        pointer->
+                                                        signature) ?
+                                table_desc->pointer->signature : "????",
+                                *(u32 *)table_desc->pointer->signature));
 
                return_ACPI_STATUS(AE_BAD_SIGNATURE);
        }
index 0a706cac37de0736c6c758223ba242a16412c6c8..6818b31954c8449eca7b3ff5a19c78eccc3c1967 100644 (file)
@@ -317,10 +317,11 @@ acpi_status acpi_tb_verify_checksum(struct acpi_table_header *table, u32 length)
        /* Checksum ok? (should be zero) */
 
        if (checksum) {
-               ACPI_WARNING((AE_INFO,
-                             "Incorrect checksum in table [%4.4s] - 0x%2.2X, should be 0x%2.2X",
-                             table->signature, table->checksum,
-                             (u8) (table->checksum - checksum)));
+               ACPI_BIOS_WARNING((AE_INFO,
+                                  "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
+                                  "should be 0x%2.2X",
+                                  table->signature, table->checksum,
+                                  (u8)(table->checksum - checksum)));
 
 #if (ACPI_CHECKSUM_ABORT)
 
@@ -377,8 +378,9 @@ void acpi_tb_check_dsdt_header(void)
 
        if (acpi_gbl_original_dsdt_header.length != acpi_gbl_DSDT->length ||
            acpi_gbl_original_dsdt_header.checksum != acpi_gbl_DSDT->checksum) {
-               ACPI_ERROR((AE_INFO,
-                           "The DSDT has been corrupted or replaced - old, new headers below"));
+               ACPI_BIOS_ERROR((AE_INFO,
+                                "The DSDT has been corrupted or replaced - "
+                                "old, new headers below"));
                acpi_tb_print_table_header(0, &acpi_gbl_original_dsdt_header);
                acpi_tb_print_table_header(0, acpi_gbl_DSDT);
 
@@ -480,9 +482,10 @@ acpi_tb_install_table(acpi_physical_address address,
        /* If a particular signature is expected (DSDT/FACS), it must match */
 
        if (signature && !ACPI_COMPARE_NAME(table->signature, signature)) {
-               ACPI_ERROR((AE_INFO,
-                           "Invalid signature 0x%X for ACPI table, expected [%s]",
-                           *ACPI_CAST_PTR(u32, table->signature), signature));
+               ACPI_BIOS_ERROR((AE_INFO,
+                                "Invalid signature 0x%X for ACPI table, expected [%s]",
+                                *ACPI_CAST_PTR(u32, table->signature),
+                                signature));
                goto unmap_and_exit;
        }
 
@@ -589,10 +592,10 @@ acpi_tb_get_root_table_entry(u8 *table_entry, u32 table_entry_size)
 
                        /* Will truncate 64-bit address to 32 bits, issue warning */
 
-                       ACPI_WARNING((AE_INFO,
-                                     "64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X),"
-                                     " truncating",
-                                     ACPI_FORMAT_UINT64(address64)));
+                       ACPI_BIOS_WARNING((AE_INFO,
+                                          "64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X),"
+                                          " truncating",
+                                          ACPI_FORMAT_UINT64(address64)));
                }
 #endif
                return ((acpi_physical_address) (address64));
@@ -694,8 +697,9 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
        acpi_os_unmap_memory(table, sizeof(struct acpi_table_header));
 
        if (length < sizeof(struct acpi_table_header)) {
-               ACPI_ERROR((AE_INFO, "Invalid length 0x%X in RSDT/XSDT",
-                           length));
+               ACPI_BIOS_ERROR((AE_INFO,
+                                "Invalid table length 0x%X in RSDT/XSDT",
+                                length));
                return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
        }
 
index 4258f647ca3d63cb20cf9ce2d0b01701f6d00e11..5f6f7445c37c56ba8ff7c9569ebd04c810b149f9 100644 (file)
@@ -216,7 +216,7 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address)
 
        /* A valid RSDP was not found */
 
-       ACPI_ERROR((AE_INFO, "A valid RSDP was not found"));
+       ACPI_BIOS_ERROR((AE_INFO, "A valid RSDP was not found"));
        return_ACPI_STATUS(AE_NOT_FOUND);
 }