efi: cper: Add support for printing Firmware Error Record Reference
authorPunit Agrawal <punit1.agrawal@toshiba.co.jp>
Tue, 12 May 2020 04:55:02 +0000 (13:55 +0900)
committerArd Biesheuvel <ardb@kernel.org>
Thu, 14 May 2020 09:11:20 +0000 (11:11 +0200)
commit3d8c11efd528d56972d44ed0de51c4e11a9a4fa9
tree7f5053e726d434f9fe33263b14afd0eed9d1053a
parentfd62619598069c974739476d1851a00d665041d7
efi: cper: Add support for printing Firmware Error Record Reference

While debugging a boot failure, the following unknown error record was
seen in the boot logs.

    <...>
    BERT: Error records from previous boot:
    [Hardware Error]: event severity: fatal
    [Hardware Error]:  Error 0, type: fatal
    [Hardware Error]:   section type: unknown, 81212a96-09ed-4996-9471-8d729c8e69ed
    [Hardware Error]:   section length: 0x290
    [Hardware Error]:   0000000000000001 00000000 00000000 00020002  ................
    [Hardware Error]:   0000001000020002 0000001f 00000320 00000000  ........ .......
    [Hardware Error]:   0000002000000000 00000000 00000000 00000000  ................
    [Hardware Error]:   0000003000000000 00000000 00000000 00000000  ................
    <...>

On further investigation, it was found that the error record with
UUID (81212a96-09ed-4996-9471-8d729c8e69ed) has been defined in the
UEFI Specification at least since v2.4 and has recently had additional
fields defined in v2.7 Section N.2.10 Firmware Error Record Reference.

Add support for parsing and printing the defined fields to give users
a chance to figure out what went wrong.

Signed-off-by: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: James Morse <james.morse@arm.com>
Cc: linux-acpi@vger.kernel.org
Cc: linux-efi@vger.kernel.org
Link: https://lore.kernel.org/r/20200512045502.3810339-1-punit1.agrawal@toshiba.co.jp
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/cper.c
include/linux/cper.h