Skip to contentSkip to conversation

: Correctly locate RSDP in EBDA

PATCH New Udo A. Steinberg 1 participant 1 message Jul 20, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 : Correctly locate RSDP in EBDA

ACPI spec. states that the location of the RSDP structure is found by searching
* The first 1 KB of the Extended BIOS Data Area (EBDA).
* The BIOS read-only memory space between 0E0000h and 0FFFFFh

The EBDA scan looks wrong. The patch below against 2.6.12 should correct this.

-Udo.

---

Calculate correct EBDA address for ACPI RSDP scan. The word at BIOS Data Area 40:0E is the segment address of the EBDA.

arch/i386/kernel/acpi/boot.c 2005-07-20 17:31:15.000000000 +0200 renamed from arch/i386/kernel/acpi/boot.c.old 2005-07-20 17:28:32.000000000 +0200 +1 -1
@@ -648,7 +648,7 @@
         * Scan memory looking for the RSDP signature. First search EBDA (low
         * memory) paragraphs and then search upper memory (E0000-FFFFF).
         */
-       rsdp_phys = acpi_scan_rsdp (0, 0x400);
+       rsdp_phys = acpi_scan_rsdp (*(u16*) 0x40E << 4, 0x400);
        if (!rsdp_phys)
                rsdp_phys = acpi_scan_rsdp (0xE0000, 0x20000);