Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

[smp] processor disabled

medinad
Beginner
1,470 Views
Hi,
I am trying to manage the multiprocessor initialization.

I found a little program [1] that implements the multiprocessor specification [2]. but in the processor entries([2] page 4-7) I get that the APs are disabled.

How can I enable the processors??
Is it a SW or HW problem ?

[1] http://www.uruk.org/mps/
[2] http://www.intel.com/design/pentium/datashts/242016.HTM

Thank you.
Daniel M.
0 Kudos
5 Replies
vu64
Beginner
1,470 Views
Quoting - medinad
Hi,
I am trying to manage the multiprocessor initialization.

I found a little program [1] that implements the multiprocessor specification [2]. but in the processor entries([2] page 4-7) I get that the APs are disabled.

How can I enable the processors??
Is it a SW or HW problem ?

[1] http://www.uruk.org/mps/
[2] http://www.intel.com/design/pentium/datashts/242016.HTM

Thank you.
Daniel M.

Have a look at TBB's task_scheduler_init
0 Kudos
Thomas_W_Intel
Employee
1,470 Views
Quoting - medinad
Hi,
I am trying to manage the multiprocessor initialization.

I found a little program [1] that implements the multiprocessor specification [2]. but in the processor entries([2] page 4-7) I get that the APs are disabled.

How can I enable the processors??
Is it a SW or HW problem ?

[1] http://www.uruk.org/mps/
[2] http://www.intel.com/design/pentium/datashts/242016.HTM

Thank you.
Daniel M.

Daniel,

[2] is a fairly old document. Did you have a look at the ACPI specification?
http://www.intel.com/technology/iapc/acpi/index.htm

Kind regards
Thomas
0 Kudos
medinad
Beginner
1,470 Views
Hi, sorry about delay but i was away last week.

Quoting - Thomas Willhalm (Intel)

Daniel,

[2] is a fairly old document. Did you have a look at the ACPI specification?
http://www.intel.com/technology/iapc/acpi/index.htm

Kind regards
Thomas

I had a look on it some time ago, with the 3.0b revision. But it do not say much about SMP or initialization.
Anyway I reach a similar table (5-21) with a flag description (table 5-22) that says
"If zero, this processor is unusable, and the operating system support will not attempt to use it."

I get zero for the APs(processors 1 to 3, 0 is the BSP). But I can work on Ubuntu with its four processors, so it is not a hw issue.

I am quite confused because the BIOS configuration is not so complex. And only initialization procedure left, but in the ACPI specification do not says anything about it. I have only that old document. I could not find other.

I will look deeply in the ACPI specification this week.

I would like to know what "this processor is unusable" means, because is usable with other system. So i have to find how to initialize them in a proper way. It sounds easy :-P

Thank you.
Daniel M.
0 Kudos
medinad
Beginner
1,470 Views
Quoting - vu64

Have a look at TBB's task_scheduler_init

Hi vu64,

a task_scheduler is to manage task, i need to initialize the processors to be able to schedule task on them.
Anyway I have tried to look at the code and i only could find some .h, I could not find the body of the function.

Thank you.
Daniel M.
0 Kudos
levicki
Valued Contributor I
1,470 Views
Quoting - medinad

Hi vu64,

a task_scheduler is to manage task, i need to initialize the processors to be able to schedule task on them.
Anyway I have tried to look at the code and i only could find some .h, I could not find the body of the function.

Thank you.
Daniel M.

Daniel,

I am not 100% sure what are you trying to do, but I will try to help anyway.

Usually, when the computer boots, BIOS initializes BP (boot processor) and APs (application processors) by making them all execute the same code sequence (MSR setup, interrupts, MTRR, microcode update, etc).

BIOS then halts APs so they are effectively disabled and in wait-for-SIPI state until the operating system activates them later in the boot process.

So what you need is to send SIPI packet (using I/O APIC) to disabled APs so they start executing code at some code address in your code.

I am not too familiar with the process myself, but you have pretty good explanation here:
http://tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/smpboot.html

0 Kudos
Reply