diff options
| author | Tom Rini <[email protected]> | 2023-07-17 10:38:28 -0400 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2023-07-17 10:38:28 -0400 |
| commit | 13aa090b87a0fbdfe690011669b9fdb96bb1ccc7 (patch) | |
| tree | 69af16bc8ecc4b6e8106a750e31e51d7ec078828 /drivers/misc | |
| parent | aa817dfcaf158dda71358d02181bf52c30dbe4c6 (diff) | |
| parent | b8956425d525c3c25fd218f252f89a5e44df6a9f (diff) | |
Merge https://source.denx.de/u-boot/custodians/u-boot-x86
- bootstd: Add a bootmeth for ChromiumOS on x86
- x86: Use qemu-x86_64 to boot EFI installers
Diffstat (limited to 'drivers/misc')
| -rw-r--r-- | drivers/misc/qfw.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/misc/qfw.c b/drivers/misc/qfw.c index 9ef95caa895..7c01bf23d53 100644 --- a/drivers/misc/qfw.c +++ b/drivers/misc/qfw.c @@ -18,6 +18,7 @@ #include <dm.h> #include <misc.h> #include <tables_csum.h> +#include <asm/acpi_table.h> #if defined(CONFIG_GENERATE_ACPI_TABLE) && !defined(CONFIG_SANDBOX) /* @@ -64,6 +65,11 @@ static int bios_linker_allocate(struct udevice *dev, printf("error: allocating resource\n"); return -ENOMEM; } + if (aligned_addr < gd->arch.table_start_high) + gd->arch.table_start_high = aligned_addr; + if (aligned_addr + size > gd->arch.table_end_high) + gd->arch.table_end_high = aligned_addr + size; + } else if (entry->alloc.zone == BIOS_LINKER_LOADER_ALLOC_ZONE_FSEG) { aligned_addr = ALIGN(*addr, align); } else { @@ -188,6 +194,10 @@ ulong write_acpi_tables(ulong addr) return addr; } + /* QFW always puts tables at high addresses */ + gd->arch.table_start_high = (ulong)table_loader; + gd->arch.table_end_high = (ulong)table_loader; + qfw_read_entry(dev, be16_to_cpu(file->cfg.select), size, table_loader); for (i = 0; i < (size / sizeof(*entry)); i++) { @@ -227,6 +237,9 @@ out: } free(table_loader); + + gd_set_acpi_start(acpi_get_rsdp_addr()); + return addr; } |
