On Thu, May 19, 2011 at 2:59 AM, Marc Jones marcj303@gmail.com wrote:
On Wed, May 18, 2011 at 12:40 AM, Scott Duplichan scott@notabs.org wrote:
The attached patch works around a Windows XP or Server 2003 setup failure where an error message such as: "An unexpected error (805262864) occurred at line 1768 of d:\xpclient\base\boot\setup\arcdisp.c" The value 805262864 varies, and is the physical address, in decimal, of one of the ACPI tables.
Tested on Persimmon. Others abuild tested only. Signed-off-by: Scott Duplichan scott@notabs.org
Detailed explanation: The error message is displayed when a 1024 dword page table array used by setupldr runs out of space. This table is used for mapping various physical addresses, such as those of ACPI tables (a separate table identity maps the lower 16MB used by setupldr code and data). Setupldr only looks at ACPI tables (FACP) to determine make and model of the system. The make and model of the system is needed when setupldr scans the good/bad bios lists contained in txtsetup.sif. The good/bad bios lists are used to bypass installation of the ACPI enabled kernel on certain systems known to have ACPI problems. The code loop that scans the lists creates a new mapping each time it reads an ACPI table, and never frees mappings. The code uses FACP OEM ID to determine the system model. The code sequentially reads tables listed in the RSDT array until the FACP is found. Each read consumes one page table entry. If more that 4 tables precede the FACP in the RSDT array, the 1024 entry page table array will run out of space before the good/bad bios list processing completes. BIOS can work around this Windows XP/Server 2003 limitation by placing the FACP early in the RSDT array.
Thanks, Scott
Hi Scott,
Good find. This must have been a difficult debug.
It looks like src/mainboard/amd/mahogany/acpi_tables.c has a double paste issue. Fix that and it looks good.
Seems to be an issue with the line endings. He could have edited something in windows and made the patch.
- Thanks, Vikram