This patchset introduces support for the ACPI Error Record Serialization Table, ERST.
For background and implementation information, please see docs/specs/acpi_erst.rst, which is patch 1/10. Suggested-by: Konrad Wilk <konrad.w...@oracle.com> Signed-off-by: Eric DeVolder <eric.devol...@oracle.com> --- v7: 7oct2021 - style improvements, per Igor - use of endian accessors for storage header, per Igor - a number of optimizations and improvements, per Igor - updated spec for header, per Igor - updated spec for rst format, per Michael Tsirkin - updated spec for new record_size parameter Due to changes in the spec, I am not carrying the Acked-by from Ani Sinha. - changes for and testing of migration to systems with differing ERST_RECORD_SIZE v6: 5aug2021 - Fixed compile warning/error, per Michael Tsirkin - Fixed mingw32 build error, per Michael - Converted exchange buffer to MemoryBackend, per Igor - Migrated test to PCI, per Igor - Significantly reduced amount of copying, per Igor - Corrections/enhancements to acpi_erst.txt, per Igor - Many misc/other small items, per Igor v5: 30jun2021 - Create docs/specs/acpi_erst.txt, per Igor - Separate PCI BARs for registers and memory, per Igor - Convert debugging to use trace infrastructure, per Igor - Various other fixups, per Igor v4: 11jun2021 - Converted to a PCI device, per Igor. - Updated qtest. - Rearranged patches, per Igor. v3: 28may2021 - Converted to using a TYPE_MEMORY_BACKEND_FILE object rather than internal array with explicit file operations, per Igor. - Changed the way the qdev and base address are handled, allowing ERST to be disabled at run-time. Also aligns better with other existing code. v2: 8feb2021 - Added qtest/smoke test per Paolo Bonzini - Split patch into smaller chunks, per Igor Mammedov - Did away with use of ACPI packed structures, per Igor Mammedov v1: 26oct2020 - initial post --- Eric DeVolder (10): ACPI ERST: specification for ERST support ACPI ERST: PCI device_id for ERST ACPI ERST: header file for ERST ACPI ERST: support for ACPI ERST feature ACPI ERST: build the ACPI ERST table ACPI ERST: create ACPI ERST table for pc/x86 machines ACPI ERST: qtest for ERST ACPI ERST: bios-tables-test testcase ACPI ERST: bios-tables-test.c steps 1 and 2 ACPI ERST: step 6 of bios-tables-test.c docs/specs/acpi_erst.rst | 200 +++++++ hw/acpi/erst.c | 1075 +++++++++++++++++++++++++++++++++++++ hw/acpi/meson.build | 1 + hw/acpi/trace-events | 15 + hw/i386/acpi-build.c | 9 + hw/i386/acpi-microvm.c | 9 + include/hw/acpi/erst.h | 24 + include/hw/pci/pci.h | 1 + tests/data/acpi/microvm/ERST.pcie | Bin 0 -> 912 bytes tests/data/acpi/pc/APIC.acpierst | Bin 0 -> 120 bytes tests/data/acpi/pc/DSDT.acpierst | Bin 0 -> 5969 bytes tests/data/acpi/pc/ERST | 0 tests/data/acpi/pc/ERST.acpierst | Bin 0 -> 912 bytes tests/data/acpi/pc/FACP.acpierst | Bin 0 -> 116 bytes tests/data/acpi/pc/FACS.acpierst | Bin 0 -> 64 bytes tests/data/acpi/pc/HPET.acpierst | Bin 0 -> 56 bytes tests/data/acpi/pc/WAET.acpierst | Bin 0 -> 40 bytes tests/data/acpi/q35/APIC.acpierst | Bin 0 -> 120 bytes tests/data/acpi/q35/DSDT.acpierst | Bin 0 -> 8306 bytes tests/data/acpi/q35/ERST | 0 tests/data/acpi/q35/ERST.acpierst | Bin 0 -> 912 bytes tests/data/acpi/q35/FACP.acpierst | Bin 0 -> 244 bytes tests/data/acpi/q35/FACS.acpierst | Bin 0 -> 64 bytes tests/data/acpi/q35/HPET.acpierst | Bin 0 -> 56 bytes tests/data/acpi/q35/MCFG.acpierst | Bin 0 -> 60 bytes tests/data/acpi/q35/WAET.acpierst | Bin 0 -> 40 bytes tests/qtest/bios-tables-test.c | 55 ++ tests/qtest/erst-test.c | 167 ++++++ tests/qtest/meson.build | 2 + 29 files changed, 1558 insertions(+) create mode 100644 docs/specs/acpi_erst.rst create mode 100644 hw/acpi/erst.c create mode 100644 include/hw/acpi/erst.h create mode 100644 tests/data/acpi/microvm/ERST.pcie create mode 100644 tests/data/acpi/pc/APIC.acpierst create mode 100644 tests/data/acpi/pc/DSDT.acpierst create mode 100644 tests/data/acpi/pc/ERST create mode 100644 tests/data/acpi/pc/ERST.acpierst create mode 100644 tests/data/acpi/pc/FACP.acpierst create mode 100644 tests/data/acpi/pc/FACS.acpierst create mode 100644 tests/data/acpi/pc/HPET.acpierst create mode 100644 tests/data/acpi/pc/WAET.acpierst create mode 100644 tests/data/acpi/q35/APIC.acpierst create mode 100644 tests/data/acpi/q35/DSDT.acpierst create mode 100644 tests/data/acpi/q35/ERST create mode 100644 tests/data/acpi/q35/ERST.acpierst create mode 100644 tests/data/acpi/q35/FACP.acpierst create mode 100644 tests/data/acpi/q35/FACS.acpierst create mode 100644 tests/data/acpi/q35/HPET.acpierst create mode 100644 tests/data/acpi/q35/MCFG.acpierst create mode 100644 tests/data/acpi/q35/WAET.acpierst create mode 100644 tests/qtest/erst-test.c -- 1.8.3.1