This constitutes a major rewrite and restructuring of the FADT tests for ACPI. There is now a compliance test for every field that we can test. Some we cannot test since any possible value in the field is also an allowed value.
In some cases, the tests are an extension of existing tests -- for the PM blocks, SMI_CMD and the GPE blocks, for example. In the rest, these are new tests, and all of these are part of what used to be a much smaller test1. The original test2 and test3 are almost entirely intact since they did some solid testing of semantics across several related fields.
The largest structural change is around reduced hardware mode. There is now a test specific to that mode verifying that all of the fields in the FADT that are to be ignored are set to zero. Further, tests that are irrelevant to reduced hardware mode are skipped when we have tables in that mode.
Some of the patches are simply to enable compiling the FADT tests on non-x86 architectures; they were completely disabled previously. I did attempt to break up the patches into reasonable chunks but some of them still may have ended up fairly large.
This has been tested on arm64 and x86-64, using arm64 and x86 ACPI tables. I am sure the testing has not been exhaustive; there are a *lot* of fields in the FADT.
Changes for v2: -- Print out the SEALED_CASE flag (Colin Ian King) -- Relax the revision test a little (Alex Hung) -- Simplify/clarify testing of DSDT/X_DSDT fields (Alex Hung) -- New patch: add in safety checks for many of the fields that may not occur in older FADTs (spurred by comments from Alex Hung) -- New patch: update regression tests (Colin Ian King) -- Add in Acked-bys, but only if there were NO changes to the prior version of the patch (patches 4/23, 8/23, 10/23, 22-23/23 are the only ones without Acked-bys).
Al Stone (23): FADT: enable compiling on non-x86 architectures FADT: non-x86 machines need an FADT but x86 can survive without one FADT: disable SCI_EN and RESET_REG tests when in reduced hardware mode FADT: add in code to log basic info about the various FADT flag fields Add in bit masks for FACS flags. FADT: move log info out of test2, will provide it elsewhere ACPI: Add hypervisor ID field to FADT. FADT: minor cleanup and initial compliance tests FADT: expand the compliance test for FIRMWARE_CTRL fields FADT: expand compliance checks for DSDT and X_DSDT fields FADT: add compliance tests for reserved fields, PM profile, reduced hardware FADT: restructure test sequence around reduced hardware mode FADT: expand compliance tests for the SMI_CMD field FADT: add compliance tests for the ACPI_ENABLE and ACPI_DISABLE fields FADT: add compliance tests for S4BIOS_REQ and PSTATE_CNT fields FADT: extend and add PM address block compliance tests FADT: enhance compliance tests for GPE blocks FADT: add compliance test for the CST_CNT field FADT: add in compliance tests for C2/C3 latency fields FADT: add in SLEEP_CONTROL_REG and SLEEP_STATUS_REG compliance tests FADT: remove no longer useful variables from test1 FADT: add safety checks for older versions of FADT FADT: update regression tests to incorporate new/changed tests
.../arg-show-tests-0001/arg-show-tests-0001.log | 1 + .../arg-show-tests-full-0001.log | 21 +- src/acpi/fadt/fadt.c | 1796 +++++++++++++++++--- src/lib/include/fwts_acpi.h | 35 + 4 files changed, 1595 insertions(+), 258 deletions(-)