Decode ARM CPER records in kernel
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
dann frazier | ||
Bionic |
Fix Released
|
Undecided
|
dann frazier |
Bug Description
[Impact]
When an ARM-specific platform error (CPER) comes occurs, the kernel will emit an error with an opaque hex error type. The user would then need to consult the UEFI specification to decode it. It is far easier for the kernel to do the decoding itself, and just tell the user what the problem is.
[Test Case]
On a server that supports EINJ, generate a fake CE (thanks to Tyler Baicar for this example):
modprobe einj
echo 0x12345000 > /sys/kernel/
echo $((-1 << 12)) > /sys/kernel/
echo 5 > /sys/kernel/
echo 0x3 > /sys/kernel/
echo 0x1 > /sys/kernel/
echo 1 > /sys/kernel/
In the output, look for a decoded message. Without this fix, you'll see:
[ 388.094304] {2}[Hardware Error]: error_info: 0x0000000004c6007f
[ 388.094341] {2}[Hardware Error]: physical fault address: 0x0000000012345000
But with the fix, you'll see:
[ 388.094304] {2}[Hardware Error]: error_info: 0x0000000004c6007f
[ 388.094317] {2}[Hardware Error]: transaction type: Generic
[ 388.094322] {2}[Hardware Error]: operation type: Generic read (type of instruction or data request cannot be determined)
[ 388.094326] {2}[Hardware Error]: cache level: 3
[ 388.094330] {2}[Hardware Error]: processor context not corrupted
[ 388.094333] {2}[Hardware Error]: the error has been corrected
[ 388.094337] {2}[Hardware Error]: PC is imprecise
[ 388.094341] {2}[Hardware Error]: physical fault address: 0x0000000012345000
[Fix]
These upstream fixes add ARM decoding support:
c6d8c8ef1d0d94f
301f55b1a917713
[Regression Risk]
The code changed is specific to ARM, and has been tested there. There's a small change to arch-independent code, but it just involves renaming an array and adding the obviously correct const attribute.
CVE References
Changed in linux (Ubuntu Bionic): | |
assignee: | nobody → dann frazier (dannf) |
Changed in linux (Ubuntu): | |
assignee: | nobody → dann frazier (dannf) |
description: | updated |
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in linux (Ubuntu Bionic): | |
status: | Incomplete → Confirmed |
description: | updated |
Changed in linux (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in linux (Ubuntu Bionic): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
Changed in linux (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1770244
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.