Home Home > GIT Browse > SLE15-SP1
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Tesarik <ptesarik@suse.cz>2019-07-19 17:10:24 +0200
committerPetr Tesarik <ptesarik@suse.cz>2019-07-19 17:10:46 +0200
commitf8fb15886c3517c1c52e9b65d50958e85d51a777 (patch)
treef32435a4bd8d60e7d11ff995d4cc0520cc88240f
parent24386ec3994e8d30dc17a1ede6461f20132bbebf (diff)
s390/cpum_cf: move counter set controls to a new header file
(jsc#SLE-6904 FATE#327581).
-rw-r--r--patches.suse/s390-cpum_cf-move-counter-set-controls-to-a-new-header-file164
-rw-r--r--series.conf1
2 files changed, 165 insertions, 0 deletions
diff --git a/patches.suse/s390-cpum_cf-move-counter-set-controls-to-a-new-header-file b/patches.suse/s390-cpum_cf-move-counter-set-controls-to-a-new-header-file
new file mode 100644
index 0000000000..d77ed79594
--- /dev/null
+++ b/patches.suse/s390-cpum_cf-move-counter-set-controls-to-a-new-header-file
@@ -0,0 +1,164 @@
+From: Hendrik Brueckner <brueckner@linux.ibm.com>
+Date: Mon, 6 Aug 2018 15:56:43 +0200
+Subject: s390/cpum_cf: move counter set controls to a new header file
+Git-commit: 30e145f811428e1a96738fbc1f98ccc91f412d93
+Patch-mainline: v5.1-rc1
+References: jsc#SLE-6904 FATE#327581
+
+Move counter set specific controls and functions to the asm/cpu_mcf.h
+header file containg all counter facility support definitions. Also
+adapt few variable names and header file includes. No functional changes.
+
+[ ptesarik: Do not remove #include <asm/cpu_mf.h> from
+ arch/s390/include/asm/perf_event.h. It is still needed for struct
+ sf_raw_sample, because SLE15-SP1 does not contain commit
+ 3d43b981eb841a9493717e6d509f59553dbe8c7a ]
+
+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 | 52 +++++++++++++++++++++++++++++++++
+ arch/s390/kernel/perf_cpum_cf.c | 45 +---------------------------
+ arch/s390/kernel/perf_cpum_cf_events.c | 1
+ 3 files changed, 56 insertions(+), 42 deletions(-)
+
+--- /dev/null
++++ b/arch/s390/include/asm/cpu_mcf.h
+@@ -0,0 +1,52 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * Counter facility support definitions for the Linux perf
++ *
++ * Copyright IBM Corp. 2019
++ * Author(s): Hendrik Brueckner <brueckner@linux.ibm.com>
++ */
++#ifndef _ASM_S390_CPU_MCF_H
++#define _ASM_S390_CPU_MCF_H
++
++#include <linux/perf_event.h>
++#include <asm/cpu_mf.h>
++
++enum cpumf_ctr_set {
++ CPUMF_CTR_SET_BASIC = 0, /* Basic Counter Set */
++ CPUMF_CTR_SET_USER = 1, /* Problem-State Counter Set */
++ CPUMF_CTR_SET_CRYPTO = 2, /* Crypto-Activity Counter Set */
++ CPUMF_CTR_SET_EXT = 3, /* Extended Counter Set */
++ CPUMF_CTR_SET_MT_DIAG = 4, /* MT-diagnostic Counter Set */
++
++ /* Maximum number of counter sets */
++ CPUMF_CTR_SET_MAX,
++};
++
++#define CPUMF_LCCTL_ENABLE_SHIFT 16
++#define CPUMF_LCCTL_ACTCTL_SHIFT 0
++static const u64 cpumf_ctr_ctl[CPUMF_CTR_SET_MAX] = {
++ [CPUMF_CTR_SET_BASIC] = 0x02,
++ [CPUMF_CTR_SET_USER] = 0x04,
++ [CPUMF_CTR_SET_CRYPTO] = 0x08,
++ [CPUMF_CTR_SET_EXT] = 0x01,
++ [CPUMF_CTR_SET_MT_DIAG] = 0x20,
++};
++
++static inline void ctr_set_enable(u64 *state, int ctr_set)
++{
++ *state |= cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ENABLE_SHIFT;
++}
++static inline void ctr_set_disable(u64 *state, int ctr_set)
++{
++ *state &= ~(cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ENABLE_SHIFT);
++}
++static inline void ctr_set_start(u64 *state, int ctr_set)
++{
++ *state |= cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT;
++}
++static inline void ctr_set_stop(u64 *state, int ctr_set)
++{
++ *state &= ~(cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT);
++}
++
++#endif /* _ASM_S390_CPU_MCF_H */
+--- a/arch/s390/kernel/perf_cpum_cf.c
++++ b/arch/s390/kernel/perf_cpum_cf.c
+@@ -13,52 +13,13 @@
+
+ #include <linux/kernel.h>
+ #include <linux/kernel_stat.h>
+-#include <linux/perf_event.h>
+ #include <linux/percpu.h>
+ #include <linux/notifier.h>
+ #include <linux/init.h>
+ #include <linux/export.h>
+ #include <asm/ctl_reg.h>
+ #include <asm/irq.h>
+-#include <asm/cpu_mf.h>
+-
+-enum cpumf_ctr_set {
+- CPUMF_CTR_SET_BASIC = 0, /* Basic Counter Set */
+- CPUMF_CTR_SET_USER = 1, /* Problem-State Counter Set */
+- CPUMF_CTR_SET_CRYPTO = 2, /* Crypto-Activity Counter Set */
+- CPUMF_CTR_SET_EXT = 3, /* Extended Counter Set */
+- CPUMF_CTR_SET_MT_DIAG = 4, /* MT-diagnostic Counter Set */
+-
+- /* Maximum number of counter sets */
+- CPUMF_CTR_SET_MAX,
+-};
+-
+-#define CPUMF_LCCTL_ENABLE_SHIFT 16
+-#define CPUMF_LCCTL_ACTCTL_SHIFT 0
+-static const u64 cpumf_state_ctl[CPUMF_CTR_SET_MAX] = {
+- [CPUMF_CTR_SET_BASIC] = 0x02,
+- [CPUMF_CTR_SET_USER] = 0x04,
+- [CPUMF_CTR_SET_CRYPTO] = 0x08,
+- [CPUMF_CTR_SET_EXT] = 0x01,
+- [CPUMF_CTR_SET_MT_DIAG] = 0x20,
+-};
+-
+-static void ctr_set_enable(u64 *state, int ctr_set)
+-{
+- *state |= cpumf_state_ctl[ctr_set] << CPUMF_LCCTL_ENABLE_SHIFT;
+-}
+-static void ctr_set_disable(u64 *state, int ctr_set)
+-{
+- *state &= ~(cpumf_state_ctl[ctr_set] << CPUMF_LCCTL_ENABLE_SHIFT);
+-}
+-static void ctr_set_start(u64 *state, int ctr_set)
+-{
+- *state |= cpumf_state_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT;
+-}
+-static void ctr_set_stop(u64 *state, int ctr_set)
+-{
+- *state &= ~(cpumf_state_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT);
+-}
++#include <asm/cpu_mcf.h>
+
+ /* Local CPUMF event structure */
+ struct cpu_hw_events {
+@@ -138,7 +99,7 @@ static int validate_ctr_version(const st
+ * Thus, the counters can only be used if SMT is on and the
+ * counter set is enabled and active.
+ */
+- mtdiag_ctl = cpumf_state_ctl[CPUMF_CTR_SET_MT_DIAG];
++ mtdiag_ctl = cpumf_ctr_ctl[CPUMF_CTR_SET_MT_DIAG];
+ if (!((cpuhw->info.auth_ctl & mtdiag_ctl) &&
+ (cpuhw->info.enable_ctl & mtdiag_ctl) &&
+ (cpuhw->info.act_ctl & mtdiag_ctl)))
+@@ -163,7 +124,7 @@ static int validate_ctr_auth(const struc
+ * return with -ENOENT in order to fall back to other
+ * PMUs that might suffice the event request.
+ */
+- ctrs_state = cpumf_state_ctl[hwc->config_base];
++ ctrs_state = cpumf_ctr_ctl[hwc->config_base];
+ if (!(ctrs_state & cpuhw->info.auth_ctl))
+ err = -ENOENT;
+
+--- a/arch/s390/kernel/perf_cpum_cf_events.c
++++ b/arch/s390/kernel/perf_cpum_cf_events.c
+@@ -5,6 +5,7 @@
+
+ #include <linux/slab.h>
+ #include <linux/perf_event.h>
++#include <asm/cpu_mf.h>
+
+
+ /* BEGIN: CPUM_CF COUNTER DEFINITIONS =================================== */
diff --git a/series.conf b/series.conf
index 43bbb57a8b..19d6847953 100644
--- a/series.conf
+++ b/series.conf
@@ -45465,6 +45465,7 @@
patches.arch/s390-pci-map-iov-resources
patches.arch/s390-jump_label-Use-jdd-constraint-on-gcc9.patch
patches.arch/s390-ism-ignore-some-errors-during-deregistration
+ patches.suse/s390-cpum_cf-move-counter-set-controls-to-a-new-header-file
patches.fixes/0001-s390-vfio_ap-link-the-vfio_ap-devices-to-the-vfio_ap.patch
patches.drivers/clocksource-drivers-sun5i-Fail-gracefully-when-clock.patch
patches.drivers/clocksource-drivers-exynos_mct-Move-one-shot-check-f.patch