From: Hendrik Brueckner <brueckner@linux.ibm.com>
Date: Wed, 8 Aug 2018 10:12:22 +0200
Subject: s390/cpu_mf: move struct cpu_cf_events and per-CPU variable to header
file
Git-commit: f944bcdf5b8431c68be8bdd13259d27412e45c14
Patch-mainline: v5.1-rc1
References: jsc#SLE-6904 FATE#327581
Make the struct cpu_cf_events and the respective per-CPU variable available
to in-kernel users. Access to this per-CPU variable shall be done between
the calls to __kernel_cpumcf_begin() and __kernel_cpumcf_end().
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
arch/s390/include/asm/cpu_mcf.h | 9 +++++++++
arch/s390/kernel/perf_cpum_cf.c | 11 ++---------
2 files changed, 11 insertions(+), 9 deletions(-)
--- a/arch/s390/include/asm/cpu_mcf.h
+++ b/arch/s390/include/asm/cpu_mcf.h
@@ -49,6 +49,15 @@ static inline void ctr_set_stop(u64 *sta
*state &= ~(cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT);
}
+struct cpu_cf_events {
+ struct cpumf_ctr_info info;
+ atomic_t ctr_set[CPUMF_CTR_SET_MAX];
+ u64 state, tx_state;
+ unsigned int flags;
+ unsigned int txn_flags;
+};
+DECLARE_PER_CPU(struct cpu_cf_events, cpu_cf_events);
+
int __kernel_cpumcf_begin(void);
void __kernel_cpumcf_end(void);
--- a/arch/s390/kernel/perf_cpum_cf.c
+++ b/arch/s390/kernel/perf_cpum_cf.c
@@ -21,15 +21,8 @@
#include <asm/irq.h>
#include <asm/cpu_mcf.h>
-/* Local CPUMF event structure */
-struct cpu_cf_events {
- struct cpumf_ctr_info info;
- atomic_t ctr_set[CPUMF_CTR_SET_MAX];
- u64 state, tx_state;
- unsigned int flags;
- unsigned int txn_flags;
-};
-static DEFINE_PER_CPU(struct cpu_cf_events, cpu_cf_events) = {
+/* Per-CPU event structure for the counter facility */
+DEFINE_PER_CPU(struct cpu_cf_events, cpu_cf_events) = {
.ctr_set = {
[CPUMF_CTR_SET_BASIC] = ATOMIC_INIT(0),
[CPUMF_CTR_SET_USER] = ATOMIC_INIT(0),