mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
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 <[email protected]>
This commit is contained in:
parent
acdc9fc9a8
commit
1ec2772e0c
19 changed files with 282 additions and 19 deletions
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <asm/dasd.h>
|
||||
#include <asm/debug.h>
|
||||
#include <asm/diag.h>
|
||||
#include <asm/ebcdic.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
|
|
@ -76,6 +77,7 @@ static inline int dia250(void *iob, int cmd)
|
|||
int rc;
|
||||
|
||||
rc = 3;
|
||||
diag_stat_inc(DIAG_STAT_X250);
|
||||
asm volatile(
|
||||
" diag 2,%2,0x250\n"
|
||||
"0: ipm %0\n"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/wait.h>
|
||||
#include <linux/string.h>
|
||||
#include <asm/ctl_reg.h>
|
||||
#include <asm/diag.h>
|
||||
|
||||
#include "hmcdrv_ftp.h"
|
||||
#include "diag_ftp.h"
|
||||
|
|
@ -102,6 +103,7 @@ static int diag_ftp_2c4(struct diag_ftp_ldfpl *fpl,
|
|||
{
|
||||
int rc;
|
||||
|
||||
diag_stat_inc(DIAG_STAT_X2C4);
|
||||
asm volatile(
|
||||
" diag %[addr],%[cmd],0x2c4\n"
|
||||
"0: j 2f\n"
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/io.h>
|
||||
#include <linux/kvm_para.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <asm/diag.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/cio.h>
|
||||
|
|
@ -366,9 +367,9 @@ static void virtio_ccw_drop_indicator(struct virtio_ccw_device *vcdev,
|
|||
kfree(thinint_area);
|
||||
}
|
||||
|
||||
static inline long do_kvm_notify(struct subchannel_id schid,
|
||||
unsigned long queue_index,
|
||||
long cookie)
|
||||
static inline long __do_kvm_notify(struct subchannel_id schid,
|
||||
unsigned long queue_index,
|
||||
long cookie)
|
||||
{
|
||||
register unsigned long __nr asm("1") = KVM_S390_VIRTIO_CCW_NOTIFY;
|
||||
register struct subchannel_id __schid asm("2") = schid;
|
||||
|
|
@ -383,6 +384,14 @@ static inline long do_kvm_notify(struct subchannel_id schid,
|
|||
return __rc;
|
||||
}
|
||||
|
||||
static inline long do_kvm_notify(struct subchannel_id schid,
|
||||
unsigned long queue_index,
|
||||
long cookie)
|
||||
{
|
||||
diag_stat_inc(DIAG_STAT_X500);
|
||||
return __do_kvm_notify(schid, queue_index, cookie);
|
||||
}
|
||||
|
||||
static bool virtio_ccw_kvm_notify(struct virtqueue *vq)
|
||||
{
|
||||
struct virtio_ccw_vq_info *info = vq->priv;
|
||||
|
|
|
|||
Loading…
Reference in a new issue