Mauro Carvalho Chehab <mchehab+hua...@kernel.org> writes: > Creates a QMP command to be used for generic ACPI APEI hardware error > injection (HEST) via GHESv2. > > The actual GHES code will be added at the followup patch. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org> > --- > MAINTAINERS | 7 +++++ > hw/acpi/Kconfig | 5 ++++ > hw/acpi/ghes_cper.c | 45 ++++++++++++++++++++++++++++++++ > hw/acpi/ghes_cper_stub.c | 18 +++++++++++++ > hw/acpi/meson.build | 2 ++ > hw/arm/Kconfig | 5 ++++ > include/hw/acpi/ghes.h | 7 +++++ > qapi/ghes-cper.json | 55 ++++++++++++++++++++++++++++++++++++++++ > qapi/meson.build | 1 + > qapi/qapi-schema.json | 1 + > 10 files changed, 146 insertions(+) > create mode 100644 hw/acpi/ghes_cper.c > create mode 100644 hw/acpi/ghes_cper_stub.c > create mode 100644 qapi/ghes-cper.json > > diff --git a/MAINTAINERS b/MAINTAINERS > index 98eddf7ae155..655edcb6688c 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -2075,6 +2075,13 @@ F: hw/acpi/ghes.c > F: include/hw/acpi/ghes.h > F: docs/specs/acpi_hest_ghes.rst > > +ACPI/HEST/GHES/ARM processor CPER > +R: Mauro Carvalho Chehab <mchehab+hua...@kernel.org> > +S: Maintained > +F: hw/arm/ghes_cper.c > +F: hw/acpi/ghes_cper_stub.c > +F: qapi/ghes-cper.json > +
Here's the reason for creating a new QAPI module instead of adding to existing module acpi.json: different maintainers. Hypothetical question: if we didn't care for that, would this go into qapi/acpi.json? If yes, then should we call it acpi-ghes-cper.json or acpi-ghes.json instead? > ppc4xx > L: qemu-...@nongnu.org > S: Orphan [...] > diff --git a/qapi/ghes-cper.json b/qapi/ghes-cper.json > new file mode 100644 > index 000000000000..3cc4f9f2aaa9 > --- /dev/null > +++ b/qapi/ghes-cper.json > @@ -0,0 +1,55 @@ > +# -*- Mode: Python -*- > +# vim: filetype=python > + > +## > +# = GHESv2 CPER Error Injection > +# > +# These are defined at > +# ACPI 6.2: 18.3.2.8 Generic Hardware Error Source version 2 > +# (GHESv2 - Type 10) > +## Feels a bit terse. These what? The reference could be clearer: "defined in the ACPI Specification 6.2, section 18.3.2.8 Generic Hardware Error Source version 2". A link would be nice, if it's stable. > + > +## > +# @CommonPlatformErrorRecord: > +# > +# Common Platform Error Record - CPER - as defined at the UEFI > +# specification. See > +# > https://uefi.org/specs/UEFI/2.10/Apx_N_Common_Platform_Error_Record.html#record-header > +# for more details. > +# > +# @notification-type: pre-assigned GUID string indicating the record > +# association with an error event notification type, as defined > +# at > https://uefi.org/specs/UEFI/2.10/Apx_N_Common_Platform_Error_Record.html#record-header Please indent four spaces for consistency, like this: # @notification-type: pre-assigned GUID string indicating the record # association with an error event notification type, as defined at # https://uefi.org/specs/UEFI/2.10/Apx_N_Common_Platform_Error_Record.html#record-header > +# > +# @raw-data: Contains a base64 encoded string with the payload of > +# the CPER. Suggest # @raw-data: payload of the CPER encoded in base64 Have you considered naming this @payload instead? > +# > +# Since: 9.2 > +## > +{ 'struct': 'CommonPlatformErrorRecord', > + 'data': { > + 'notification-type': 'str', > + 'raw-data': 'str' > + } > +} > + > +## > +# @ghes-cper: > +# > +# Inject ARM Processor error with data to be filled according with > +# ACPI 6.2 GHESv2 spec. according to (Beware, I'm not a native speaker) > +# > +# @cper: a single CPER record to be sent to the guest OS. > +# > +# Features: > +# > +# @unstable: This command is experimental. > +# > +# Since: 9.2 > +## > +{ 'command': 'ghes-cper', > + 'data': { > + 'cper': 'CommonPlatformErrorRecord' > + }, > + 'features': [ 'unstable' ] > +} > diff --git a/qapi/meson.build b/qapi/meson.build > index e7bc54e5d047..bd13cd7d40c9 100644 > --- a/qapi/meson.build > +++ b/qapi/meson.build > @@ -35,6 +35,7 @@ qapi_all_modules = [ > 'dump', > 'ebpf', > 'error', > + 'ghes-cper', > 'introspect', > 'job', > 'machine-common', > diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json > index b1581988e4eb..c1a267399fe5 100644 > --- a/qapi/qapi-schema.json > +++ b/qapi/qapi-schema.json > @@ -75,6 +75,7 @@ > { 'include': 'misc-target.json' } > { 'include': 'audio.json' } > { 'include': 'acpi.json' } > +{ 'include': 'ghes-cper.json' } > { 'include': 'pci.json' } > { 'include': 'stats.json' } > { 'include': 'virtio.json' }