On Mon, Nov 21, 2005 at 02:17:35PM -0800, yhlu wrote:
Can you please explain clearly:
- What are you changing.
- use core_vir instead of x86_max_cores, for E0 later single core,
core_vir could be 2, and x86_max_cores still is 1. So it makes node calculation right.
max_cores should be 2 here.
- What was the problem with the old behaviour
- for E0 single core, node 2, initial apicid is 4, and old cold will
get node=4 instead of 2. 2. if the lifted apicid is not continous, it will assign strange node id to the cpu.
Is there a good reason in the BIOS to not make it contiguous?
- Why that particular change
- We can get exact node id and core id from initial apicid for E0 later.
- Why can't that APIC number setup not be done by the BIOS itself
- That patch the code more generic. and don't assume the lifted
apicid is continous.
It's only the last resort fallback anyways. I would prefer to not make it more complicated. The recommend way is you supplying a SRAT table, then you're independent of any such fallback heuristics and just tell the kernel the right mapping.
-Andi