2004-06-17 09:18:56

by Keir Fraser

[permalink] [raw]
Subject: Buggy RSDP search in ACPI boot-time code


Hi,

I think that the 'high-memory' search range in acpi_find_rsdp() in
arch/i386/kernel/acpi.c (2.4.26) or arch/i386/kernel/acpi/boot.c
(2.6.5) is incorrect.

It is supposed to search 0xE0000-0x100000, but the length field is
incorrectly specified as 0xFFFFF. As in the 'proper' ACPI driver, the
correct length is 0x20000.

The current length means the search grooves on into the kernel itself,
but since the search string "RSD PTR" only appears in the data
section, the search will usually terminate before finding
'itself'. The fact that the search occurs only on 16-byte boundaries
also helps.

Probably best to fix this though. :-) I've already had to for the Xen
VMM (much smaller codebase means that the search string resides within
the too-large search space).

-- Keir Fraser

PS. Please CC me with responses -- I'm not subscribed.