x86/perf/amd: Remove tracing from perf_lopwr_cb()
The perf_lopwr_cb() function is called from the idle routines; there is no RCU there, we must not enter tracing. Use __always_inline, noidle annotations and existing no-trace methods. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Tony Lindgren <tony@atomide.com> Tested-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Frederic Weisbecker <frederic@kernel.org> Link: https://lore.kernel.org/r/20230112195539.392862891@infradead.org
This commit is contained in:
parent
28c8e08842
commit
1f7c232ee0
|
@ -41,18 +41,15 @@ static inline unsigned int brs_to(int idx)
|
|||
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)
|
||||
|
@ -405,7 +402,7 @@ void amd_pmu_brs_sched_task(struct perf_event_pmu_context *pmu_ctx, bool sched_i
|
|||
* 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;
|
||||
|
|
|
@ -578,7 +578,7 @@ extern void perf_amd_brs_lopwr_cb(bool lopwr_in);
|
|||
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue