Skip to content
  • Michael Neuling's avatar
    powerpc: Enable asymmetric SMT scheduling on POWER7 · 76cbd8a8
    Michael Neuling authored
    
    
    The POWER7 core has dynamic SMT mode switching which is controlled by
    the hypervisor.  There are 3 SMT modes:
    	SMT1 uses thread  0
    	SMT2 uses threads 0 & 1
    	SMT4 uses threads 0, 1, 2 & 3
    When in any particular SMT mode, all threads have the same performance
    as each other (ie. at any moment in time, all threads perform the same).
    
    The SMT mode switching works such that when linux has threads 2 & 3 idle
    and 0 & 1 active, it will cede (H_CEDE hypercall) threads 2 and 3 in the
    idle loop and the hypervisor will automatically switch to SMT2 for that
    core (independent of other cores).  The opposite is not true, so if
    threads 0 & 1 are idle and 2 & 3 are active, we will stay in SMT4 mode.
    
    Similarly if thread 0 is active and threads 1, 2 & 3 are idle, we'll go
    into SMT1 mode.
    
    If we can get the core into a lower SMT mode (SMT1 is best), the threads
    will perform better (since they share less core resources).  Hence when
    we have idle threads, we want them to be the higher ones.
    
    This adds a feature bit for asymmetric packing to powerpc and then
    enables it on POWER7.
    
    Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: linuxppc-dev@ozlabs.org
    LKML-Reference: <20100608045702.31FB5CC8C7@localhost.localdomain>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    76cbd8a8