• Yong Wang's avatar
    perf_counter, x86: Set global control MSR correctly · c14dab5c
    Yong Wang authored
    Previous code made an assumption that the power on value of global
    control MSR has enabled all fixed and general purpose counters properly.
    
    However, this is not the case for certain Intel processors, such as
    Atom - and it might also be firmware dependent.
    
    Each enable bit in IA32_PERF_GLOBAL_CTRL is AND'ed with the
    enable bits for all privilege levels in the respective IA32_PERFEVTSELx
    or IA32_PERF_FIXED_CTR_CTRL MSRs to start/stop the counting of
    respective counters. Counting is enabled if the AND'ed results is true;
    counting is disabled when the result is false.
    
    The end result is that all fixed counters are always disabled on Atom
    processors because the assumption is just invalid.
    
    Fix this by not initializing the ctrl-mask out of the global MSR,
    but setting it to perf_counter_mask.
    Reported-by: default avatarStephane Eranian <eranian@googlemail.com>
    Signed-off-by: default avatarYong Wang <yong.y.wang@intel.com>
    Cc: Arjan van de Ven <arjan@infradead.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    LKML-Reference: <20090624021324.GA2788@ywang-moblin2.bj.intel.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    c14dab5c
perf_counter.c 40.3 KB