summaryrefslogtreecommitdiff
path: root/arch/s390/kvm/gmap/trace_gmap.h
blob: 1dce3ef3b0d9592867f4a39ca3f4146cd1f3b56f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* SPDX-License-Identifier: GPL-2.0 */
#if !defined(GMAP_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
#define GMAP_TRACE_KVM_H

#include <linux/tracepoint.h>

#undef UNPACK_KVM
#define UNPACK_KVM(name) name
#undef TRACE_SYSTEM
#define TRACE_SYSTEM UNPACK_KVM(KVM_DEV_NAME)
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH ../gmap
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace_gmap

#ifdef KVM_S390_ARM64
#define __KVM_FIELDS \
	__field(unsigned long, pstate) \
	__field(unsigned long, pc)
#define __KVM_ASSIGN ({\
	__entry->pstate = vcpu->arch.sae_block.pstate; \
	__entry->pc = vcpu->arch.sae_block.pc; \
	})
#define __KVM_PRINT \
	__entry->pstate, \
	__entry->pc
#else
#define __KVM_FIELDS \
	__field(unsigned long, pswmask) \
	__field(unsigned long, pswaddr)
#define __KVM_ASSIGN ({\
	__entry->pswmask = vcpu->arch.sie_block->gpsw.mask; \
	__entry->pswaddr = vcpu->arch.sie_block->gpsw.addr; \
	})
#define __KVM_PRINT \
	__entry->pswmask,\
	__entry->pswaddr
#endif

TRACE_EVENT(kvm_s390_major_guest_pfault,
	    TP_PROTO(struct kvm_vcpu *vcpu),
	    TP_ARGS(vcpu),

	    TP_STRUCT__entry(
		__field(int, id)
		__KVM_FIELDS
		),

	    TP_fast_assign(
		__entry->id = vcpu->vcpu_id;
		__KVM_ASSIGN
		),
	    TP_printk("%02d[%016lx-%016lx]: major fault, maybe applicable for pfault",
		__entry->id,
		__KVM_PRINT
		)
	    );

#endif /* GMAP_TRACE_KVM_H */

/* This part must be outside protection */
#include <trace/define_trace.h>