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
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(-)
--
1.7.9.5
This is re-use existing patch submitted by Huang Ying <ying.huang(a)intel.com>
with one small modification (see commits). The first idea was to use just
printk to inform about any errors that were not consumed by OS.
Errors listed in HEST table should point to the same "Error status block" ESB
structures as BERT does. OS handling errors should clear errors status bit
in ESB for given error at the end of error recovery procedure. Case where error
appeared to be too serious OS can reset machine immediately without clearing
bit in ESB. During boot, kernel examine each error status bit from ESB list
(pointed from BERT) and see if there are any unhandled errors.
BERT table was tested along with HEST and EINJ driver, in the following way:
1. Fill in ESB using EINJ hacked driver and do not clear erros status in ESB,
this way unhandler error is simulated and BERT table could be used later:
root@localhost:~# echo 1 > /sys/kernel/debug/apei/einj/error_inject
2. Reboot machin and check whether BERT driver notice injected error:
...
[ 2.518179] [Hardware Error]: Error record from previous boot:
[ 2.523342] [Hardware Error]: APEI generic hardware error status
[ 2.548457] [Hardware Error]: severity: 1, fatal
[ 2.574705] [Hardware Error]: section: 0, severity: 0, recoverable
[ 2.584010] [Hardware Error]: flags: 0x00
[ 2.587937] [Hardware Error]: section_type: memory error
...
3. Kernel clear status bit so next boot would not print it again.
This is a cleaned up version of patches posted earlier by Al Stone.
I have split them into patches with attempt to make only one change
per patch.
Graeme
From: Al Stone <ahs3(a)redhat.com>
This patch adds a stub function for arch_fix_phys_package_id() for
those kernel configurations that need it.
Found while trying to build a VExpress configuration.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
arch/arm/include/asm/topology.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
index a6ff5cc..70d9c47 100644
--- a/arch/arm/include/asm/topology.h
+++ b/arch/arm/include/asm/topology.h
@@ -66,6 +66,7 @@ static inline void init_cpu_topology(void) { }
static inline void store_cpu_topology(unsigned int cpuid) { }
static inline int cluster_to_logical_mask(unsigned int socket_id,
cpumask_t *cluster_mask) { return -EINVAL; }
+static inline void arch_fix_phys_package_id(int num, u32 slot) { };
#endif
--
1.8.3.1
Lots of device drivers especially for platform/I2C/SPI bus devices,
they want to be initialized earlier than other devices, so the driver
use initcall such as subsys_initcall for the device initialization.
But for those drivers, lots of them just do nothing special in
xxx_initcall/module_exit, and produce lots of boilerplate.
This patch set introduces a helper macro initcall_driver() to
eliminate lots of boilerplate just like module_driver() did, and use
it for platform/I2C/SPI bus devices.
I use following command under the lastest kernel source code:
$grep -r -E "*_initcall" drivers/ | cut -d":" -f1 |xargs grep -E
"return platform_driver_register|return i2c_add_driver|return spi_register_driver"
| cut -d":" -f1 | xargs grep "module_exit" | wc -l
and get 205 hits, so if we use helper macro initcall_driver(),
we can reduce thousands lines of code.
Hanjun Guo (4):
driver core: introduce helper macro initcall_driver()
platform device: introduce helper macro initcall_platform_driver()
i2c: introduce helper macro initcall_i2c_driver()
spi: introduce helper macro initcall_spi_driver()
include/linux/device.h | 27 +++++++++++++++++++++++++++
include/linux/i2c.h | 11 +++++++++++
include/linux/platform_device.h | 11 +++++++++++
include/linux/spi/spi.h | 11 +++++++++++
4 files changed, 60 insertions(+)
--
1.7.9.5
hi,
The patches in the series are just in work in progress and intended to clear
some doubts as pointed below. Any comment/direction is helpful from the linaro
acpi group.
1) Basic controllers like GIC and timer need to be initialised before platform drivers
are ready so question is how to invoke the __init of these devices. Is there any function
to raw parse the ACPI tables similar to existing DT API's?
2) Some important elements like clock frequency is missing from the GTDT table.
how to get them?
Thanks in advance.
Amit Daniel Kachhap (3):
irqdomain: Add a new API irq_create_default_mapping
ACPI: ARM: Update acpi_register_gsi to register with the core IRQ
subsystem
ACPI: clocksource: arch_timer: Use GTDT table to gather data
drivers/acpi/plat/arm/boot.c | 27 ++++++++++++++--
drivers/clocksource/arm_arch_timer.c | 58 ++++++++++++++++++++++++++++++++++
include/linux/irqdomain.h | 2 +
kernel/irq/irqdomain.c | 35 ++++++++++++++++++++
4 files changed, 119 insertions(+), 3 deletions(-)
This patch set just did one simple thing: convert to module_platform_driver()
in video driver to simplify the code.
Hanjun Guo (10):
Video / hecubafb: Use module_platform_driver() to simplify code
Video / bfin-t350mcqb-fb: Use module_platform_driver() to simplify
code
Video / metronomefb: Use module_platform_driver() to simplify code
Video / jz4740_fb: Use module_platform_driver() to simplify code
Video / da8xx-fb: Use module_platform_driver() to simplify code
Video / cobalt_lcdfb: Use module_platform_driver() to simplify code
Video / broadsheetfb: Use module_platform_driver() to simplify code
Video / bf54x-lq043fb: Use module_platform_driver() to simplify code
Video / au1200fb: Use module_platform_driver() to simplify code
Video / au1100fb: Use module_platform_driver() to simplify code
drivers/video/au1100fb.c | 14 +-------------
drivers/video/au1200fb.c | 16 +---------------
drivers/video/bf54x-lq043fb.c | 14 +-------------
drivers/video/bfin-t350mcqb-fb.c | 14 +-------------
drivers/video/broadsheetfb.c | 14 +-------------
drivers/video/cobalt_lcdfb.c | 14 +-------------
drivers/video/da8xx-fb.c | 14 +-------------
drivers/video/hecubafb.c | 14 +-------------
drivers/video/jz4740_fb.c | 13 +------------
drivers/video/metronomefb.c | 14 +-------------
10 files changed, 10 insertions(+), 131 deletions(-)
--
1.7.9.5