#10663: RSDP and MP Floating Pointer scan spots ---------------------------+------------------------------ Reporter: yaniv | Owner: axeld Type: bug | Status: new Priority: normal | Milestone: R1 Component: System/Kernel | Version: R1/Development Keywords: | Blocked By: Blocking: | Has a Patch: 0 Platform: x86 | ---------------------------+------------------------------ '''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: 1. 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: a. In the first kilobyte of Extended BIOS Data Area (EBDA), or b. 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 c. In the BIOS ROM address space between 0F0000h and 0FFFFFh. -- Ticket URL: <https://dev.haiku-os.org/ticket/10663> Haiku <https://dev.haiku-os.org> Haiku - the operating system.