
On Tue, 21 Nov 2023 at 07:41, Heinrich Schuchardt heinrich.schuchardt@canonical.com wrote:
ACPI tables may comprise either RSDT, XSDT, or both. The current code fails to check the presence of the RSDT table before accessing it. This leads to an exception if the RSDT table is not provided.
The XSDT table takes precedence over the RSDT table.
The return values of list_rsdt() and list_rsdp() are always zero and not checked. Remove the return values.
Addresses in the XSDT table are 64-bit. Adjust the output accordingly.
As the RSDT table has to be ignored if the XSDT command is present there is no need to compare the tables in a display command. Anyway the specification does not require that the sequence of addresses in the RSDT and XSDT table are the same.
The FACS table header does not provide revision information. Correct the description of dump_hdr().
Adjust the ACPI test to match the changed output format of the 'acpi list' command.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
v4: deduplicate code in list_rsdt() v3: consider map_sysmem(0, 0) != NULL on the sandbox adjust signature of list_rsdt() and list_rsdp() v2: add unit test for offset of field Entry in RSDT, XSDT merge patch 2 and 3 remove leading zeros from address output
cmd/acpi.c | 64 +++++++++++++++++++++++++++----------------------- test/dm/acpi.c | 18 +++++++------- 2 files changed, 43 insertions(+), 39 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
I really don't like using 16 characters for a 64-bit address. I wonder if there is a better solution? But at least it is leading spaces, not zeroes.