15f141548SBoris Ostrovsky #ifndef __XEN_PUBLIC_XENPMU_H__ 25f141548SBoris Ostrovsky #define __XEN_PUBLIC_XENPMU_H__ 35f141548SBoris Ostrovsky 45f141548SBoris Ostrovsky #include "xen.h" 55f141548SBoris Ostrovsky 65f141548SBoris Ostrovsky #define XENPMU_VER_MAJ 0 75f141548SBoris Ostrovsky #define XENPMU_VER_MIN 1 85f141548SBoris Ostrovsky 95f141548SBoris Ostrovsky /* 105f141548SBoris Ostrovsky * ` enum neg_errnoval 115f141548SBoris Ostrovsky * ` HYPERVISOR_xenpmu_op(enum xenpmu_op cmd, struct xenpmu_params *args); 125f141548SBoris Ostrovsky * 135f141548SBoris Ostrovsky * @cmd == XENPMU_* (PMU operation) 145f141548SBoris Ostrovsky * @args == struct xenpmu_params 155f141548SBoris Ostrovsky */ 165f141548SBoris Ostrovsky /* ` enum xenpmu_op { */ 175f141548SBoris Ostrovsky #define XENPMU_mode_get 0 /* Also used for getting PMU version */ 185f141548SBoris Ostrovsky #define XENPMU_mode_set 1 195f141548SBoris Ostrovsky #define XENPMU_feature_get 2 205f141548SBoris Ostrovsky #define XENPMU_feature_set 3 215f141548SBoris Ostrovsky #define XENPMU_init 4 225f141548SBoris Ostrovsky #define XENPMU_finish 5 235f141548SBoris Ostrovsky 245f141548SBoris Ostrovsky /* ` } */ 255f141548SBoris Ostrovsky 265f141548SBoris Ostrovsky /* Parameters structure for HYPERVISOR_xenpmu_op call */ 275f141548SBoris Ostrovsky struct xen_pmu_params { 285f141548SBoris Ostrovsky /* IN/OUT parameters */ 295f141548SBoris Ostrovsky struct { 305f141548SBoris Ostrovsky uint32_t maj; 315f141548SBoris Ostrovsky uint32_t min; 325f141548SBoris Ostrovsky } version; 335f141548SBoris Ostrovsky uint64_t val; 345f141548SBoris Ostrovsky 355f141548SBoris Ostrovsky /* IN parameters */ 365f141548SBoris Ostrovsky uint32_t vcpu; 375f141548SBoris Ostrovsky uint32_t pad; 385f141548SBoris Ostrovsky }; 395f141548SBoris Ostrovsky 405f141548SBoris Ostrovsky /* PMU modes: 415f141548SBoris Ostrovsky * - XENPMU_MODE_OFF: No PMU virtualization 425f141548SBoris Ostrovsky * - XENPMU_MODE_SELF: Guests can profile themselves 435f141548SBoris Ostrovsky * - XENPMU_MODE_HV: Guests can profile themselves, dom0 profiles 445f141548SBoris Ostrovsky * itself and Xen 455f141548SBoris Ostrovsky * - XENPMU_MODE_ALL: Only dom0 has access to VPMU and it profiles 465f141548SBoris Ostrovsky * everyone: itself, the hypervisor and the guests. 475f141548SBoris Ostrovsky */ 485f141548SBoris Ostrovsky #define XENPMU_MODE_OFF 0 495f141548SBoris Ostrovsky #define XENPMU_MODE_SELF (1<<0) 505f141548SBoris Ostrovsky #define XENPMU_MODE_HV (1<<1) 515f141548SBoris Ostrovsky #define XENPMU_MODE_ALL (1<<2) 525f141548SBoris Ostrovsky 535f141548SBoris Ostrovsky /* 545f141548SBoris Ostrovsky * PMU features: 555f141548SBoris Ostrovsky * - XENPMU_FEATURE_INTEL_BTS: Intel BTS support (ignored on AMD) 565f141548SBoris Ostrovsky */ 575f141548SBoris Ostrovsky #define XENPMU_FEATURE_INTEL_BTS 1 585f141548SBoris Ostrovsky 595f141548SBoris Ostrovsky #endif /* __XEN_PUBLIC_XENPMU_H__ */ 60