On Thu, May 14, 2009 at 9:33 AM, Myles Watson <myle...@gmail.com> wrote: > > >> -----Original Message----- >> From: Patrick Georgi [mailto:patr...@georgi-clan.de] >> Sent: Thursday, May 14, 2009 9:15 AM >> To: Myles Watson >> Cc: 'coreboot' >> Subject: Re: [coreboot] [PATCH] Table code cleanup >> >> Am 14.05.2009 16:04, schrieb Myles Watson: >> >> + 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. >> > >> > ? I must have misunderstood. How can we put MP table in the high >> tables >> > area if the floating table has to be in low memory to be found, if they >> have >> > to be adjacent? >> The high table versions are (mostly) used to allow SeaBIOS to copy them >> down. SeaBIOS copies the entire MP table into low memory precisely >> because certain linux version can't cope with a different layout. >> >> The best outcome in my opinion is to default to >> HAVE_LOW_TABLES == HAVE_HIGH_TABLES == 1. Maybe even drop the config >> flags and #ifs, unless there's a good reason to keep them >> However I think we're not there yet. > > Sorry to be dense. Could we do this in terms of which tables we want in > each place? > > Page0 (low_table_start): > COREBOOT TABLE > > 0xf0000 (rom_table): > PIRQ > MPTABLE (with floating table) > ACPI bulk > > 0x7fff0000 (high_tables): > PIRQ > MPTABLE > ACPI bulk
That was less than clear :) A problem that I see with the code right now is that it depends on the implementation of acpi_write_tables, which is per-mainboard right now. If someone decides to align their rsdp at 64 bytes instead of 16, it might break. You also end up with two rsdp structures, one in 0xf0000 and one in high_tables. Is that really what we want? Thanks, Myles -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot