• Andreas Herrmann's avatar
    x86: Set cpu_llc_id on AMD CPUs · 99bd0c0f
    Andreas Herrmann authored
    This counts when building sched domains in case NUMA information
    is not available.
    
    ( See cpu_coregroup_mask() which uses llc_shared_map which in turn is
      created based on cpu_llc_id. )
    
    Currently Linux builds domains as follows:
    (example from a dual socket quad-core system)
    
     CPU0 attaching sched-domain:
      domain 0: span 0-7 level CPU
       groups: 0 1 2 3 4 5 6 7
    
      ...
    
     CPU7 attaching sched-domain:
      domain 0: span 0-7 level CPU
       groups: 7 0 1 2 3 4 5 6
    
    Ever since that is borked for multi-core AMD CPU systems.
    This patch fixes that and now we get a proper:
    
     CPU0 attaching sched-domain:
      domain 0: span 0-3 level MC
       groups: 0 1 2 3
       domain 1: span 0-7 level CPU
        groups: 0-3 4-7
    
      ...
    
     CPU7 attaching sched-domain:
      domain 0: span 4-7 level MC
       groups: 7 4 5 6
       domain 1: span 0-7 level CPU
        groups: 4-7 0-3
    
    This allows scheduler to assign tasks to cores on different sockets
    (i.e. that don't share last level cache) for performance reasons.
    Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
    LKML-Reference: <20090619085909.GJ5218@alberich.amd.com>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    99bd0c0f
amd.c 13 KB