Hi,
I am able to see APEI events (memory errors) via perft tool and now
switch my context to others types of error. According to our plan, cache
ECC error type would be next.
I want to place tracepoints at the end of every available APEI error
processing path (actually it is already done for memory errors). This
way we RAS daemon could keep its eye on them. There would be of course
more type of error coming from others ARM SoC peripherals.
GHES driver is unrolling data structure to "Common Platform Error
Record" and try to obtain error section (defined in UEFI spec). Cache
ECC fall within "Processor Error Sections". Here appear problems since
most of "Common Platform Error Records" are x86/IA64 oriented.
So my proposals would be to:
1. Implement all available APEI errors as tracepoint that is: Processor
and PCI errors
2. Mean time, create proposals for UEFI spec. toward "Common Platform
Error Record" expansion for ARM architecture. This would require
changing available structures and add new sections for SoC peripherals
(USB, Ethernet etc.).
3. In turn, new sections for SoC peripherals in UEFI spec. would require
ACPI spec. change as well, I mean new error sources for HEST table.
4. Once above proposals would be accept, we could fill in tracepoints
for new error types.
I would appreciate any input on this.
Regards,
Tomasz
hi,
The patches in the series are work in progress and as discussed with Al Stone
and Hanjun include changes in the GTDT acpi table to add missing elements for ARM
platforms. Elements added are Timer frequency, interrupt count(currently 8 supported),
timer ID(This will be used to invoke the correct controller).
Still more TODO's are identified.
* To add timer clock names.
* if this __init invoking mechanism is finalised then other similar devices can
use this like clock, GIC etc.
* GTDT can ultimately be made CTDT(Common timer descriptor table) to other classes of
timers like external exynos MCT.
Changes in V2:
* Added new fields in GTDT acpi table.
* Infrastructure to invoke the correct timer controller.
Thanks in advance.
Amit
Amit Daniel Kachhap (6):
irqdomain: Add a new API irq_create_default_mapping
ACPI: ARM: Update acpi_register_gsi to register with the core IRQ
subsystem
irqchip: gic: Fix to make dt node check optional in case of ACPI
acpi: gtdt: Update GTDT tables to add more fields
clocksource:acpi: Add macro CLOCKSOURCE_ACPI_DECLARE
clocksource: arch_timer: acpi: Use GTDT table to gather data
drivers/acpi/plat/arm/boot.c | 27 +++++++-
drivers/clocksource/arm_arch_timer.c | 111 +++++++++++++++++++++++++++++-----
drivers/clocksource/clksrc-of.c | 32 ++++++++++
drivers/irqchip/irq-gic.c | 2 +
include/acpi/actbl3.h | 22 +++++++
include/asm-generic/vmlinux.lds.h | 6 ++
include/linux/clocksource.h | 13 ++++
include/linux/irqdomain.h | 2 +
kernel/irq/irqdomain.c | 35 +++++++++++
9 files changed, 232 insertions(+), 18 deletions(-)
'dev_id' in the comments of clk_register_clkdev should
be 'dev_fmt' here.
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
---
drivers/clk/clkdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index 442a313..825b52b 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -270,9 +270,9 @@ EXPORT_SYMBOL(clkdev_drop);
* clk_register_clkdev - register one clock lookup for a struct clk
* @clk: struct clk to associate with all clk_lookups
* @con_id: connection ID string on device
- * @dev_id: format string describing device name
+ * @dev_fmt: format string describing device name
*
- * con_id or dev_id may be NULL as a wildcard, just as in the rest of
+ * con_id or dev_fmt may be NULL as a wildcard, just as in the rest of
* clkdev.
*
* To make things easier for mass registration, we detect error clks
--
1.7.9.5
From: Naresh Bhat <naresh.bhat(a)linaro.org>
The patch set will add the DBG2 table, compilation support. I have just added only one sample SER0 device.
If DBG2 table fields, values looks ok. Then I will add 3 more devices (SER1 to SER3),
Since there are 4 UART devices in foundation-v8 model.
Signed-off-by: Naresh Bhat <naresh.bhat(a)linaro.org>
Naresh Bhat (2):
dbg2: Add dbg2 table
Add support to compile dbg2 table
platforms/foundation-v8.acpi/dbg2.asl | 47 ++++++++++++++++++++
.../foundation-v8.acpi/foundation-v8.manifest | 1 +
platforms/foundation-v8.acpi/xsdt.asl | 1 +
tools/common/build_aml.c | 1 +
tools/common/check_aml.c | 1 +
tools/common/include/check_aml.h | 1 +
6 files changed, 52 insertions(+)
create mode 100644 platforms/foundation-v8.acpi/dbg2.asl
--
1.7.9.5
EINJ table is fully implemented in kernel and no changes were needed
to bring it up on armv7/8 arch.
Along with work on EINJ coulpe of steps were done like:
1. Expand bfapei tool so it can create blob which pretend h/w registers
for EINJ driver.
2. Filling address in EINJ table according to those in blob.
3. Trigger error using existing injection kernel mechanism.
See commit for more details.
Changes for v2:
- add more descriptive commit log
Changes for v3:
- replace constant values with defines
Tomasz Nowicki (4):
bfapei: Move common functionality to separate function.
bfapei: Expand bfapei tool to EINJ table testing.
acpi, apei, einj: Fill in EINJ table according to address in EINJ
blobs.
acpi, apei, einj: Relace constant value with defines.
platforms/exynos5250-arndale.acpi/einj.asl | 20 +++---
platforms/foundation-v8.acpi/einj.asl | 20 +++---
platforms/rtsm_ve-aemv8a.acpi/einj.asl | 20 +++---
tools/bfapei/bfapei.c | 104 +++++++++++++++++++++++-----
tools/bfapei/bfapei.h | 30 ++++++--
tools/common/include/acpi.h | 77 ++++++++++++++++++++
6 files changed, 215 insertions(+), 56 deletions(-)
--
1.7.9.5
EINJ table is fully implemented in kernel and no changes were needed
to bring it up on armv7/8 arch.
Along with work on EINJ coulpe of steps were done like:
1. Expand bfapei tool so it can create blob which pretend h/w registers
for EINJ driver.
2. Filling address in EINJ table according to those in blob.
3. Trigger error using existing injection kernel mechanism.
See commit for more details.
Changes for v2:
- add more descriptive commit log
Tomasz Nowicki (3):
bfapei: Move common functionality to separate function.
bfapei: Expand bfapei tool to EINJ table testing.
acpi, apei, einj: Fill in EINJ table according to address in EINJ
blobs.
platforms/exynos5250-arndale.acpi/einj.asl | 20 +++---
platforms/foundation-v8.acpi/einj.asl | 20 +++---
platforms/rtsm_ve-aemv8a.acpi/einj.asl | 20 +++---
tools/bfapei/bfapei.c | 101 ++++++++++++++++++++++------
tools/bfapei/bfapei.h | 30 +++++++--
tools/common/include/acpi.h | 57 ++++++++++++++++
6 files changed, 192 insertions(+), 56 deletions(-)
--
1.7.9.5
-- Treść oryginalnej wiadomości --
Temat: Re: [Linaro-acpi] [PATCH 0/3] Hacks for APEI tables test.
Data: Thu, 10 Oct 2013 09:45:54 +0200
Nadawca: Tomasz Nowicki <tomasz.nowicki(a)linaro.org>
Adresat: Al Stone <al.stone(a)linaro.org>
W dniu 09.10.2013 22:33, Al Stone pisze:
> On 09/06/2013 08:07 AM, Tomasz Nowicki wrote:
>> These commits were created to make APEI tables testable. All should be
>> pushed
>> to some test brunch so anybody could test it on his own, reused etc.
>>
>> Tomasz Nowicki (3):
>> acpi, apei, erst: Reserve no cachable region for persistent storage.
>> acpi, apei, einj: Hack EINJ driver to enable injection GHES and
>> kernel panic from userspace.
>> apci, apei, arm64: Make some space for APEI blob.
>>
>> arch/arm64/boot/dts/foundation-v8-acpi.dts | 2 +-
>> drivers/acpi/apei/einj.c | 27
>> +++++++++++++++++++++++++++
>> drivers/acpi/apei/erst.c | 2 +-
>> 3 files changed, 29 insertions(+), 2 deletions(-)
>>
>
> So I think these patches are okay as they are. Are you
> working on this for UEFI, also? I'd like to see a separate
> patch enabling this to work for the UEFI case also as soon
> as we can.
1. Since we can trigger APEI errors using simulated SCI we do not need
second patch and only fist and third patch are on special branch right now.
2. This patch set should work for UEFI but I need to check how to load
APEI blob from UEFI. So yes this require additional invesitation or
eventual development. Thanks for input on this. I will add another card
for this.
Tomasz
From: Al Stone <ahs3(a)redhat.com>
The current version requires one to know the size of the package
a priori; this is almost impossible if the package is composed of
strings of variable length. This change allows the utility to
allocate a buffer of the proper size if asked.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
drivers/acpi/utils.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 552248b..fc2cd32 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -169,11 +169,20 @@ acpi_extract_package(union acpi_object *package,
/*
* Validate output buffer.
*/
- if (buffer->length < size_required) {
+ if (buffer->length == ACPI_ALLOCATE_BUFFER) {
+ buffer->pointer = ACPI_ALLOCATE(size_required);
+ if (!buffer->pointer)
+ return AE_NO_MEMORY;
buffer->length = size_required;
- return AE_BUFFER_OVERFLOW;
- } else if (buffer->length != size_required || !buffer->pointer) {
- return AE_BAD_PARAMETER;
+ memset(buffer->pointer, 0, size_required);
+ } else {
+ if (buffer->length < size_required) {
+ buffer->length = size_required;
+ return AE_BUFFER_OVERFLOW;
+ } else if (buffer->length != size_required ||
+ !buffer->pointer) {
+ return AE_BAD_PARAMETER;
+ }
}
head = buffer->pointer;
--
1.8.3.1