• Andreas Herrmann's avatar
    x86, sched: Workaround broken sched domain creation for AMD Magny-Cours · 5a925b42
    Andreas Herrmann authored
    Current sched domain creation code can't handle multi-node processors.
    When switching to power_savings scheduling errors show up and
    system might hang later on (due to broken sched domain hierarchy):
    
      # echo 0  >> /sys/devices/system/cpu/sched_mc_power_savings
      CPU0 attaching sched-domain:
       domain 0: span 0-5 level MC
        groups: 0 1 2 3 4 5
        domain 1: span 0-23 level NODE
         groups: 0-5 6-11 18-23 12-17
      ...
      # echo 1  >> /sys/devices/system/cpu/sched_mc_power_savings
      CPU0 attaching sched-domain:
       domain 0: span 0-11 level MC
        groups: 0 1 2 3 4 5 6 7 8 9 10 11
      ERROR: parent span is not a superset of domain->span
        domain 1: span 0-5 level CPU
      ERROR: domain->groups does not contain CPU0
         groups: 6-11 (__cpu_power = 12288)
      ERROR: groups don't span domain->span
         domain 2: span 0-23 level NODE
          groups:
      ERROR: domain->cpu_power not set
    
      ERROR: groups don't span domain->span
      ...
    
    Fixing all aspects of power-savings scheduling for Magny-Cours needs
    some larger changes in the sched domain creation code.
    
    As a short-term and temporary workaround avoid the problems by
    extending "the worst possible hack" ;-(
    and always use llc_shared_map on AMD Magny-Cours when MC domain span
    is calculated.
    
    With this I get:
    
      # echo 1  >> /sys/devices/system/cpu/sched_mc_power_savings
      CPU0 attaching sched-domain:
       domain 0: span 0-5 level MC
        groups: 0 1 2 3 4 5
        domain 1: span 0-5 level CPU
         groups: 0-5 (__cpu_power = 6144)
         domain 2: span 0-23 level NODE
          groups: 0-5 (__cpu_power = 6144) 6-11 (__cpu_power = 6144) 18-23 (__cpu_power = 6144) 12-17 (__cpu_power = 6144)
      ...
    
    I.e. no errors during sched domain creation, no system hangs, and also
    mc_power_savings scheduling works to a certain extend.
    
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    5a925b42
smpboot.c 32.6 KB