• Ravikiran G Thirumalai's avatar
    [PATCH] x86_64: to use lapic ids instead of initial apic ids · 60c1bc82
    Ravikiran G Thirumalai authored
    phys_proc_id[] on AMD boxes is right now populated with the initial
    apic id, obtained by the cpuid instruction.  But, the initial apic id
    need not be the local apic id on clustered APIC systems (see comment at
    x86_64/kernel/genapic_cluster.c, line 110).  On vSMPowered with AMD
    CPUs the cpu_to_node will turn out to be incorrect (as apicid_to_node[] is
    indexed by the initial apic id rather than the local apic id).
    On vSMPowered boxes with Intel CPUs this is working correctly as
    phys_proc_id[] is initialized correctly in detect_ht().
    
    This fixes AMD boot path according to specification, to use the correct
    routines for local apic id and socket ids.  We use
    hard_smp_processor_id() to read the local apic id, and phys_pkg_id() to
    determine socket id for phys_proc_id[]
    
    Patch tested on Tyan multicore boxes as well as vSMPowered boxes.
    Signed-off-by: default avatarRavikiran Thirumalai <kiran@scalex86.org>
    Signed-off-by: default avatarShai Fultheim <shai@scalex86.org>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    60c1bc82
setup.c 35.7 KB