-----Original Message----- From: coreboot-bounces@coreboot.org [mailto:coreboot-bounces@coreboot.org] On Behalf Of Patrick Georgi Sent: Wednesday, May 13, 2009 12:46 AM To: coreboot@coreboot.org Subject: [coreboot] [PATCH]Fix ACPI in HIGH-and-LOW tables configuration
Hi,
I messed up and added some "harmless" code right before pushing this change. Just that it wasn't harmless. I'm sorry.
Anyway, with this patch, ACPI works again for setups with both HAVE_HIGH_TABLES and HAVE_LOW_TABLES, as the RSDP contains valid data now (without it the RSDT is bogus: it is read out before it is written)
Index: src/arch/i386/boot/tables.c =================================================================== --- src/arch/i386/boot/tables.c (Revision 4279) +++ src/arch/i386/boot/tables.c (Arbeitskopie) @@ -116,14 +116,16 @@ #if HAVE_HIGH_TABLES == 1 #if HAVE_LOW_TABLES == 1 unsigned long high_rsdp=ALIGN(high_table_end, 16); - unsigned long rsdt_location=(unsigned long*)(((acpi_rsdp_t*)high_rsdp)->rsdt_address); - acpi_write_rsdp(rom_table_end, rsdt_location); - rom_table_end = ALIGN(ALIGN(rom_table_end, 16) + sizeof(acpi_rsdp_t), 16); #endif if (high_tables_base) { high_table_end = write_acpi_tables(high_table_end); high_table_end = (high_table_end+1023) & ~1023; } +#if HAVE_LOW_TABLES == 1 + unsigned long rsdt_location=(unsigned long*)(((acpi_rsdp_t*)high_rsdp)->rsdt_address); + acpi_write_rsdp(rom_table_end, rsdt_location); + rom_table_end = ALIGN(ALIGN(rom_table_end, 16) + sizeof(acpi_rsdp_t), 16); +#endif #else #if HAVE_LOW_TABLES == 1 rom_table_end = write_acpi_tables(rom_table_end);
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
Can you move the declaration of high_rsdp too? One less #if.
I don't see how this changes the functionality. Which variable are you worried about? Sorry if I'm being blind.
Thanks, Myles