s390/cpu_mf: replace stcctm5() with the stcctm() function
authorHendrik Brueckner <brueckner@linux.ibm.com>
Wed, 29 Aug 2018 16:12:17 +0000 (18:12 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 22 Feb 2019 08:19:53 +0000 (09:19 +0100)
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>
arch/s390/include/asm/cpu_mf.h
arch/s390/kernel/vtime.c

index 53ba4f2..ae3e322 100644 (file)
@@ -212,7 +212,15 @@ static inline int ecctr(u64 ctr, u64 *val)
 }
 
 /* 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;
 
@@ -226,21 +234,6 @@ static inline int stcctm(u8 set, u64 range, u64 *dest)
        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)
 {
index f24395a..98f850e 100644 (file)
@@ -69,7 +69,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;
@@ -432,6 +432,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));
        }
 }