[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.
Patrick
More information about the coreboot
mailing list