diff options
author | Boris Ostrovsky <boris.ostrovsky@oracle.com> | 2015-08-10 16:34:33 -0400 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2015-08-20 07:24:26 -0400 |
commit | 5f141548824cebbff2e838ff401c34e667797467 (patch) | |
tree | 873166173fde6592bb01dbd90436ced58d8b7c06 /include/xen | |
parent | a11f4f0a4e18b4bdc7d5e36438711e038b7a1f74 (diff) |
xen/PMU: Sysfs interface for setting Xen PMU mode
Set Xen's PMU mode via /sys/hypervisor/pmu/pmu_mode. Add XENPMU hypercall.
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/interface/xen.h | 1 | ||||
-rw-r--r-- | include/xen/interface/xenpmu.h | 59 |
2 files changed, 60 insertions, 0 deletions
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h index 8194270edcf0..e9d4501d1f5e 100644 --- a/include/xen/interface/xen.h +++ b/include/xen/interface/xen.h | |||
@@ -80,6 +80,7 @@ | |||
80 | #define __HYPERVISOR_kexec_op 37 | 80 | #define __HYPERVISOR_kexec_op 37 |
81 | #define __HYPERVISOR_tmem_op 38 | 81 | #define __HYPERVISOR_tmem_op 38 |
82 | #define __HYPERVISOR_xc_reserved_op 39 /* reserved for XenClient */ | 82 | #define __HYPERVISOR_xc_reserved_op 39 /* reserved for XenClient */ |
83 | #define __HYPERVISOR_xenpmu_op 40 | ||
83 | 84 | ||
84 | /* Architecture-specific hypercall definitions. */ | 85 | /* Architecture-specific hypercall definitions. */ |
85 | #define __HYPERVISOR_arch_0 48 | 86 | #define __HYPERVISOR_arch_0 48 |
diff --git a/include/xen/interface/xenpmu.h b/include/xen/interface/xenpmu.h new file mode 100644 index 000000000000..eac1b498b89f --- /dev/null +++ b/include/xen/interface/xenpmu.h | |||
@@ -0,0 +1,59 @@ | |||
1 | #ifndef __XEN_PUBLIC_XENPMU_H__ | ||
2 | #define __XEN_PUBLIC_XENPMU_H__ | ||
3 | |||
4 | #include "xen.h" | ||
5 | |||
6 | #define XENPMU_VER_MAJ 0 | ||
7 | #define XENPMU_VER_MIN 1 | ||
8 | |||
9 | /* | ||
10 | * ` enum neg_errnoval | ||
11 | * ` HYPERVISOR_xenpmu_op(enum xenpmu_op cmd, struct xenpmu_params *args); | ||
12 | * | ||
13 | * @cmd == XENPMU_* (PMU operation) | ||
14 | * @args == struct xenpmu_params | ||
15 | */ | ||
16 | /* ` enum xenpmu_op { */ | ||
17 | #define XENPMU_mode_get 0 /* Also used for getting PMU version */ | ||
18 | #define XENPMU_mode_set 1 | ||
19 | #define XENPMU_feature_get 2 | ||
20 | #define XENPMU_feature_set 3 | ||
21 | #define XENPMU_init 4 | ||
22 | #define XENPMU_finish 5 | ||
23 | |||
24 | /* ` } */ | ||
25 | |||
26 | /* Parameters structure for HYPERVISOR_xenpmu_op call */ | ||
27 | struct xen_pmu_params { | ||
28 | /* IN/OUT parameters */ | ||
29 | struct { | ||
30 | uint32_t maj; | ||
31 | uint32_t min; | ||
32 | } version; | ||
33 | uint64_t val; | ||
34 | |||
35 | /* IN parameters */ | ||
36 | uint32_t vcpu; | ||
37 | uint32_t pad; | ||
38 | }; | ||
39 | |||
40 | /* PMU modes: | ||
41 | * - XENPMU_MODE_OFF: No PMU virtualization | ||
42 | * - XENPMU_MODE_SELF: Guests can profile themselves | ||
43 | * - XENPMU_MODE_HV: Guests can profile themselves, dom0 profiles | ||
44 | * itself and Xen | ||
45 | * - XENPMU_MODE_ALL: Only dom0 has access to VPMU and it profiles | ||
46 | * everyone: itself, the hypervisor and the guests. | ||
47 | */ | ||
48 | #define XENPMU_MODE_OFF 0 | ||
49 | #define XENPMU_MODE_SELF (1<<0) | ||
50 | #define XENPMU_MODE_HV (1<<1) | ||
51 | #define XENPMU_MODE_ALL (1<<2) | ||
52 | |||
53 | /* | ||
54 | * PMU features: | ||
55 | * - XENPMU_FEATURE_INTEL_BTS: Intel BTS support (ignored on AMD) | ||
56 | */ | ||
57 | #define XENPMU_FEATURE_INTEL_BTS 1 | ||
58 | |||
59 | #endif /* __XEN_PUBLIC_XENPMU_H__ */ | ||