Values set within all APEI tables have no hardware meaning and are valid combining with kernel hacks. These changes allow only to confirm that APEI tables (HEST, ERST, BERT) are supported by kernel and no issues were observed on arm/arm64 architectures.
Tomasz Nowicki (6): acpi, apei, ghes: Enable APEI firmware first mode by APEI bit. acpi, apei, hed: Add Hardware Error Device (HED) to SB bus. acpi, apei, einj: Fill ACPI tables to enable EINJ driver. acpi, apei: Fix EINJ and HEST tables. acpi, apei, bert: Point to the same error block status memory region as HEST points. acpi, apei, erst: Point to region where we can pretend registers, persistent sotrage.
platforms/exynos5250-arndale.acpi/bert.asl | 4 +- platforms/exynos5250-arndale.acpi/dsdt.asl | 27 +++++ platforms/exynos5250-arndale.acpi/einj.asl | 2 +- platforms/exynos5250-arndale.acpi/erst.asl | 34 +++---- platforms/exynos5250-arndale.acpi/hest.asl | 148 +--------------------------- platforms/foundation-v8.acpi/bert.asl | 4 +- platforms/foundation-v8.acpi/dsdt.asl | 27 +++++ platforms/foundation-v8.acpi/einj.asl | 2 +- platforms/foundation-v8.acpi/erst.asl | 34 +++---- platforms/foundation-v8.acpi/hest.asl | 148 +--------------------------- 10 files changed, 98 insertions(+), 332 deletions(-)
Platform-Wide OSPM Capabilities (_SB._OSC control method) describe platform features that are supported, APEI bit in this case.
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- platforms/exynos5250-arndale.acpi/dsdt.asl | 16 ++++++++++++++++ platforms/foundation-v8.acpi/dsdt.asl | 16 ++++++++++++++++ 2 files changed, 32 insertions(+)
diff --git a/platforms/exynos5250-arndale.acpi/dsdt.asl b/platforms/exynos5250-arndale.acpi/dsdt.asl index aa01757..d5deb41 100644 --- a/platforms/exynos5250-arndale.acpi/dsdt.asl +++ b/platforms/exynos5250-arndale.acpi/dsdt.asl @@ -46,6 +46,22 @@ DefinitionBlock ( } }
+ Method (_OSC, 4, NotSerialized) + { + /* Platform-Wide OSPM Capabilities */ + If(LEqual(Arg0,ToUUID("0811B06E-4A27-44F9-8D60-3CBBC22E7B48"))) + { + /* APEI support unconditionally */ + Return (Arg3) + } Else { + Return (Buffer (0x10) + { + /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }) + } + } + Device (SCK0) { Name (_HID, "ACPI0004") diff --git a/platforms/foundation-v8.acpi/dsdt.asl b/platforms/foundation-v8.acpi/dsdt.asl index 89459ec..301cecc 100644 --- a/platforms/foundation-v8.acpi/dsdt.asl +++ b/platforms/foundation-v8.acpi/dsdt.asl @@ -16,6 +16,22 @@ DefinitionBlock ( { Scope (_SB) { + Method (_OSC, 4, NotSerialized) + { + /* Platform-Wide OSPM Capabilities */ + If(LEqual(Arg0,ToUUID("0811B06E-4A27-44F9-8D60-3CBBC22E7B48"))) + { + /* APEI support unconditionally */ + Return (Arg3) + } Else { + Return (Buffer (0x10) + { + /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }) + } + } + Device (SCK0) { Name (_HID, "ACPI0004")
HED is meant to intermediate between the hardware error occurrence and SCI handler. So this device is needed to to convey correctable hardware error to OS.
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- platforms/exynos5250-arndale.acpi/dsdt.asl | 6 ++++++ platforms/foundation-v8.acpi/dsdt.asl | 6 ++++++ 2 files changed, 12 insertions(+)
diff --git a/platforms/exynos5250-arndale.acpi/dsdt.asl b/platforms/exynos5250-arndale.acpi/dsdt.asl index d5deb41..1cb68d2 100644 --- a/platforms/exynos5250-arndale.acpi/dsdt.asl +++ b/platforms/exynos5250-arndale.acpi/dsdt.asl @@ -62,6 +62,12 @@ DefinitionBlock ( } }
+ Device (HED) + { + Name (_HID, EisaId ("PNP0C33")) + Name (_UID, 0x00) + } + Device (SCK0) { Name (_HID, "ACPI0004") diff --git a/platforms/foundation-v8.acpi/dsdt.asl b/platforms/foundation-v8.acpi/dsdt.asl index 301cecc..4a41ffe 100644 --- a/platforms/foundation-v8.acpi/dsdt.asl +++ b/platforms/foundation-v8.acpi/dsdt.asl @@ -32,6 +32,12 @@ DefinitionBlock ( } }
+ Device (HED) + { + Name (_HID, EisaId ("PNP0C33")) + Name (_UID, 0x00) + } + Device (SCK0) { Name (_HID, "ACPI0004")
o set aside pretend physical space to exchange info about error o add method (called directly from EINJ dirver) which is used to omit hardware error trigger
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- platforms/exynos5250-arndale.acpi/dsdt.asl | 5 +++++ platforms/exynos5250-arndale.acpi/hest.asl | 2 +- platforms/foundation-v8.acpi/dsdt.asl | 5 +++++ platforms/foundation-v8.acpi/hest.asl | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/platforms/exynos5250-arndale.acpi/dsdt.asl b/platforms/exynos5250-arndale.acpi/dsdt.asl index 1cb68d2..3fc15ab 100644 --- a/platforms/exynos5250-arndale.acpi/dsdt.asl +++ b/platforms/exynos5250-arndale.acpi/dsdt.asl @@ -68,6 +68,11 @@ DefinitionBlock ( Name (_UID, 0x00) }
+ Method (TRIG, 0, NotSerialized) + { + Notify (HED, 0x80) + } + Device (SCK0) { Name (_HID, "ACPI0004") diff --git a/platforms/exynos5250-arndale.acpi/hest.asl b/platforms/exynos5250-arndale.acpi/hest.asl index ad29f6f..89ff46f 100644 --- a/platforms/exynos5250-arndale.acpi/hest.asl +++ b/platforms/exynos5250-arndale.acpi/hest.asl @@ -148,7 +148,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000000
[0028] Notify : [Hardware Error Notification Structure] [0001] Notify Type : 03 [SCI] diff --git a/platforms/foundation-v8.acpi/dsdt.asl b/platforms/foundation-v8.acpi/dsdt.asl index 4a41ffe..8643415 100644 --- a/platforms/foundation-v8.acpi/dsdt.asl +++ b/platforms/foundation-v8.acpi/dsdt.asl @@ -38,6 +38,11 @@ DefinitionBlock ( Name (_UID, 0x00) }
+ Method (TRIG, 0, NotSerialized) + { + Notify (HED, 0x80) + } + Device (SCK0) { Name (_HID, "ACPI0004") diff --git a/platforms/foundation-v8.acpi/hest.asl b/platforms/foundation-v8.acpi/hest.asl index f133704..7cb3adb 100644 --- a/platforms/foundation-v8.acpi/hest.asl +++ b/platforms/foundation-v8.acpi/hest.asl @@ -148,7 +148,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0xFFFF0008
[0028] Notify : [Hardware Error Notification Structure] [0001] Notify Type : 03 [SCI]
o fix number of Injection Entry in EINJ o leave one generic hardware error source to get rid of error messages in dmsg, some of them were x86 specific or not fully supported for ARM now
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- platforms/exynos5250-arndale.acpi/einj.asl | 2 +- platforms/exynos5250-arndale.acpi/hest.asl | 146 +--------------------------- platforms/foundation-v8.acpi/einj.asl | 2 +- platforms/foundation-v8.acpi/hest.asl | 146 +--------------------------- 4 files changed, 4 insertions(+), 292 deletions(-)
diff --git a/platforms/exynos5250-arndale.acpi/einj.asl b/platforms/exynos5250-arndale.acpi/einj.asl index 2127989..fa04b80 100644 --- a/platforms/exynos5250-arndale.acpi/einj.asl +++ b/platforms/exynos5250-arndale.acpi/einj.asl @@ -20,7 +20,7 @@ [0004] Injection Header Length : 00000030 [0001] Flags : 00 [0003] Reserved : 000000 -[0004] Injection Entry Count : 0000000A +[0004] Injection Entry Count : 00000008
[0001] Action : 00 [Begin Operation] [0001] Instruction : 00 [Read Register] diff --git a/platforms/exynos5250-arndale.acpi/hest.asl b/platforms/exynos5250-arndale.acpi/hest.asl index 89ff46f..cd1cca9 100644 --- a/platforms/exynos5250-arndale.acpi/hest.asl +++ b/platforms/exynos5250-arndale.acpi/hest.asl @@ -17,122 +17,7 @@ [0004] Asl Compiler ID : "INTL" [0004] Asl Compiler Revision : 20100528
-[0004] Error Source Count : 00000004 - -[0002] Subtable Type : 0000 [IA-32 Machine Check Exception] -[0002] Source Id : 0000 -[0002] Reserved1 : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0008] Global Capability Data : 0000000000000000 -[0008] Global Control Data : 0000000000000000 -[0001] Num Hardware Banks : 02 -[0007] Reserved2 : 00000000000000 - -[0001] Bank Number : 00 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0001] Bank Number : 01 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0002] Subtable Type : 0001 [IA-32 Corrected Machine Check] -[0002] Source Id : 0001 -[0002] Reserved1 : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 - -[0028] Notify : [Hardware Error Notification Structure] -[0001] Notify Type : 00 [Polled] -[0001] Notify Length : 00 -[0002] Configuration Write Enable : 0000 -[0004] PollInterval : 00000000 -[0004] Vector : 00000000 -[0004] Polling Threshold Value : 00000000 -[0004] Polling Threshold Window : 00000000 -[0004] Error Threshold Value : 00000000 -[0004] Error Threshold Window : 00000000 - -[0001] Num Hardware Banks : 02 -[0003] Reserved2 : 000000 - -[0001] Bank Number : 00 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0001] Bank Number : 01 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0002] Subtable Type : 0007 [PCI Express AER (AER Endpoint)] -[0002] Source Id : 0000 -[0002] Reserved : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Bus : 00000000 -[0002] Device : 0000 -[0002] Function : 0000 -[0002] DeviceControl : 0000 -[0002] Reserved : 0000 -[0004] Uncorrectable Mask : 00000000 -[0004] Uncorrectable Severity : 00000000 -[0004] Correctable Mask : 00000000 -[0004] Advanced Capabilities : 00000000 - -[0002] Subtable Type : 0008 [PCI Express/PCI-X Bridge AER] -[0002] Source Id : 0000 -[0002] Reserved : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Bus : 00000000 -[0002] Device : 0000 -[0002] Function : 0000 -[0002] DeviceControl : 0000 -[0002] Reserved : 0000 -[0004] Uncorrectable Mask : 00000000 -[0004] Uncorrectable Severity : 00000000 -[0004] Correctable Mask : 00000000 -[0004] Advanced Capabilities : 00000000 -[0004] 2nd Uncorrectable Mask : 00000000 -[0004] 2nd Uncorrectable Severity : 00000000 -[0004] 2nd Advanced Capabilities : 00000000 +[0004] Error Source Count : 00000001
[0002] Subtable Type : 0009 [Generic Hardware Error Source] [0002] Source Id : 0002 @@ -162,32 +47,3 @@ [0004] Error Threshold Window : 00000000
[0004] Error Status Block Length : 00001000 - -[0002] Subtable Type : 0009 [Generic Hardware Error Source] -[0002] Source Id : 0003 -[0002] Related Source Id : 0000 -[0001] Reserved : 00 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Max Raw Data Length : 00001000 - -[0012] Error Status Address : [Generic Address Structure] -[0001] Space ID : 00 [SystemMemory] -[0001] Bit Width : 40 -[0001] Bit Offset : 00 -[0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 - -[0028] Notify : [Hardware Error Notification Structure] -[0001] Notify Type : 04 [NMI] -[0001] Notify Length : 1C -[0002] Configuration Write Enable : 0000 -[0004] PollInterval : 00000000 -[0004] Vector : 00000000 -[0004] Polling Threshold Value : 00000000 -[0004] Polling Threshold Window : 00000000 -[0004] Error Threshold Value : 00000000 -[0004] Error Threshold Window : 00000000 - -[0004] Error Status Block Length : 00001000 diff --git a/platforms/foundation-v8.acpi/einj.asl b/platforms/foundation-v8.acpi/einj.asl index 449aea1..33930c6 100644 --- a/platforms/foundation-v8.acpi/einj.asl +++ b/platforms/foundation-v8.acpi/einj.asl @@ -20,7 +20,7 @@ [0004] Injection Header Length : 00000030 [0001] Flags : 00 [0003] Reserved : 000000 -[0004] Injection Entry Count : 0000000A +[0004] Injection Entry Count : 00000008
[0001] Action : 00 [Begin Operation] [0001] Instruction : 00 [Read Register] diff --git a/platforms/foundation-v8.acpi/hest.asl b/platforms/foundation-v8.acpi/hest.asl index 7cb3adb..ea14fa6 100644 --- a/platforms/foundation-v8.acpi/hest.asl +++ b/platforms/foundation-v8.acpi/hest.asl @@ -17,122 +17,7 @@ [0004] Asl Compiler ID : "INTL" [0004] Asl Compiler Revision : 20100528
-[0004] Error Source Count : 00000004 - -[0002] Subtable Type : 0000 [IA-32 Machine Check Exception] -[0002] Source Id : 0000 -[0002] Reserved1 : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0008] Global Capability Data : 0000000000000000 -[0008] Global Control Data : 0000000000000000 -[0001] Num Hardware Banks : 02 -[0007] Reserved2 : 00000000000000 - -[0001] Bank Number : 00 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0001] Bank Number : 01 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0002] Subtable Type : 0001 [IA-32 Corrected Machine Check] -[0002] Source Id : 0001 -[0002] Reserved1 : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 - -[0028] Notify : [Hardware Error Notification Structure] -[0001] Notify Type : 00 [Polled] -[0001] Notify Length : 00 -[0002] Configuration Write Enable : 0000 -[0004] PollInterval : 00000000 -[0004] Vector : 00000000 -[0004] Polling Threshold Value : 00000000 -[0004] Polling Threshold Window : 00000000 -[0004] Error Threshold Value : 00000000 -[0004] Error Threshold Window : 00000000 - -[0001] Num Hardware Banks : 02 -[0003] Reserved2 : 000000 - -[0001] Bank Number : 00 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0001] Bank Number : 01 -[0001] Clear Status On Init : 00 -[0001] Status Format : 00 -[0001] Reserved : 00 -[0004] Control Register : 00000000 -[0008] Control Data : 0000000000000000 -[0004] Status Register : 00000000 -[0004] Address Register : 00000000 -[0004] Misc Register : 00000000 - -[0002] Subtable Type : 0007 [PCI Express AER (AER Endpoint)] -[0002] Source Id : 0000 -[0002] Reserved : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Bus : 00000000 -[0002] Device : 0000 -[0002] Function : 0000 -[0002] DeviceControl : 0000 -[0002] Reserved : 0000 -[0004] Uncorrectable Mask : 00000000 -[0004] Uncorrectable Severity : 00000000 -[0004] Correctable Mask : 00000000 -[0004] Advanced Capabilities : 00000000 - -[0002] Subtable Type : 0008 [PCI Express/PCI-X Bridge AER] -[0002] Source Id : 0000 -[0002] Reserved : 0000 -[0001] Flags (decoded below) : 00 - Firmware First : 0 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Bus : 00000000 -[0002] Device : 0000 -[0002] Function : 0000 -[0002] DeviceControl : 0000 -[0002] Reserved : 0000 -[0004] Uncorrectable Mask : 00000000 -[0004] Uncorrectable Severity : 00000000 -[0004] Correctable Mask : 00000000 -[0004] Advanced Capabilities : 00000000 -[0004] 2nd Uncorrectable Mask : 00000000 -[0004] 2nd Uncorrectable Severity : 00000000 -[0004] 2nd Advanced Capabilities : 00000000 +[0004] Error Source Count : 00000001
[0002] Subtable Type : 0009 [Generic Hardware Error Source] [0002] Source Id : 0002 @@ -162,32 +47,3 @@ [0004] Error Threshold Window : 00000000
[0004] Error Status Block Length : 00001000 - -[0002] Subtable Type : 0009 [Generic Hardware Error Source] -[0002] Source Id : 0003 -[0002] Related Source Id : 0000 -[0001] Reserved : 00 -[0001] Enabled : 01 -[0004] Records To Preallocate : 00000001 -[0004] Max Sections Per Record : 00000001 -[0004] Max Raw Data Length : 00001000 - -[0012] Error Status Address : [Generic Address Structure] -[0001] Space ID : 00 [SystemMemory] -[0001] Bit Width : 40 -[0001] Bit Offset : 00 -[0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 - -[0028] Notify : [Hardware Error Notification Structure] -[0001] Notify Type : 04 [NMI] -[0001] Notify Length : 1C -[0002] Configuration Write Enable : 0000 -[0004] PollInterval : 00000000 -[0004] Vector : 00000000 -[0004] Polling Threshold Value : 00000000 -[0004] Polling Threshold Window : 00000000 -[0004] Error Threshold Value : 00000000 -[0004] Error Threshold Window : 00000000 - -[0004] Error Status Block Length : 00001000
--- platforms/exynos5250-arndale.acpi/bert.asl | 4 ++-- platforms/foundation-v8.acpi/bert.asl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/platforms/exynos5250-arndale.acpi/bert.asl b/platforms/exynos5250-arndale.acpi/bert.asl index 94024bb..27ba20c 100644 --- a/platforms/exynos5250-arndale.acpi/bert.asl +++ b/platforms/exynos5250-arndale.acpi/bert.asl @@ -17,5 +17,5 @@ [0004] Asl Compiler ID : "INTL" [0004] Asl Compiler Revision : 20100528
-[0004] Boot Error Region Length : 00000000 -[0008] Boot Error Region Address : 0000000000000000 +[0004] Boot Error Region Length : 0x9D +[0008] Boot Error Region Address : 0x43000008 diff --git a/platforms/foundation-v8.acpi/bert.asl b/platforms/foundation-v8.acpi/bert.asl index 16e34f0..d053f44 100644 --- a/platforms/foundation-v8.acpi/bert.asl +++ b/platforms/foundation-v8.acpi/bert.asl @@ -17,5 +17,5 @@ [0004] Asl Compiler ID : "INTL" [0004] Asl Compiler Revision : 20100528
-[0004] Boot Error Region Length : 00000000 -[0008] Boot Error Region Address : 0000000000000000 +[0004] Boot Error Region Length : 0x9D +[0008] Boot Error Region Address : 0xFFFF0008
--- platforms/exynos5250-arndale.acpi/erst.asl | 34 ++++++++++++++-------------- platforms/foundation-v8.acpi/erst.asl | 34 ++++++++++++++-------------- 2 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/platforms/exynos5250-arndale.acpi/erst.asl b/platforms/exynos5250-arndale.acpi/erst.asl index ad1d3b9..9d19da3 100644 --- a/platforms/exynos5250-arndale.acpi/erst.asl +++ b/platforms/exynos5250-arndale.acpi/erst.asl @@ -32,7 +32,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000100
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -48,7 +48,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000108
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -64,7 +64,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000110
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -80,7 +80,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000118
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -96,7 +96,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000120
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -108,11 +108,11 @@ [0001] Reserved : 00
[0012] Register Region : [Generic Address Structure] -[0001] Space ID : 01 [SystemIO] +[0001] Space ID : 00 [SystemMemory] [0001] Bit Width : 08 [0001] Bit Offset : 00 [0001] Encoded Access Width : 01 [Byte Access:8] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000128
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -128,7 +128,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000130
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -144,7 +144,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000138
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -160,7 +160,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000140
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -176,7 +176,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000148
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -192,7 +192,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000150
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -208,7 +208,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000158
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -224,7 +224,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000160
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -240,7 +240,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000168
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -256,7 +256,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000170
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -272,7 +272,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x43000178
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF diff --git a/platforms/foundation-v8.acpi/erst.asl b/platforms/foundation-v8.acpi/erst.asl index af1c941..87cbc34 100644 --- a/platforms/foundation-v8.acpi/erst.asl +++ b/platforms/foundation-v8.acpi/erst.asl @@ -32,7 +32,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0100
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -48,7 +48,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0108
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -64,7 +64,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0110
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -80,7 +80,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0118
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -96,7 +96,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0120
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -108,11 +108,11 @@ [0001] Reserved : 00
[0012] Register Region : [Generic Address Structure] -[0001] Space ID : 01 [SystemIO] +[0001] Space ID : 00 [SystemMemory] [0001] Bit Width : 08 [0001] Bit Offset : 00 [0001] Encoded Access Width : 01 [Byte Access:8] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0128
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -128,7 +128,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0130
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -144,7 +144,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0138
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -160,7 +160,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0140
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -176,7 +176,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0148
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -192,7 +192,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0150
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -208,7 +208,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0158
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -224,7 +224,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0160
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -240,7 +240,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0168
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -256,7 +256,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0170
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF @@ -272,7 +272,7 @@ [0001] Bit Width : 40 [0001] Bit Offset : 00 [0001] Encoded Access Width : 04 [QWord Access:64] -[0008] Address : 0000000000000000 +[0008] Address : 0x0xFFFF0178
[0008] Value : 0000000000000000 [0008] Mask : FFFFFFFFFFFFFFFF
On 09/06/2013 08:31 AM, Tomasz Nowicki wrote:
Values set within all APEI tables have no hardware meaning and are valid combining with kernel hacks. These changes allow only to confirm that APEI tables (HEST, ERST, BERT) are supported by kernel and no issues were observed on arm/arm64 architectures.
Tomasz Nowicki (6): acpi, apei, ghes: Enable APEI firmware first mode by APEI bit. acpi, apei, hed: Add Hardware Error Device (HED) to SB bus. acpi, apei, einj: Fill ACPI tables to enable EINJ driver. acpi, apei: Fix EINJ and HEST tables. acpi, apei, bert: Point to the same error block status memory region as HEST points. acpi, apei, erst: Point to region where we can pretend registers, persistent sotrage.
platforms/exynos5250-arndale.acpi/bert.asl | 4 +- platforms/exynos5250-arndale.acpi/dsdt.asl | 27 +++++ platforms/exynos5250-arndale.acpi/einj.asl | 2 +- platforms/exynos5250-arndale.acpi/erst.asl | 34 +++---- platforms/exynos5250-arndale.acpi/hest.asl | 148 +--------------------------- platforms/foundation-v8.acpi/bert.asl | 4 +- platforms/foundation-v8.acpi/dsdt.asl | 27 +++++ platforms/foundation-v8.acpi/einj.asl | 2 +- platforms/foundation-v8.acpi/erst.asl | 34 +++---- platforms/foundation-v8.acpi/hest.asl | 148 +--------------------------- 10 files changed, 98 insertions(+), 332 deletions(-)
One comment only: in the future, would you mind checking each of these tables and incrementing the OEM Revision number as you make changes? It is not really essential, but it may help in hunting things down in the future. To be fair, I haven't been consistent with this either but I am trying to be.
Otherwise, nicely done.
Acked-by: Al Stone al.stone@linaro.org
W dniu 06.09.2013 17:47, Al Stone pisze:
On 09/06/2013 08:31 AM, Tomasz Nowicki wrote:
Values set within all APEI tables have no hardware meaning and are valid combining with kernel hacks. These changes allow only to confirm that APEI tables (HEST, ERST, BERT) are supported by kernel and no issues were observed on arm/arm64 architectures.
Tomasz Nowicki (6): acpi, apei, ghes: Enable APEI firmware first mode by APEI bit. acpi, apei, hed: Add Hardware Error Device (HED) to SB bus. acpi, apei, einj: Fill ACPI tables to enable EINJ driver. acpi, apei: Fix EINJ and HEST tables. acpi, apei, bert: Point to the same error block status memory region as HEST points. acpi, apei, erst: Point to region where we can pretend registers, persistent sotrage.
platforms/exynos5250-arndale.acpi/bert.asl | 4 +- platforms/exynos5250-arndale.acpi/dsdt.asl | 27 +++++ platforms/exynos5250-arndale.acpi/einj.asl | 2 +- platforms/exynos5250-arndale.acpi/erst.asl | 34 +++---- platforms/exynos5250-arndale.acpi/hest.asl | 148 +--------------------------- platforms/foundation-v8.acpi/bert.asl | 4 +- platforms/foundation-v8.acpi/dsdt.asl | 27 +++++ platforms/foundation-v8.acpi/einj.asl | 2 +- platforms/foundation-v8.acpi/erst.asl | 34 +++---- platforms/foundation-v8.acpi/hest.asl | 148 +--------------------------- 10 files changed, 98 insertions(+), 332 deletions(-)
One comment only: in the future, would you mind checking each of these tables and incrementing the OEM Revision number as you make changes? It is not really essential, but it may help in hunting things down in the future. To be fair, I haven't been consistent with this either but I am trying to be.
Thanks Al for reviewing this! Good point, will try to update rev. each time.
Tomasz