On 26/10/20 21:19, Eric DeVolder wrote:
This changeset introduces support for the ACPI Error Record Serialization Table, ERST.ERST is defined in [1], and the error records are defined according to [2]. This changeset generates the ACPI ERST table, which OSPM follows to program the associated ERST device. The ERST device occupies 8KiB of address space, with the first 8 bytes containing registers, and the remainder being an exchange buffer for reading/writing error records. The ERST device contains two registers, ACTION and VALUE registers, following closely the ERST operations. The ERST device only examines the record for the signature 'CPER', its record identifier, and bounds-checks the length against the size of the the CPER record header; otherwise all other record fields and payload are ignored. There are two options for this device: -global acpi-erst.size=X -global acpi-erst.filename=Y The size X, if not specified, defaults to 64KiB, and must be within 64KiB and 1MiB. The filename Y, if not specified, defaults to "acpi-erst.backing". The ERST backing storage is not mapped into the guest address space, just the 8KiB programming area is mapped into the guest. This has been utilized as a backend for the Linux pstore feature. [1] ACPI 6.3 Specification, 18.3 Error Serialization https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf [2] UEFI 2.8 Specification, Appendix N Common Platform Error Record https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
In addition to what Igor said, this really needs a test for the device (using qtest). It doesn't have to be super fine-grained, but at least a smoke test that the action and value registers do what they mean for a sample error recording operation.
Paolo
