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