• G
    mutexes, sched: Introduce arch_mutex_cpu_relax() · 335d7afb
    Gerald Schaefer 提交于
    The spinning mutex implementation uses cpu_relax() in busy loops as a
    compiler barrier. Depending on the architecture, cpu_relax() may do more
    than needed in this specific mutex spin loops. On System z we also give
    up the time slice of the virtual cpu in cpu_relax(), which prevents
    effective spinning on the mutex.
    
    This patch replaces cpu_relax() in the spinning mutex code with
    arch_mutex_cpu_relax(), which can be defined by each architecture that
    selects HAVE_ARCH_MUTEX_CPU_RELAX. The default is still cpu_relax(), so
    this patch should not affect other architectures than System z for now.
    Signed-off-by: NGerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    LKML-Reference: <1290437256.7455.4.camel@thinkpad>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    335d7afb
mutex.h 5.1 KB