s390/cpu_mf: replace stcctm5() with the stcctm() function

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>
This commit is contained in:
Hendrik Brueckner 2018-08-29 18:12:17 +02:00 committed by Martin Schwidefsky
parent 778fb10ccc
commit 346d034d7f
2 changed files with 11 additions and 18 deletions

View 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)
{

View 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));
}
}