Commit ea53e699 authored by Thomas Richter's avatar Thomas Richter Committed by Heiko Carstens

s390/cpum_cf: remove in-kernel counting facility interface

Commit 17bebcc6 ("s390/cpum_cf: Add minimal in-kernel interface for
counter measurements") introduced a small in-kernel interface for CPU
Measurement counter facility.
There are no users of this interface, therefore remove it.

The following functions are removed:
 kernel_cpumcf_alert(),
 kernel_cpumcf_begin(),
 kernel_cpumcf_end(),
 kernel_cpumcf_avail()
there is no need for them anymore.
With the removal of function kernel_cpumcf_alert(), also remove
member alert in struct cpu_cf_events. Its purpose was to counter
measurement alert interrupts for the in-kernel interface.
Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 7a8f09ac
...@@ -67,7 +67,6 @@ static inline int ctr_stcctm(enum cpumf_ctr_set set, u64 range, u64 *dest) ...@@ -67,7 +67,6 @@ static inline int ctr_stcctm(enum cpumf_ctr_set set, u64 range, u64 *dest)
struct cpu_cf_events { struct cpu_cf_events {
struct cpumf_ctr_info info; struct cpumf_ctr_info info;
atomic_t ctr_set[CPUMF_CTR_SET_MAX]; atomic_t ctr_set[CPUMF_CTR_SET_MAX];
atomic64_t alert;
u64 state; /* For perf_event_open SVC */ u64 state; /* For perf_event_open SVC */
u64 dev_state; /* For /dev/hwctr */ u64 dev_state; /* For /dev/hwctr */
unsigned int flags; unsigned int flags;
...@@ -80,25 +79,9 @@ struct cpu_cf_events { ...@@ -80,25 +79,9 @@ struct cpu_cf_events {
}; };
DECLARE_PER_CPU(struct cpu_cf_events, cpu_cf_events); DECLARE_PER_CPU(struct cpu_cf_events, cpu_cf_events);
bool kernel_cpumcf_avail(void);
int __kernel_cpumcf_begin(void); int __kernel_cpumcf_begin(void);
unsigned long kernel_cpumcf_alert(int clear);
void __kernel_cpumcf_end(void); void __kernel_cpumcf_end(void);
static inline int kernel_cpumcf_begin(void)
{
if (!cpum_cf_avail())
return -ENODEV;
preempt_disable();
return __kernel_cpumcf_begin();
}
static inline void kernel_cpumcf_end(void)
{
__kernel_cpumcf_end();
preempt_enable();
}
int cfset_online_cpu(unsigned int cpu); int cfset_online_cpu(unsigned int cpu);
int cfset_offline_cpu(unsigned int cpu); int cfset_offline_cpu(unsigned int cpu);
#endif /* _ASM_S390_CPU_MCF_H */ #endif /* _ASM_S390_CPU_MCF_H */
...@@ -832,7 +832,7 @@ static int __init cpumf_pmu_init(void) ...@@ -832,7 +832,7 @@ static int __init cpumf_pmu_init(void)
{ {
int rc; int rc;
if (!kernel_cpumcf_avail()) if (!cpum_cf_avail())
return -ENODEV; return -ENODEV;
/* Setup s390dbf facility */ /* Setup s390dbf facility */
......
...@@ -27,7 +27,6 @@ DEFINE_PER_CPU(struct cpu_cf_events, cpu_cf_events) = { ...@@ -27,7 +27,6 @@ DEFINE_PER_CPU(struct cpu_cf_events, cpu_cf_events) = {
[CPUMF_CTR_SET_EXT] = ATOMIC_INIT(0), [CPUMF_CTR_SET_EXT] = ATOMIC_INIT(0),
[CPUMF_CTR_SET_MT_DIAG] = ATOMIC_INIT(0), [CPUMF_CTR_SET_MT_DIAG] = ATOMIC_INIT(0),
}, },
.alert = ATOMIC64_INIT(0),
.state = 0, .state = 0,
.dev_state = 0, .dev_state = 0,
.flags = 0, .flags = 0,
...@@ -67,9 +66,6 @@ static void cpumf_measurement_alert(struct ext_code ext_code, ...@@ -67,9 +66,6 @@ static void cpumf_measurement_alert(struct ext_code ext_code,
if (alert & CPU_MF_INT_CF_MTDA) if (alert & CPU_MF_INT_CF_MTDA)
pr_warn("CPU[%i] MT counter data was lost\n", pr_warn("CPU[%i] MT counter data was lost\n",
smp_processor_id()); smp_processor_id());
/* store alert for special handling by in-kernel users */
atomic64_or(alert, &cpuhw->alert);
} }
#define PMC_INIT 0 #define PMC_INIT 0
...@@ -94,12 +90,6 @@ static void cpum_cf_setup_cpu(void *flags) ...@@ -94,12 +90,6 @@ static void cpum_cf_setup_cpu(void *flags)
lcctl(0); lcctl(0);
} }
bool kernel_cpumcf_avail(void)
{
return cpum_cf_initalized;
}
EXPORT_SYMBOL(kernel_cpumcf_avail);
/* Initialize the CPU-measurement counter facility */ /* Initialize the CPU-measurement counter facility */
int __kernel_cpumcf_begin(void) int __kernel_cpumcf_begin(void)
{ {
...@@ -112,20 +102,6 @@ int __kernel_cpumcf_begin(void) ...@@ -112,20 +102,6 @@ int __kernel_cpumcf_begin(void)
} }
EXPORT_SYMBOL(__kernel_cpumcf_begin); EXPORT_SYMBOL(__kernel_cpumcf_begin);
/* Obtain the CPU-measurement alerts for the counter facility */
unsigned long kernel_cpumcf_alert(int clear)
{
struct cpu_cf_events *cpuhw = this_cpu_ptr(&cpu_cf_events);
unsigned long alert;
alert = atomic64_read(&cpuhw->alert);
if (clear)
atomic64_set(&cpuhw->alert, 0);
return alert;
}
EXPORT_SYMBOL(kernel_cpumcf_alert);
/* Release the CPU-measurement counter facility */ /* Release the CPU-measurement counter facility */
void __kernel_cpumcf_end(void) void __kernel_cpumcf_end(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment