[coreboot] [PATCH] Table code cleanup

Patrick Georgi patrick at georgi-clan.de
Thu May 14 10:00:13 CEST 2009

Am 14.05.2009 00:01, schrieb Myles Watson:
> tables.diff:
> Add comments.
> Remove ACPI-specific code.
> Align low_table_end after gdt (so it matches high_table_end).
> Correct "New low_table_end..." line in coreboot_table.c.
> high_low.diff:
> Factor out common code for writing tables.
> both.diff:
> If we need to have the tables written both times we can do something like this.
> Signed-off-by: Myles Watson<mylesgw at gmail.com>
> Thanks,
> Myles

+	smp_write_floating_table_physaddr(low_table_end, mpc_start);
crashes some linux versions that expect the MP table to directly follow 
the floating table, I think.

Also your change seems to create _only_ a high ACPI table if 
HAVE_HIGH_TABLES is activated, which is less than optimal because ACPI 
tables there aren't found automatically but require the payload to 
create a low mem RSDP - which the code that you removed already does.

In my opinion we should keep the current behaviour:
- high tables: create ACPI in high tables area
- low tables: create ACPI in low tables area
- high and low tables: create ACPI in high tables area and a pointer to 
the structure in low tables.

The original behaviour was to write ACPI twice. Unfortunately, we need 
ACPI and SMM to interact, and this requires the address of an ACPI 
object in the SMM handler.
With two ACPI tables, that object exists twice, and we can't know for 
sure which one is used by the OS.


More information about the coreboot mailing list