s390/diag: add a statistic for diagnose calls
Introduce /sys/debug/kernel/diag_stat with a statistic how many diagnose calls have been done by each CPU in the system. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
@@ -8,6 +8,42 @@
|
||||
#ifndef _ASM_S390_DIAG_H
|
||||
#define _ASM_S390_DIAG_H
|
||||
|
||||
#include <linux/percpu.h>
|
||||
|
||||
enum diag_stat_enum {
|
||||
DIAG_STAT_X008,
|
||||
DIAG_STAT_X00C,
|
||||
DIAG_STAT_X010,
|
||||
DIAG_STAT_X014,
|
||||
DIAG_STAT_X044,
|
||||
DIAG_STAT_X064,
|
||||
DIAG_STAT_X09C,
|
||||
DIAG_STAT_X0DC,
|
||||
DIAG_STAT_X204,
|
||||
DIAG_STAT_X210,
|
||||
DIAG_STAT_X224,
|
||||
DIAG_STAT_X250,
|
||||
DIAG_STAT_X258,
|
||||
DIAG_STAT_X288,
|
||||
DIAG_STAT_X2C4,
|
||||
DIAG_STAT_X2FC,
|
||||
DIAG_STAT_X304,
|
||||
DIAG_STAT_X308,
|
||||
DIAG_STAT_X500,
|
||||
NR_DIAG_STAT
|
||||
};
|
||||
|
||||
struct diag_stat {
|
||||
unsigned int counter[NR_DIAG_STAT];
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct diag_stat, diag_stat);
|
||||
|
||||
static inline void diag_stat_inc(enum diag_stat_enum nr)
|
||||
{
|
||||
this_cpu_inc(diag_stat.counter[nr]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Diagnose 10: Release page range
|
||||
*/
|
||||
@@ -18,6 +54,7 @@ static inline void diag10_range(unsigned long start_pfn, unsigned long num_pfn)
|
||||
start_addr = start_pfn << PAGE_SHIFT;
|
||||
end_addr = (start_pfn + num_pfn - 1) << PAGE_SHIFT;
|
||||
|
||||
diag_stat_inc(DIAG_STAT_X010);
|
||||
asm volatile(
|
||||
"0: diag %0,%1,0x10\n"
|
||||
"1:\n"
|
||||
|
Reference in New Issue
Block a user