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)

Signed-off-by: Patrick Georgi <[email protected]>


Patrick
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);
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to