Re: ACPI: RSDP - ERROR: Invalid checksum

Klaus Muth
2005-06-09T09:13:13Z

Am Mittwoch, 8. Juni 2005 15:29 schrieb Klaus Muth:
> Hi!
>
> Ok, I do the Ingrid.
AAARGH. Another Ingrid. Seems, that the acpi_find_rsdp() is rather optimistic
about finding the RSDP [arch/i386/kernel/acpi/boot.c, acpi_scan_rsdp]:
/*
* Scan all 16-byte boundaries of the physical memory region for the
* RSDP signature.
*/
for (offset = 0; offset < length; offset += 16) {
if (strncmp((char *) (start + offset), "RSD PTR ", sig_len))
continue;
return (start + offset);
}

It seems to happen, that the IBM BIOS contains just the string "RSD PTR "
exactly at a 16-Byte-Boundary before the real RSDP block, so the wrnog
address is returned and acpi_table_init() in drivers/acpi/tables.c fails to
checksum this block of course.

The patched up RedHat Kernel uses
static struct acpi_table_rsdp * __init
acpi_find_root_pointer(void)
{
struct acpi_table_rsdp * rsdp;

/*
* Physical address is given
*/
/*
* Region 1) Search EBDA (low memory) paragraphs
*/
rsdp = acpi_tb_scan_memory_for_rsdp(__va(LO_RSDP_WINDOW_BASE),
LO_RSDP_WINDOW_SIZE);

if (rsdp)
return rsdp;

/*
* Region 2) Search upper memory: 16-byte boundaries in E0000h-F0000h
*/
rsdp = acpi_tb_scan_memory_for_rsdp(__va(HI_RSDP_WINDOW_BASE),
HI_RSDP_WINDOW_SIZE);

if (rsdp)
return rsdp;

printk(KERN_ERR "ACPI: System description tables not found\n");
return NULL;
}

to find the RSDP and seems to find it in Region 2. GRRRR.

Is there any patch to do the same with a vanilla 2.6 Kernel?
--
Klaus Muth
HAGOS eG Industriestr. 62 fon: (+49) 711 78805-86
EDV-Programmierung 70565 Stuttgart fax: (+49) 711 78805-35
http://www.hagos.de Germany mailto:muth-5lHx5lHeYlQ@public.gmane.org

-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20