This changeset introduces support for the ACPI Error Record Serialization Table, ERST.
The change to hw/acpi/meson.build simply adds in the new .c file for compilation. The change to hw/i386/acpi-build.c calls out the building of the ERST table (and also creates the associated device). The new file hw/acpi/erst.c contains the building of the ERST table, as well as the simple device for exchanging error records. The new file include/hw/acpi/erst.h contains associated definitions and declarations for ERST. The primary description of this changeset is in the patch commit message. NOTES: When reviewing, I would especially appreciate feedback on the following topics: - The hope is to have ERST always present if ACPI is enabled, however, I have found it difficult to devise a method for passing the base address that does not require the workaround at the bottom of build_erst(). The issues I encountered are: - desire to keep this is common ACPI code - the device requires a qdev_new(), this needs to happen early, thus the workaround in build_erst() - the base address is machine/arch specific (eg ARM vs x86) I've not found a nice way to thread this needle, so what I've settled on is to simply lump ERST on to the CONFIG_ACPI (rather than a separate CONFIG_ACPI_ERST), and the workaround at the bottom of build_erst(). I suspect there is a better way for a built-in/ always present device. This does not support "-device acpi-erst,...". - I found a base address that "worked", but would like an address that would be known to be availabe, and then to document/reserve it for ERST. This takes into account that the base address can be different for x86 vs ARM. - I've run this through checkpatch, and all issues addressed except for the long lines in build_erst(). For readable I left the long lines, but will change if asked. - What else do I need to provide? Signed-off-by: Eric DeVolder <eric.devol...@oracle.com> --- hw/acpi/erst.c | 909 +++++++++++++++++++++++++++++++++++++++++++++++++ hw/acpi/meson.build | 1 + hw/i386/acpi-build.c | 4 + include/hw/acpi/erst.h | 97 ++++++ 4 files changed, 1011 insertions(+) create mode 100644 hw/acpi/erst.c create mode 100644 include/hw/acpi/erst.h