SMP startup problem when RAM > 4GB
I am developing a kernel which has SMP support, based on the Linux kernel.
I am using the Intel MP Specification for initializing SMP.
I am facing a peculiar problem when RAM installed on the system is more than 4GB.
In this case, during initialization of the AP, as soon as i write the INIT IPI on the Local APIC of the BSP, the timer interrupt gets disabled and the AP fails to boot.
The address of Local APIC register is 0xFEE00000 as per the MP Configuration Table.
Machine details are as follows:
CPU - Intel Core 2 Duo
RAM - 8GB
Chipset - Intel 975
As per the Chipset datasheet (Intel 975X-MCH) the address of Local APIC is 0xFEC80000, however as per the Conroe (code name for Core2Duo) processor family BIOS writer's guide, the MSR contains the Local APIC address as 0xFEE00000.
Same code works when RAM is less than 4GB. What is the procedure for SMP initialization when RAM is more than 4GB?