mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:31:14 +07:00
oprofile: Adding switch counter to oprofile statistic variables
This patch moves the multiplexing switch counter from x86 code to common oprofile statistic variables. Now the value will be available and usable for all architectures. The initialization and incrementation also moved to common code. Signed-off-by: Robert Richter <robert.richter@amd.com>
This commit is contained in:
parent
4d015f79e9
commit
1b294f5960
@ -34,11 +34,6 @@ static DEFINE_PER_CPU(unsigned long, saved_lvtpc);
|
||||
/* 0 == registered but off, 1 == registered and on */
|
||||
static int nmi_enabled = 0;
|
||||
|
||||
|
||||
#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
|
||||
extern atomic_t multiplex_counter;
|
||||
#endif
|
||||
|
||||
struct op_counter_config counter_config[OP_MAX_COUNTER];
|
||||
|
||||
/* common functions */
|
||||
@ -253,8 +248,6 @@ static int nmi_switch_event(void)
|
||||
|
||||
on_each_cpu(nmi_cpu_switch, NULL, 1);
|
||||
|
||||
atomic_inc(&multiplex_counter);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -107,8 +107,11 @@ static void stop_switch_worker(void)
|
||||
|
||||
static void switch_worker(struct work_struct *work)
|
||||
{
|
||||
if (!oprofile_ops.switch_events())
|
||||
start_switch_worker();
|
||||
if (oprofile_ops.switch_events())
|
||||
return;
|
||||
|
||||
atomic_inc(&oprofile_stats.multiplex_counter);
|
||||
start_switch_worker();
|
||||
}
|
||||
|
||||
/* User inputs in ms, converts to jiffies */
|
||||
|
@ -16,9 +16,6 @@
|
||||
#include "cpu_buffer.h"
|
||||
|
||||
struct oprofile_stat_struct oprofile_stats;
|
||||
#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
|
||||
atomic_t multiplex_counter;
|
||||
#endif
|
||||
|
||||
void oprofile_reset_stats(void)
|
||||
{
|
||||
@ -37,9 +34,7 @@ void oprofile_reset_stats(void)
|
||||
atomic_set(&oprofile_stats.sample_lost_no_mapping, 0);
|
||||
atomic_set(&oprofile_stats.event_lost_overflow, 0);
|
||||
atomic_set(&oprofile_stats.bt_lost_no_mapping, 0);
|
||||
#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
|
||||
atomic_set(&multiplex_counter, 0);
|
||||
#endif
|
||||
atomic_set(&oprofile_stats.multiplex_counter, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -84,6 +79,6 @@ void oprofile_create_stats_files(struct super_block *sb, struct dentry *root)
|
||||
&oprofile_stats.bt_lost_no_mapping);
|
||||
#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
|
||||
oprofilefs_create_ro_atomic(sb, dir, "multiplex_counter",
|
||||
&multiplex_counter);
|
||||
&oprofile_stats.multiplex_counter);
|
||||
#endif
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ struct oprofile_stat_struct {
|
||||
atomic_t sample_lost_no_mapping;
|
||||
atomic_t bt_lost_no_mapping;
|
||||
atomic_t event_lost_overflow;
|
||||
atomic_t multiplex_counter;
|
||||
};
|
||||
|
||||
extern struct oprofile_stat_struct oprofile_stats;
|
||||
|
Loading…
Reference in New Issue
Block a user