lkml.org 
[lkml]   [2011]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/4] perf, x86: Use ALTERNATIVE() to check for X86_FEATURE_PERFCTR_CORE
    Date
    Using ALTERNATIVE() when checking for X86_FEATURE_PERFCTR_CORE avoids
    an extra pointer chase and data cache hit.

    Signed-off-by: Robert Richter <robert.richter@amd.com>
    ---
    arch/x86/kernel/cpu/perf_event.c | 15 +++++++++++----
    1 files changed, 11 insertions(+), 4 deletions(-)

    diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
    index eed3673a..224a84f 100644
    --- a/arch/x86/kernel/cpu/perf_event.c
    +++ b/arch/x86/kernel/cpu/perf_event.c
    @@ -31,6 +31,7 @@
    #include <asm/nmi.h>
    #include <asm/compat.h>
    #include <asm/smp.h>
    +#include <asm/alternative.h>

    #if 0
    #undef wrmsrl
    @@ -363,12 +364,18 @@ again:
    return new_raw_count;
    }

    -/* using X86_FEATURE_PERFCTR_CORE to later implement ALTERNATIVE() here */
    static inline int x86_pmu_addr_offset(int index)
    {
    - if (boot_cpu_has(X86_FEATURE_PERFCTR_CORE))
    - return index << 1;
    - return index;
    + int offset;
    +
    + /* offset = X86_FEATURE_PERFCTR_CORE ? index << 1 : index */
    + alternative_io(ASM_NOP2,
    + "shll $1, %%eax",
    + X86_FEATURE_PERFCTR_CORE,
    + "=a" (offset),
    + "a" (index));
    +
    + return offset;
    }

    static inline unsigned int x86_pmu_config_addr(int index)
    --
    1.7.3.4



    \
     
     \ /
      Last update: 2011-04-16 02:39    [W:0.023 / U:30.884 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site