MPS table in Intel Core 2 Quad

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
alkot
Posts: 13
Joined: Tue Nov 06, 2007 5:10 am

MPS table in Intel Core 2 Quad

Post by alkot »

I'm adding SMP support in my OS and testing it at many HW configs. For this moment parsing only Intel MPS tables was good -- I can run my OS on 4 cores per CPU Dual Xeon (8 CPU). But today I got Intel Core 2 Quad CPU on Intel S3000AH motherboard and MPS tables shows only 1 CPU entry. Does this mean that MPS tables are obsolete for this brand new system and i should parse ACPI tables? Or this tables broken?
Where can I find simple source code to understand it (Only MADT parsing)?
quok
Member
Member
Posts: 490
Joined: Wed Oct 18, 2006 10:43 pm
Location: Kansas City, KS, USA

Post by quok »

Yes, MPS tables are obsolete. The latest version of the standard is 1.4, and that's quite old. There's quite a few threads on this already, too.

You'll need to implement parsing the RSDP and the RSDT to find the MADT (which actually uses APIC as the table signature, not MADT. That seems to confuse some people). I have some code that'll parse these tables. I can PM it to you if interested. But it's not very hard to figure out just from reading the ACPI spec. I believe the latest version is 3.0b and can be found at http://acpi.info.

While you're at it, you might as well also look for and parse the XSDT. It's just an extended version of the RSDT, using 64 bit addresses instead of 32 bit addresses.
User avatar
AJ
Member
Member
Posts: 2646
Joined: Sun Oct 22, 2006 7:01 am
Location: Devon, UK
Contact:

Post by AJ »

Thanks for that valuable information. I, too, was just parsing the MP tables and wondering why I couldn't find more than one CPU on some arch's. Looks like I need to read up on another standard :(

Cheers,
Adam
alkot
Posts: 13
Joined: Tue Nov 06, 2007 5:10 am

Post by alkot »

Yes, quok, big thanks for the info :)

Good starting point is ncpu utility from FreeBSD :)
Post Reply