Follow us on Google+ Follow us on Facebook Follow us on Twitter

Opened 5 years ago

Last modified 14 months ago

#408 accepted enhancement

ia32, amd64: Number of CPUs is limited to 8

Reported by: decky Owned by: decky
Priority: minor Milestone:
Component: helenos/kernel/ia32 Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:


Due to the use of APIC Flat Mode the number of CPUs which can be woken up during the kernel initialization is limited to 8.

The problem has been described in more details in the mailing list by Jakub Jermar:

I suspect this is because we configure the APICs to run in the flat
mode, which has this rather low limit. Quoting the Intel manual:

Flat Model — This model is selected by programming DFR bits 28 through
31 to 1111. Here, a unique logical APIC ID can be established for up to
8 local APICs by setting a different bit in the logical APIC ID field of
the LDR for each local APIC. A group of local APICs can then be selected
by setting one or more bits in the MDA.

And the corresponding part of apic.c::l_apic_init():

/* Program Destination Format Register for Flat mode. */
dfr_t dfr;

dfr.value = l_apic[DFR];
dfr.model = MODEL_FLAT;
l_apic[DFR] = dfr.value;

Change History (5)

comment:1 Changed 5 years ago by decky

  • Owner changed from jermar to decky
  • Status changed from new to accepted

comment:2 Changed 5 years ago by jermar

  • Milestone changed from 0.5.0 to 0.5.1

comment:3 Changed 4 years ago by jermar

  • Type changed from defect to enhancement

comment:4 Changed 3 years ago by jermar

  • Milestone changed from 0.5.1 to 0.5.2

comment:5 Changed 14 months ago by jermar

  • Milestone 0.6.1 deleted
Note: See TracTickets for help on using tickets.