The values in the FADT are pointers so should not go through sandbox's normal addr<->pointer mapping. Fix this.
Signed-off-by: Simon Glass <s...@chromium.org> --- Changes in v3: - Add new patch to correct mapping in FADT cmd/acpi.c | 2 +- lib/acpi/acpi_table.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/acpi.c b/cmd/acpi.c index 094d9d4e858..2273176f106 100644 --- a/cmd/acpi.c +++ b/cmd/acpi.c @@ -58,7 +58,7 @@ static void list_fadt(struct acpi_fadt *fadt) dump_hdr(nomap_sysmem(fadt->x_dsdt, 0)); else if (fadt->dsdt) dump_hdr(nomap_sysmem(fadt->dsdt, 0)); - if (!IS_ENABLED(CONFIG_X86) && + if (!IS_ENABLED(CONFIG_X86) && !IS_ENABLED(CONFIG_SANDBOX) && !(fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)) log_err("FADT not ACPI-hardware-reduced-compliant\n"); if (fadt->header.revision >= 3 && fadt->x_firmware_ctrl) diff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c index 150f75027a5..3805b61159e 100644 --- a/lib/acpi/acpi_table.c +++ b/lib/acpi/acpi_table.c @@ -255,8 +255,8 @@ int acpi_write_fadt(struct acpi_ctx *ctx, const struct acpi_writer *entry) header->creator_revision = 1; fadt->minor_revision = 2; - fadt->x_firmware_ctrl = map_to_sysmem(ctx->facs); - fadt->x_dsdt = map_to_sysmem(ctx->dsdt); + fadt->x_firmware_ctrl = nomap_to_sysmem(ctx->facs); + fadt->x_dsdt = nomap_to_sysmem(ctx->dsdt); if (fadt->x_firmware_ctrl < 0x100000000ULL) fadt->firmware_ctrl = fadt->x_firmware_ctrl; -- 2.43.0