On Tue Aug 4, 2026 at 8:23 PM CST, Kai-Heng Feng wrote: > The NVIDIA GHES driver currently decodes the vendor CPER section used by > Grace systems. Vera uses a different section GUID and event layout. > > Refactor the Grace path into testable decode and print helpers, add the Vera > event decoder, and cover both formats with KUnit. The Vera parser follows > the extensible CPU information and event-context wire contracts: it accepts > new minor versions and extended information headers, validates every one of > the wire format's 0 to 255 contexts without allocation, and retains a valid > prefix when a later context is malformed. > > Printing walks the validated raw context span a second time. It limits > verbose output to 16 contexts and 32 key/value entries per section while > still validating the complete record. Existing one-context output remains > unchanged. > > The companion ras-tools series adds a fail-closed NVIDIA EINJ validator for > the non-fatal Grace CMET-INFO and Vera CMET-NULL samples. > > Changes since v2: > - Move EINJ tooling out of the kernel series and into ras-tools. > - Follow the Vera CtxSize padding and alignment contract while retaining > the legacy opaque-context encoding. > - Accept compatible CPU information extensions and validate the complete > 8-bit context count with an allocation-free cursor. > - Bound verbose context and entry output independently, while reporting > omitted contexts and entries. > - Add wire-layout assertions, partial-context handling, severity-aware > diagnostics, and 52 Grace/Vera KUnit cases. > > Verification: > - x86_64 KUnit: 52/52 passed. > - ARM64 KASAN+UBSAN KUnit under QEMU/HVF: 52/52 passed. > - ARM64 GCC and Clang, built-in and module configurations, W=1: passed. > - ARM64 GCC full Image link: passed. > - ARM64 sparse C=2 with __CHECK_ENDIAN__: passed (one unrelated existing > arm64 vDSO declaration warning). > - Strict source checkpatch and git diff --check: passed. > - The raw live sections were decoded independently by libcper at commit > b83878a4aca9: Vera as an 80-byte CPU CMET-NULL event with one empty > type-1 context, and Grace as a 544-byte CMET-INFO section with 32 > registers. > - Vera live EINJ: a real 80-byte CMET-NULL CPER from GHES source 8193, > event type/subtype 0, one 16-byte context, and zero entries (not the > firmware-rejection record seen with the old selector). > - Grace live EINJ: a real 544-byte CMET-INFO CPER from GHES source 896, > severity 3, with all 32 register addresses decoded in order. > - Both live runs reached the runner's PASS gate with empty tool stderr, > captured the raw tracepoint record, and restored every EINJ control > byte-for-byte. > > Kai-Heng Feng (3): > ACPI: APEI: GHES: Refactor Grace decoder helpers > ACPI: APEI: GHES: Add NVIDIA Vera decoder > ACPI: APEI: GHES: Add Grace and Vera KUnit coverage
A gentle ping on this series... Thanks, Kai-Heng > > MAINTAINERS | 2 +- > drivers/acpi/apei/Kconfig | 24 +- > drivers/acpi/apei/Makefile | 1 + > drivers/acpi/apei/ghes-nvidia-test-fixtures.h | 233 +++ > drivers/acpi/apei/ghes-nvidia-test.c | 1274 +++++++++++++++++ > drivers/acpi/apei/ghes-nvidia.c | 767 +++++++++- > drivers/acpi/apei/ghes-nvidia.h | 109 ++ > 7 files changed, 2364 insertions(+), 46 deletions(-) > create mode 100644 drivers/acpi/apei/ghes-nvidia-test-fixtures.h > create mode 100644 drivers/acpi/apei/ghes-nvidia-test.c > create mode 100644 drivers/acpi/apei/ghes-nvidia.h > > > base-commit: 848acc8ffe1b7cd5f1bf427b93069becfebc2c9d

