lkml.org 
[lkml]   [2022]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 01/36] x86/perf/amd: Remove tracing from perf_lopwr_cb()
    The perf_lopwr_cb() is called from the idle routines; there is no RCU
    there, we must not enter tracing.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    ---
    arch/x86/events/amd/brs.c | 13 +++++--------
    arch/x86/include/asm/perf_event.h | 2 +-
    2 files changed, 6 insertions(+), 9 deletions(-)

    --- a/arch/x86/events/amd/brs.c
    +++ b/arch/x86/events/amd/brs.c
    @@ -41,18 +41,15 @@ static inline unsigned int brs_to(int id
    return MSR_AMD_SAMP_BR_FROM + 2 * idx + 1;
    }

    -static inline void set_debug_extn_cfg(u64 val)
    +static __always_inline void set_debug_extn_cfg(u64 val)
    {
    /* bits[4:3] must always be set to 11b */
    - wrmsrl(MSR_AMD_DBG_EXTN_CFG, val | 3ULL << 3);
    + __wrmsr(MSR_AMD_DBG_EXTN_CFG, val | 3ULL << 3, val >> 32);
    }

    -static inline u64 get_debug_extn_cfg(void)
    +static __always_inline u64 get_debug_extn_cfg(void)
    {
    - u64 val;
    -
    - rdmsrl(MSR_AMD_DBG_EXTN_CFG, val);
    - return val;
    + return __rdmsr(MSR_AMD_DBG_EXTN_CFG);
    }

    static bool __init amd_brs_detect(void)
    @@ -338,7 +335,7 @@ void amd_pmu_brs_sched_task(struct perf_
    * called from ACPI processor_idle.c or acpi_pad.c
    * with interrupts disabled
    */
    -void perf_amd_brs_lopwr_cb(bool lopwr_in)
    +void noinstr perf_amd_brs_lopwr_cb(bool lopwr_in)
    {
    struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
    union amd_debug_extn_cfg cfg;
    --- a/arch/x86/include/asm/perf_event.h
    +++ b/arch/x86/include/asm/perf_event.h
    @@ -554,7 +554,7 @@ extern void perf_amd_brs_lopwr_cb(bool l

    DECLARE_STATIC_CALL(perf_lopwr_cb, perf_amd_brs_lopwr_cb);

    -static inline void perf_lopwr_cb(bool lopwr_in)
    +static __always_inline void perf_lopwr_cb(bool lopwr_in)
    {
    static_call_mod(perf_lopwr_cb)(lopwr_in);
    }

    \
     
     \ /
      Last update: 2022-06-08 16:50    [W:14.338 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site