Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Hi,
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?
If you want to access more than 4 GB of RAM in Linux you need to use a 64 bit kernel.
Not true - PAE provides the ability to "use" (FSVO use) up to 64 Gig of RAM on 32-bit systems.
Each process is of course limited to a virtual address space of 4 Gig.
@akshayj29 maybe look up the Intel PAE specs to get an idea of how to handle the mapping.
Not true - PAE provides the ability to "use" (FSVO use) up to 64 Gig of RAM on 32-bit systems.
Each process is of course limited to a virtual address space of 4 Gig.
@akshayj29 maybe look up the Intel PAE specs to get an idea of how to handle the mapping.
Hi,
Thanks a lot.
However, my problem is related to starting the second processor in a dual core system and not related to accessing more than 4GB RAM.
The Local APIC(Advanced Programmable Interrupt Controller) is a memory mapped I/O device which is used to startup the second processor in a dual core system.
According to the Intel MP Specification, the method of booting the second processor is independent of the amount of RAM in the system.
The address of this Local APIC in the machine is 0xFEE00000 (which is < than 4GB). When RAM in system is 2GB my code works perfectly.
However, when RAM is more than 4GB, the same code does not work.
The second processor fails to boot and the timer interrupt gets disabled.
I think this has got to do with the remapping of physical memory by the chipset or something but i'm not sure.
Thanks,
--Akshay
P.S - i did not post it in the programming forum as this is not related to linux kernel/programs, but it is a problem related to my own kernel.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.