LinuxQuestions.org
Visit Jeremy's Blog.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - General
User Name
Password
Linux - General This 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


Reply
  Search this Thread
Old 08-21-2007, 08:47 AM   #1
akshayj29
LQ Newbie
 
Registered: Aug 2007
Posts: 3

Rep: Reputation: 0
SMP startup problem when RAM > 4GB


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?

Please HELP!

Thanks,
--Akshay
 
Old 08-21-2007, 05:28 PM   #2
stress_junkie
Senior Member
 
Registered: Dec 2005
Location: Massachusetts, USA
Distribution: Ubuntu 10.04 and CentOS 5.5
Posts: 3,873

Rep: Reputation: 335Reputation: 335Reputation: 335Reputation: 335
Shouldn't this post be in the programming forum?

If you want to access more than 4 GB of RAM in Linux you need to use a 64 bit kernel.
 
Old 08-21-2007, 07:30 PM   #3
syg00
LQ Veteran
 
Registered: Aug 2003
Location: Australia
Distribution: Lots ...
Posts: 21,128

Rep: Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121
Quote:
Originally Posted by stress_junkie View Post
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.
 
Old 08-21-2007, 08:00 PM   #4
stress_junkie
Senior Member
 
Registered: Dec 2005
Location: Massachusetts, USA
Distribution: Ubuntu 10.04 and CentOS 5.5
Posts: 3,873

Rep: Reputation: 335Reputation: 335Reputation: 335Reputation: 335
Quote:
Originally Posted by syg00 View Post
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.
What is this magic of which you speak - PAE?
 
Old 08-21-2007, 08:04 PM   #5
syg00
LQ Veteran
 
Registered: Aug 2003
Location: Australia
Distribution: Lots ...
Posts: 21,128

Rep: Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121Reputation: 4121
Start here - plenty of doco around.
 
Old 08-22-2007, 03:42 AM   #6
akshayj29
LQ Newbie
 
Registered: Aug 2007
Posts: 3

Original Poster
Rep: Reputation: 0
Booting other Processors in SMP

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.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
3.6GB RAM instead of 4GB ??? masterross Slackware 11 09-04-2008 08:07 AM
REDHAT 9 SMP and more than 4GB RAM dukeoflinux Linux - Hardware 4 08-22-2007 10:33 PM
utilize 4gb of ram cynick Linux - General 2 04-20-2006 11:42 AM
What if you had 2GB RAM and 4GB HD? AC97Conquerer General 21 03-28-2005 07:21 PM
4GB RAM not showing eddie0uk Linux - Hardware 5 03-12-2005 07:08 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - General

All times are GMT -5. The time now is 09:54 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration