Blob Blame History Raw
From: Hendrik Brueckner <brueckner@linux.ibm.com>
Date: Wed, 29 Aug 2018 18:12:17 +0200
Subject: s390/cpu_mf: replace stcctm5() with the stcctm() function
Git-commit: 346d034d7f13da9eb135458a2f6cf14c9b77a637
Patch-mainline: v5.1-rc1
References: jsc#SLE-6904 FATE#327581

Remove the stcctm5() function to extract counters from the MT-diagnostic
counter set with the stcctm() function.  For readability, introduce an
enum to map the counter sets names to respective numbers for the stcctm
instruction.

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_mf.h |   25 +++++++++----------------
 arch/s390/kernel/vtime.c       |    4 ++--
 2 files changed, 11 insertions(+), 18 deletions(-)

--- a/arch/s390/include/asm/cpu_mf.h
+++ b/arch/s390/include/asm/cpu_mf.h
@@ -203,7 +203,15 @@ static inline int ecctr(u64 ctr, u64 *va
 }
 
 /* Store CPU counter multiple for a particular counter set */
-static inline int stcctm(u8 set, u64 range, u64 *dest)
+enum stcctm_ctr_set {
+	EXTENDED = 0,
+	BASIC = 1,
+	PROBLEM_STATE = 2,
+	CRYPTO_ACTIVITY = 3,
+	MT_DIAG = 5,
+	MT_DIAG_CLEARING = 9,	/* clears loss-of-MT-ctr-data alert */
+};
+static inline int stcctm(enum stcctm_ctr_set set, u64 range, u64 *dest)
 {
 	int cc;
 
@@ -216,21 +224,6 @@ static inline int stcctm(u8 set, u64 ran
 		: "cc", "memory");
 	return cc;
 }
-
-/* Store CPU counter multiple for the MT utilization counter set */
-static inline int stcctm5(u64 num, u64 *val)
-{
-	int cc;
-
-	asm volatile (
-		"	.insn	rsy,0xeb0000000017,%2,5,%1\n"
-		"	ipm	%0\n"
-		"	srl	%0,28\n"
-		: "=d" (cc)
-		: "Q" (*val), "d" (num)
-		: "cc", "memory");
-	return cc;
-}
 
 /* Query sampling information */
 static inline int qsi(struct hws_qsi_info_block *info)
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -68,7 +68,7 @@ static void update_mt_scaling(void)
 	u64 delta, fac, mult, div;
 	int i;
 
-	stcctm5(smp_cpu_mtid + 1, cycles_new);
+	stcctm(MT_DIAG, smp_cpu_mtid + 1, cycles_new);
 	cycles_old = this_cpu_ptr(mt_cycles);
 	fac = 1;
 	mult = div = 0;
@@ -435,6 +435,6 @@ void vtime_init(void)
 		__this_cpu_write(mt_scaling_jiffies, jiffies);
 		__this_cpu_write(mt_scaling_mult, 1);
 		__this_cpu_write(mt_scaling_div, 1);
-		stcctm5(smp_cpu_mtid + 1, this_cpu_ptr(mt_cycles));
+		stcctm(MT_DIAG, smp_cpu_mtid + 1, this_cpu_ptr(mt_cycles));
 	}
 }