forked from Minki/linux
9e2b3e834c
Commit b24413180f
("License cleanup: add SPDX GPL-2.0 license
identifier to files with no license") was meant to do a tree-wide
cleanup for files without any license information by adding a SPDX
GPL-2.0 line to them.
Unfortunately this was applied even to several Xen-related headers
which have been originally under the MIT license, but obviously have
been copied to the Linux tree from the Xen project without keeping the
license boiler plate as required.
Correct that by changing the license of those files back to "MIT".
Some files still contain the MIT license text. Replace that by the
related SPDX line.
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Link: https://lore.kernel.org/r/20211015143312.29900-1-jgross@suse.com
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
96 lines
2.5 KiB
C
96 lines
2.5 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
#ifndef __XEN_PUBLIC_XENPMU_H__
|
|
#define __XEN_PUBLIC_XENPMU_H__
|
|
|
|
#include "xen.h"
|
|
|
|
#define XENPMU_VER_MAJ 0
|
|
#define XENPMU_VER_MIN 1
|
|
|
|
/*
|
|
* ` enum neg_errnoval
|
|
* ` HYPERVISOR_xenpmu_op(enum xenpmu_op cmd, struct xenpmu_params *args);
|
|
*
|
|
* @cmd == XENPMU_* (PMU operation)
|
|
* @args == struct xenpmu_params
|
|
*/
|
|
/* ` enum xenpmu_op { */
|
|
#define XENPMU_mode_get 0 /* Also used for getting PMU version */
|
|
#define XENPMU_mode_set 1
|
|
#define XENPMU_feature_get 2
|
|
#define XENPMU_feature_set 3
|
|
#define XENPMU_init 4
|
|
#define XENPMU_finish 5
|
|
#define XENPMU_lvtpc_set 6
|
|
#define XENPMU_flush 7
|
|
|
|
/* ` } */
|
|
|
|
/* Parameters structure for HYPERVISOR_xenpmu_op call */
|
|
struct xen_pmu_params {
|
|
/* IN/OUT parameters */
|
|
struct {
|
|
uint32_t maj;
|
|
uint32_t min;
|
|
} version;
|
|
uint64_t val;
|
|
|
|
/* IN parameters */
|
|
uint32_t vcpu;
|
|
uint32_t pad;
|
|
};
|
|
|
|
/* PMU modes:
|
|
* - XENPMU_MODE_OFF: No PMU virtualization
|
|
* - XENPMU_MODE_SELF: Guests can profile themselves
|
|
* - XENPMU_MODE_HV: Guests can profile themselves, dom0 profiles
|
|
* itself and Xen
|
|
* - XENPMU_MODE_ALL: Only dom0 has access to VPMU and it profiles
|
|
* everyone: itself, the hypervisor and the guests.
|
|
*/
|
|
#define XENPMU_MODE_OFF 0
|
|
#define XENPMU_MODE_SELF (1<<0)
|
|
#define XENPMU_MODE_HV (1<<1)
|
|
#define XENPMU_MODE_ALL (1<<2)
|
|
|
|
/*
|
|
* PMU features:
|
|
* - XENPMU_FEATURE_INTEL_BTS: Intel BTS support (ignored on AMD)
|
|
*/
|
|
#define XENPMU_FEATURE_INTEL_BTS 1
|
|
|
|
/*
|
|
* Shared PMU data between hypervisor and PV(H) domains.
|
|
*
|
|
* The hypervisor fills out this structure during PMU interrupt and sends an
|
|
* interrupt to appropriate VCPU.
|
|
* Architecture-independent fields of xen_pmu_data are WO for the hypervisor
|
|
* and RO for the guest but some fields in xen_pmu_arch can be writable
|
|
* by both the hypervisor and the guest (see arch-$arch/pmu.h).
|
|
*/
|
|
struct xen_pmu_data {
|
|
/* Interrupted VCPU */
|
|
uint32_t vcpu_id;
|
|
|
|
/*
|
|
* Physical processor on which the interrupt occurred. On non-privileged
|
|
* guests set to vcpu_id;
|
|
*/
|
|
uint32_t pcpu_id;
|
|
|
|
/*
|
|
* Domain that was interrupted. On non-privileged guests set to
|
|
* DOMID_SELF.
|
|
* On privileged guests can be DOMID_SELF, DOMID_XEN, or, when in
|
|
* XENPMU_MODE_ALL mode, domain ID of another domain.
|
|
*/
|
|
domid_t domain_id;
|
|
|
|
uint8_t pad[6];
|
|
|
|
/* Architecture-specific information */
|
|
struct xen_pmu_arch pmu;
|
|
};
|
|
|
|
#endif /* __XEN_PUBLIC_XENPMU_H__ */
|