Patchwork [1/2] data: klog.json: Add all the ACPI_BIOS_ERROR messages

login
register
mail settings
Submitter Colin King
Date Nov. 29, 2012, 9:23 a.m.
Message ID <1354181034-19286-1-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/202688/
State Accepted
Headers show

Comments

Colin King - Nov. 29, 2012, 9:23 a.m.
From: Colin Ian King <colin.king@canonical.com>

Add all the current kernel ACPI_BIOS_ERROR messages to the klog
scanning database.  Fix up an old message to work in a more relaxed
way with different kernels.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 data/klog.json | 42 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)
Alex Hung - Dec. 3, 2012, 3:35 a.m.
On 11/29/2012 05:23 PM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Add all the current kernel ACPI_BIOS_ERROR messages to the klog
> scanning database.  Fix up an old message to work in a more relaxed
> way with different kernels.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   data/klog.json | 42 +++++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 41 insertions(+), 1 deletion(-)
>
> diff --git a/data/klog.json b/data/klog.json
> index 19da49f..d23e192 100644
> --- a/data/klog.json
> +++ b/data/klog.json
> @@ -77,6 +77,46 @@
>    "firmware_error_warning_patterns":
>    [
>     {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_HIGH",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Table has invalid signature .* must be SSDT or OEMx",
> +   "advice": "The ACPI driver detected an ACPI table with an invalid signature. This table will not be loaded and will be ignored.",
> +   "label": "KlogAcpiInvalidTableSignature"
> +  },
> +  {
> +   "compare_mode": "string",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "The ACPI DSDT has been corrupted or replaced - old, new headers below",
> +   "advice": "The current loaded DSDT length and/or checksum differ to original version. This could be because it has been altered from outside Linux (perhaps broken firmware or a rootkit) or some incorrect memory write has corrupted the table. A workaround is to boot with the kernel parameter: acpi=copy_dsdt",
> +   "label": "KlogAcpiDsdtCorrupt"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Invalid signature .* for ACPI table, expected .*",
> +   "advice": "The ACPI DSDT and FACS tables must have correct signatures otherwise the ACPI driver treats them as suspect or corrupt and will not load them.",
> +   "label": "KlogAcpiTableSignatureInvalid"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Invalid table length .* in RSDT/XSDT",
> +   "advice": "The ACPI RSDT and XSDT must have the correct length. These variable length tables contain pointers to other ACPI tables and stated length that is different than the actual length can imply that the these tables are not trustworthy and hence the ACPI driver cannot tell if the pointers are totally valid or not.  The driver will ignore these tables and ACPI will be disabled.",
> +   "label": "KlogAcpiTableLengthInvalid"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Required FADT field .* has zero address and.*or length",
> +   "advice": "The ACPI FADT fields Pm1a_event, Pm1a_control, pm_timer are required fields that must have a defined (non-zero) address and a length that is non-zero.  One of these fields is incorrect and needs fixing.",
> +   "label": "KlogAcpiFadtFieldZeroAddrLength"
> +  },
> +  {
>      "compare_mode": "string",
>      "log_level": "LOG_LEVEL_HIGH",
>      "tag": "FWTS_TAG_ACPI",
> @@ -2537,7 +2577,7 @@
>      "compare_mode": "regex",
>      "log_level": "LOG_LEVEL_HIGH",
>      "tag": "FWTS_TAG_ACPI_BAD_ADDRESS",
> -   "pattern": "ACPI Error.*32/64X address mismatch in.*, using 32",
> +   "pattern": "32/64X address mismatch in.*, using 32",
>      "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect.  If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification.",
>      "label": "KlogAcpi32Bit64BitAddressMismatch"
>     },
>
Acked-by: Alex Hung <alex.hung@canonical.com>
Keng-Yu Lin - Dec. 6, 2012, 7:09 a.m.
On Thu, Nov 29, 2012 at 5:23 PM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Add all the current kernel ACPI_BIOS_ERROR messages to the klog
> scanning database.  Fix up an old message to work in a more relaxed
> way with different kernels.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  data/klog.json | 42 +++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 41 insertions(+), 1 deletion(-)
>
> diff --git a/data/klog.json b/data/klog.json
> index 19da49f..d23e192 100644
> --- a/data/klog.json
> +++ b/data/klog.json
> @@ -77,6 +77,46 @@
>   "firmware_error_warning_patterns":
>   [
>    {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_HIGH",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Table has invalid signature .* must be SSDT or OEMx",
> +   "advice": "The ACPI driver detected an ACPI table with an invalid signature. This table will not be loaded and will be ignored.",
> +   "label": "KlogAcpiInvalidTableSignature"
> +  },
> +  {
> +   "compare_mode": "string",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "The ACPI DSDT has been corrupted or replaced - old, new headers below",
> +   "advice": "The current loaded DSDT length and/or checksum differ to original version. This could be because it has been altered from outside Linux (perhaps broken firmware or a rootkit) or some incorrect memory write has corrupted the table. A workaround is to boot with the kernel parameter: acpi=copy_dsdt",
> +   "label": "KlogAcpiDsdtCorrupt"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Invalid signature .* for ACPI table, expected .*",
> +   "advice": "The ACPI DSDT and FACS tables must have correct signatures otherwise the ACPI driver treats them as suspect or corrupt and will not load them.",
> +   "label": "KlogAcpiTableSignatureInvalid"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Invalid table length .* in RSDT/XSDT",
> +   "advice": "The ACPI RSDT and XSDT must have the correct length. These variable length tables contain pointers to other ACPI tables and stated length that is different than the actual length can imply that the these tables are not trustworthy and hence the ACPI driver cannot tell if the pointers are totally valid or not.  The driver will ignore these tables and ACPI will be disabled.",
> +   "label": "KlogAcpiTableLengthInvalid"
> +  },
> +  {
> +   "compare_mode": "regex",
> +   "log_level": "LOG_LEVEL_CRITICAL",
> +   "tag": "FWTS_TAG_ACPI",
> +   "pattern": "Required FADT field .* has zero address and.*or length",
> +   "advice": "The ACPI FADT fields Pm1a_event, Pm1a_control, pm_timer are required fields that must have a defined (non-zero) address and a length that is non-zero.  One of these fields is incorrect and needs fixing.",
> +   "label": "KlogAcpiFadtFieldZeroAddrLength"
> +  },
> +  {
>     "compare_mode": "string",
>     "log_level": "LOG_LEVEL_HIGH",
>     "tag": "FWTS_TAG_ACPI",
> @@ -2537,7 +2577,7 @@
>     "compare_mode": "regex",
>     "log_level": "LOG_LEVEL_HIGH",
>     "tag": "FWTS_TAG_ACPI_BAD_ADDRESS",
> -   "pattern": "ACPI Error.*32/64X address mismatch in.*, using 32",
> +   "pattern": "32/64X address mismatch in.*, using 32",
>     "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect.  If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification.",
>     "label": "KlogAcpi32Bit64BitAddressMismatch"
>    },
> --
> 1.8.0
>
Acked-by: Keng-Yu Lin <kengyu@canonical.com>

Patch

diff --git a/data/klog.json b/data/klog.json
index 19da49f..d23e192 100644
--- a/data/klog.json
+++ b/data/klog.json
@@ -77,6 +77,46 @@ 
  "firmware_error_warning_patterns":
  [
   {
+   "compare_mode": "regex",
+   "log_level": "LOG_LEVEL_HIGH",
+   "tag": "FWTS_TAG_ACPI",
+   "pattern": "Table has invalid signature .* must be SSDT or OEMx",
+   "advice": "The ACPI driver detected an ACPI table with an invalid signature. This table will not be loaded and will be ignored.",
+   "label": "KlogAcpiInvalidTableSignature"
+  },
+  {
+   "compare_mode": "string",
+   "log_level": "LOG_LEVEL_CRITICAL",
+   "tag": "FWTS_TAG_ACPI",
+   "pattern": "The ACPI DSDT has been corrupted or replaced - old, new headers below",
+   "advice": "The current loaded DSDT length and/or checksum differ to original version. This could be because it has been altered from outside Linux (perhaps broken firmware or a rootkit) or some incorrect memory write has corrupted the table. A workaround is to boot with the kernel parameter: acpi=copy_dsdt",
+   "label": "KlogAcpiDsdtCorrupt"
+  },
+  {
+   "compare_mode": "regex",
+   "log_level": "LOG_LEVEL_CRITICAL",
+   "tag": "FWTS_TAG_ACPI",
+   "pattern": "Invalid signature .* for ACPI table, expected .*",
+   "advice": "The ACPI DSDT and FACS tables must have correct signatures otherwise the ACPI driver treats them as suspect or corrupt and will not load them.",
+   "label": "KlogAcpiTableSignatureInvalid"
+  },
+  {
+   "compare_mode": "regex",
+   "log_level": "LOG_LEVEL_CRITICAL",
+   "tag": "FWTS_TAG_ACPI",
+   "pattern": "Invalid table length .* in RSDT/XSDT",
+   "advice": "The ACPI RSDT and XSDT must have the correct length. These variable length tables contain pointers to other ACPI tables and stated length that is different than the actual length can imply that the these tables are not trustworthy and hence the ACPI driver cannot tell if the pointers are totally valid or not.  The driver will ignore these tables and ACPI will be disabled.",
+   "label": "KlogAcpiTableLengthInvalid"
+  },
+  {
+   "compare_mode": "regex",
+   "log_level": "LOG_LEVEL_CRITICAL",
+   "tag": "FWTS_TAG_ACPI",
+   "pattern": "Required FADT field .* has zero address and.*or length",
+   "advice": "The ACPI FADT fields Pm1a_event, Pm1a_control, pm_timer are required fields that must have a defined (non-zero) address and a length that is non-zero.  One of these fields is incorrect and needs fixing.",
+   "label": "KlogAcpiFadtFieldZeroAddrLength"
+  },
+  {
    "compare_mode": "string",
    "log_level": "LOG_LEVEL_HIGH",
    "tag": "FWTS_TAG_ACPI",
@@ -2537,7 +2577,7 @@ 
    "compare_mode": "regex",
    "log_level": "LOG_LEVEL_HIGH",
    "tag": "FWTS_TAG_ACPI_BAD_ADDRESS",
-   "pattern": "ACPI Error.*32/64X address mismatch in.*, using 32",
+   "pattern": "32/64X address mismatch in.*, using 32",
    "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect.  If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification.",
    "label": "KlogAcpi32Bit64BitAddressMismatch"
   },