s390/cpum_cf: add ctr_stcctm() function
authorHendrik Brueckner <brueckner@linux.ibm.com>
Fri, 26 Oct 2018 07:48:29 +0000 (09:48 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 22 Feb 2019 08:19:55 +0000 (09:19 +0100)
Introduce the ctr_stcctm() function as wrapper function to extract counters
from a particular counter set.  Note that the counter set is part of the
stcctm instruction opcode, few indirections are necessary to specify the
counter set as variable.

Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/cpu_mcf.h

index 7121365..0c236d1 100644 (file)
@@ -49,6 +49,25 @@ static inline void ctr_set_stop(u64 *state, int ctr_set)
        *state &= ~(cpumf_ctr_ctl[ctr_set] << CPUMF_LCCTL_ACTCTL_SHIFT);
 }
 
+static inline int ctr_stcctm(enum cpumf_ctr_set set, u64 range, u64 *dest)
+{
+       switch (set) {
+       case CPUMF_CTR_SET_BASIC:
+               return stcctm(BASIC, range, dest);
+       case CPUMF_CTR_SET_USER:
+               return stcctm(PROBLEM_STATE, range, dest);
+       case CPUMF_CTR_SET_CRYPTO:
+               return stcctm(CRYPTO_ACTIVITY, range, dest);
+       case CPUMF_CTR_SET_EXT:
+               return stcctm(EXTENDED, range, dest);
+       case CPUMF_CTR_SET_MT_DIAG:
+               return stcctm(MT_DIAG_CLEARING, range, dest);
+       case CPUMF_CTR_SET_MAX:
+               return 3;
+       }
+       return 3;
+}
+
 struct cpu_cf_events {
        struct cpumf_ctr_info   info;
        atomic_t                ctr_set[CPUMF_CTR_SET_MAX];