Opened 11 years ago
Last modified 11 years ago
#10663 assigned bug
RSDP and MP Floating Pointer scan spots
Reported by: | yaniv | Owned by: | tqh |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Drivers/ACPI | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | x86 |
Description
In src/system/boot/platform/bios_ia32/acpi.cpp
acpi_scan_spots[] includes BDA area, it should be the first 1 KB of EBDA.
According to spec: OSPM finds the Root System Description Pointer (RSDP) structure by searching physical memory ranges on 16-byte boundaries for a valid Root System Description Pointer structure signature and checksum match as follows:
- The first 1 KB of the Extended BIOS Data Area (EBDA). For EISA or MCA systems,
the EBDA can be found in the two-byte location 40:0Eh on the BIOS data area.
- The BIOS read-only memory space between 0E0000h and 0FFFFFh.
In src/system/boot/platform/bios_ia32/smp.cpp
acpi_scan_spots[] need to include the first 1 KB of EBDA. acpi_scan_spots[0] need to use actual base memory size from BDA
According to spec:
- The MP Floating Pointer Structure. This structure contains a physical address
pointer to the MP configuration table and other MP feature information bytes. When present, this structure indicates that the system conforms to the MP specification. This structure must be stored in at least one of the following memory locations, because the operating system searches for the MP floating pointer structure in the order described below:
- In the first kilobyte of Extended BIOS Data Area (EBDA), or
- Within the last kilobyte of system base memory (e.g., 639K-640K for systems with 640 KB of base memory or 511K-512K for systems with 512 KB of base memory) if the EBDA segment is undefined, or
- In the BIOS ROM address space between 0F0000h and 0FFFFFh.
Change History (2)
comment:1 by , 11 years ago
Component: | System/Kernel → Drivers/ACPI |
---|---|
Owner: | changed from | to
Status: | new → assigned |
While this is ACPI code (and perhaps should use ACPICA instead) this is handcrafted bootcode. Someone in that area might be better suited to tackle this (mmlr?).