All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] acpi: Error Record Serialization Table, ERST, support for QEMU
@ 2021-06-11 18:31 Eric DeVolder
  2021-06-11 18:31 ` [PATCH v4 1/6] ACPI ERST: bios-tables-test.c steps 1 and 2 Eric DeVolder
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Eric DeVolder @ 2021-06-11 18:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: ehabkost, mst, konrad.wilk, pbonzini, imammedo, boris.ostrovsky, rth

This patchset introduces support for the ACPI Error Record
Serialization Table, ERST.

Linux uses the persistent storage filesystem, pstore, to record
information (eg. dmesg tail) upon panics and shutdowns.  Pstore is
independent of, and runs before, kdump.  In certain scenarios (ie.
hosts/guests with root filesystems on NFS/iSCSI where networking
software and/or hardware fails), pstore may contain the only
information available for post-mortem debugging.

Two common storage backends for the pstore filesystem are ACPI ERST
and UEFI. Most BIOS implement ACPI ERST; however, ACPI ERST is not
currently supported in QEMU, and UEFI is not utilized in all guests.
By implementing ACPI ERST within QEMU, then the ACPI ERST becomes a
viable pstore storage backend for virtual machines (as it is now for
bare metal machines).

Enabling support for ACPI ERST facilitates a consistent method to
capture kernel panic information in a wide range of guests: from
resource-constrained microvms to very large guests, and in
particular, in direct-boot environments (which would lack UEFI
run-time services).

Note that Microsoft Windows also utilizes the ACPI ERST for certain
crash information, if available.

The ACPI ERST persistent storage is contained within a single backing
file. The size and location of the backing file is specified upon
QEMU startup of the ACPI ERST device.

The ACPI specification[1], in Chapter "ACPI Platform Error Interfaces
(APEI)", and specifically subsection "Error Serialization", outlines
a method for storing error records into persistent storage.

[1] "Advanced Configuration and Power Interface Specification",
    version 6.2, May 2017.
    https://www.uefi.org/sites/default/files/resources/ACPI_6_2.pdf

[2] "Unified Extensible Firmware Interface Specification",
    version 2.8, March 2019.
    https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf

Suggested-by: Konrad Wilk <konrad.wilk@oracle.com>
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>

---
v4: 11jun2021
 - Converted to a PCI device, per Igor.
 - Updated qtest.

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 Igo Mammedov
 - Did away with use of ACPI packed structures, per Igo Mammedov

v1: 26oct2020
 - initial post

---
Eric DeVolder (6):
  ACPI ERST: bios-tables-test.c steps 1 and 2
  ACPI ERST: header file for ERST
  ACPI ERST: support for ACPI ERST feature
  ACPI ERST: create ACPI ERST table for pc/x86 machines.
  ACPI ERST: qtest for ERST
  ACPI ERST: step 6 of bios-tables-test.c

 hw/acpi/erst.c               | 880 +++++++++++++++++++++++++++++++++++++++++++
 hw/acpi/meson.build          |   1 +
 hw/i386/acpi-build.c         |   5 +
 include/hw/acpi/erst.h       |  79 ++++
 tests/data/acpi/microvm/ERST |   0
 tests/data/acpi/pc/ERST      | Bin 0 -> 976 bytes
 tests/data/acpi/q35/ERST     | Bin 0 -> 976 bytes
 tests/qtest/erst-test.c      | 109 ++++++
 tests/qtest/meson.build      |   2 +
 9 files changed, 1076 insertions(+)
 create mode 100644 hw/acpi/erst.c
 create mode 100644 include/hw/acpi/erst.h
 create mode 100644 tests/data/acpi/microvm/ERST
 create mode 100644 tests/data/acpi/pc/ERST
 create mode 100644 tests/data/acpi/q35/ERST
 create mode 100644 tests/qtest/erst-test.c

-- 
1.8.3.1



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-06-24 18:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-11 18:31 [PATCH v4 0/6] acpi: Error Record Serialization Table, ERST, support for QEMU Eric DeVolder
2021-06-11 18:31 ` [PATCH v4 1/6] ACPI ERST: bios-tables-test.c steps 1 and 2 Eric DeVolder
2021-06-22  6:34   ` Igor Mammedov
2021-06-22  6:44     ` Igor Mammedov
2021-06-11 18:31 ` [PATCH v4 2/6] ACPI ERST: header file for ERST Eric DeVolder
2021-06-11 18:31 ` [PATCH v4 3/6] ACPI ERST: support for ACPI ERST feature Eric DeVolder
2021-06-22 15:29   ` Igor Mammedov
2021-06-11 18:31 ` [PATCH v4 4/6] ACPI ERST: create ACPI ERST table for pc/x86 machines Eric DeVolder
2021-06-22  6:50   ` Igor Mammedov
2021-06-11 18:31 ` [PATCH v4 5/6] ACPI ERST: qtest for ERST Eric DeVolder
2021-06-11 18:31 ` [PATCH v4 6/6] ACPI ERST: step 6 of bios-tables-test.c Eric DeVolder
2021-06-22 15:51 ` [PATCH v4 0/6] acpi: Error Record Serialization Table, ERST, support for QEMU Igor Mammedov
2021-06-24 18:49   ` Eric DeVolder

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.