coreboot_tables.c: Expose the ACPI RSDP
The ACPI RSDP can only be found in: - legacy BIOS region - via UEFI service On some systems like ARM that legacy BIOS region is not an option, so to avoid needing UEFI it makes sense to expose the RSDP via a coreboot table entry. This also adds the respective unit test. Change-Id: I591312a2c48f0cbbb03b2787e4b365e9c932afff Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/62573 Reviewed-by: Lance Zhao Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
committed by
Felix Held
parent
63c6d814ce
commit
2e7e2d978b
@ -210,6 +210,12 @@ void arch_write_tables(uintptr_t coreboot_table)
|
||||
{
|
||||
}
|
||||
|
||||
static const uintptr_t ebda_base = 0xf0000;
|
||||
uintptr_t get_coreboot_rsdp(void)
|
||||
{
|
||||
return ebda_base;
|
||||
}
|
||||
|
||||
struct resource mock_bootmem_ranges[] = {
|
||||
{.base = 0x1000, .size = 0x2000, .flags = LB_MEM_RAM},
|
||||
{.base = 0x0000, .size = 0x4000, .flags = LB_MEM_RAM},
|
||||
@ -476,6 +482,12 @@ static void test_write_tables(void **state)
|
||||
assert_int_equal(ram_code(), board_config->ram_code);
|
||||
assert_int_equal(sku_id(), board_config->sku_id);
|
||||
break;
|
||||
case LB_TAG_ACPI_RSDP:
|
||||
assert_int_equal(sizeof(struct lb_acpi_rsdp), record->size);
|
||||
|
||||
const struct lb_acpi_rsdp *acpi_rsdp = (struct lb_acpi_rsdp *)record;
|
||||
assert_int_equal(ebda_base, unpack_lb64(acpi_rsdp->rsdp_pointer));
|
||||
break;
|
||||
default:
|
||||
fail_msg("Unexpected tag found in record. Tag ID: 0x%x", record->tag);
|
||||
}
|
||||
|
Reference in New Issue
Block a user