mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
public/domctl: drop unnecessary typedefs and handles
By virtue of the struct xen_domctl container structure, most of them are really just cluttering the name space. While doing so, - convert an enum typed (pt_irq_type_t) structure field to a fixed width type, - make x86's paging_domctl() and descendants take a properly typed handle, - add const in a few places. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Razvan Cojocaru <rcojocaru@bitdefender.com> Acked-by: Dario Faggioli <dario.faggioli@citrix.com> Acked-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Meng Xu <mengxu@cis.upenn.edu> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Julien Grall <julien.grall@arm.com> Acked-by: George Dunlap <george.dunlap@citrix.com> Acked-by: Tamas K Lengyel <tamas@tklengyel.com>
This commit is contained in:
1 parent
3c6d3b9a93
commit
c47431f6ac
20 files changed
+68
-160
No files matched your search
@@ -903,7 +903,7 @@ int xc_vcpu_get_extstate(xc_interface *xch,
|
||||
uint32_t vcpu,
|
||||
xc_vcpu_extstate_t *extstate);
|
||||
|
||||
typedef xen_domctl_getvcpuinfo_t xc_vcpuinfo_t;
|
||||
typedef struct xen_domctl_getvcpuinfo xc_vcpuinfo_t;
|
||||
int xc_vcpu_getinfo(xc_interface *xch,
|
||||
uint32_t domid,
|
||||
uint32_t vcpu,
|
||||
@@ -916,7 +916,7 @@ long long xc_domain_get_cpu_usage(xc_interface *xch,
|
||||
int xc_domain_sethandle(xc_interface *xch, uint32_t domid,
|
||||
xen_domain_handle_t handle);
|
||||
|
||||
typedef xen_domctl_shadow_op_stats_t xc_shadow_op_stats_t;
|
||||
typedef struct xen_domctl_shadow_op_stats xc_shadow_op_stats_t;
|
||||
int xc_shadow_control(xc_interface *xch,
|
||||
uint32_t domid,
|
||||
unsigned int sop,
|
||||
|
||||
@@ -1714,8 +1714,7 @@ int xc_domain_update_msi_irq(
|
||||
uint64_t gtable)
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t *bind;
|
||||
|
||||
struct xen_domctl_bind_pt_irq *bind;
|
||||
DECLARE_DOMCTL;
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_bind_pt_irq;
|
||||
@@ -1740,8 +1739,7 @@ int xc_domain_unbind_msi_irq(
|
||||
uint32_t gflags)
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t *bind;
|
||||
|
||||
struct xen_domctl_bind_pt_irq *bind;
|
||||
DECLARE_DOMCTL;
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_unbind_pt_irq;
|
||||
@@ -1770,7 +1768,7 @@ static int xc_domain_bind_pt_irq_int(
|
||||
uint16_t spi)
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t * bind;
|
||||
struct xen_domctl_bind_pt_irq *bind;
|
||||
DECLARE_DOMCTL;
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_bind_pt_irq;
|
||||
@@ -1828,7 +1826,7 @@ static int xc_domain_unbind_pt_irq_int(
|
||||
uint8_t spi)
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t * bind;
|
||||
struct xen_domctl_bind_pt_irq *bind;
|
||||
DECLARE_DOMCTL;
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_unbind_pt_irq;
|
||||
|
||||
@@ -41,7 +41,7 @@ long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
|
||||
case XEN_DOMCTL_bind_pt_irq:
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t *bind = &domctl->u.bind_pt_irq;
|
||||
struct xen_domctl_bind_pt_irq *bind = &domctl->u.bind_pt_irq;
|
||||
uint32_t irq = bind->u.spi.spi;
|
||||
uint32_t virq = bind->machine_irq;
|
||||
|
||||
@@ -87,7 +87,7 @@ long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
|
||||
case XEN_DOMCTL_unbind_pt_irq:
|
||||
{
|
||||
int rc;
|
||||
xen_domctl_bind_pt_irq_t *bind = &domctl->u.bind_pt_irq;
|
||||
struct xen_domctl_bind_pt_irq *bind = &domctl->u.bind_pt_irq;
|
||||
uint32_t irq = bind->u.spi.spi;
|
||||
uint32_t virq = bind->machine_irq;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
|
||||
}
|
||||
|
||||
static int update_domain_cpuid_info(struct domain *d,
|
||||
const xen_domctl_cpuid_t *ctl)
|
||||
const struct xen_domctl_cpuid *ctl)
|
||||
{
|
||||
struct cpuid_policy *p = d->arch.cpuid;
|
||||
const struct cpuid_leaf leaf = { ctl->eax, ctl->ebx, ctl->ecx, ctl->edx };
|
||||
@@ -363,8 +363,7 @@ long arch_do_domctl(
|
||||
{
|
||||
|
||||
case XEN_DOMCTL_shadow_op:
|
||||
ret = paging_domctl(d, &domctl->u.shadow_op,
|
||||
guest_handle_cast(u_domctl, void), 0);
|
||||
ret = paging_domctl(d, &domctl->u.shadow_op, u_domctl, 0);
|
||||
if ( ret == -ERESTART )
|
||||
return hypercall_create_continuation(__HYPERVISOR_arch_1,
|
||||
"h", u_domctl);
|
||||
@@ -707,7 +706,7 @@ long arch_do_domctl(
|
||||
|
||||
case XEN_DOMCTL_bind_pt_irq:
|
||||
{
|
||||
xen_domctl_bind_pt_irq_t *bind = &domctl->u.bind_pt_irq;
|
||||
struct xen_domctl_bind_pt_irq *bind = &domctl->u.bind_pt_irq;
|
||||
int irq;
|
||||
|
||||
ret = -EINVAL;
|
||||
@@ -738,7 +737,7 @@ long arch_do_domctl(
|
||||
|
||||
case XEN_DOMCTL_unbind_pt_irq:
|
||||
{
|
||||
xen_domctl_bind_pt_irq_t *bind = &domctl->u.bind_pt_irq;
|
||||
struct xen_domctl_bind_pt_irq *bind = &domctl->u.bind_pt_irq;
|
||||
int irq = domain_pirq_to_irq(d, bind->machine_irq);
|
||||
|
||||
ret = -EPERM;
|
||||
|
||||
@@ -162,7 +162,7 @@ static int vioapic_hwdom_map_gsi(unsigned int gsi, unsigned int trig,
|
||||
unsigned int pol)
|
||||
{
|
||||
struct domain *currd = current->domain;
|
||||
xen_domctl_bind_pt_irq_t pt_irq_bind = {
|
||||
struct xen_domctl_bind_pt_irq pt_irq_bind = {
|
||||
.irq_type = PT_IRQ_TYPE_PCI,
|
||||
.machine_irq = gsi,
|
||||
};
|
||||
|
||||
@@ -608,8 +608,8 @@ out:
|
||||
paging_unlock(d);
|
||||
}
|
||||
|
||||
int hap_domctl(struct domain *d, xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl)
|
||||
int hap_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
|
||||
{
|
||||
int rc;
|
||||
bool preempted = false;
|
||||
|
||||
@@ -1606,7 +1606,7 @@ out:
|
||||
return rc;
|
||||
}
|
||||
|
||||
int mem_sharing_domctl(struct domain *d, xen_domctl_mem_sharing_op_t *mec)
|
||||
int mem_sharing_domctl(struct domain *d, struct xen_domctl_mem_sharing_op *mec)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
||||
@@ -674,8 +674,9 @@ void paging_vcpu_init(struct vcpu *v)
|
||||
}
|
||||
|
||||
|
||||
int paging_domctl(struct domain *d, xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl, bool_t resuming)
|
||||
int paging_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl,
|
||||
bool_t resuming)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -775,8 +776,7 @@ long paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
|
||||
{
|
||||
if ( domctl_lock_acquire() )
|
||||
{
|
||||
ret = paging_domctl(d, &op.u.shadow_op,
|
||||
guest_handle_cast(u_domctl, void), 1);
|
||||
ret = paging_domctl(d, &op.u.shadow_op, u_domctl, 1);
|
||||
|
||||
domctl_lock_release();
|
||||
}
|
||||
|
||||
@@ -3809,8 +3809,8 @@ out:
|
||||
/* Shadow-control XEN_DOMCTL dispatcher */
|
||||
|
||||
int shadow_domctl(struct domain *d,
|
||||
xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl)
|
||||
struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
|
||||
{
|
||||
int rc;
|
||||
bool preempted = false;
|
||||
|
||||
+2
-2
@@ -244,7 +244,7 @@ void domctl_lock_release(void)
|
||||
}
|
||||
|
||||
static inline
|
||||
int vcpuaffinity_params_invalid(const xen_domctl_vcpuaffinity_t *vcpuaff)
|
||||
int vcpuaffinity_params_invalid(const struct xen_domctl_vcpuaffinity *vcpuaff)
|
||||
{
|
||||
return vcpuaff->flags == 0 ||
|
||||
((vcpuaff->flags & XEN_VCPUAFFINITY_HARD) &&
|
||||
@@ -691,7 +691,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
|
||||
case XEN_DOMCTL_getvcpuaffinity:
|
||||
{
|
||||
struct vcpu *v;
|
||||
xen_domctl_vcpuaffinity_t *vcpuaff = &op->u.vcpuaffinity;
|
||||
struct xen_domctl_vcpuaffinity *vcpuaff = &op->u.vcpuaffinity;
|
||||
|
||||
ret = -EINVAL;
|
||||
if ( vcpuaff->vcpu >= d->max_vcpus )
|
||||
|
||||
@@ -1345,7 +1345,7 @@ rt_dom_cntl(
|
||||
struct vcpu *v;
|
||||
unsigned long flags;
|
||||
int rc = 0;
|
||||
xen_domctl_schedparam_vcpu_t local_sched;
|
||||
struct xen_domctl_schedparam_vcpu local_sched;
|
||||
s_time_t period, budget;
|
||||
uint32_t index = 0;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
static int vm_event_enable(
|
||||
struct domain *d,
|
||||
xen_domctl_vm_event_op_t *vec,
|
||||
struct xen_domctl_vm_event_op *vec,
|
||||
struct vm_event_domain **ved,
|
||||
int pause_flag,
|
||||
int param,
|
||||
@@ -587,7 +587,7 @@ void vm_event_cleanup(struct domain *d)
|
||||
#endif
|
||||
}
|
||||
|
||||
int vm_event_domctl(struct domain *d, xen_domctl_vm_event_op_t *vec,
|
||||
int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -276,7 +276,7 @@ static struct vcpu *vector_hashing_dest(const struct domain *d,
|
||||
}
|
||||
|
||||
int pt_irq_create_bind(
|
||||
struct domain *d, xen_domctl_bind_pt_irq_t *pt_irq_bind)
|
||||
struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
|
||||
{
|
||||
struct hvm_irq_dpci *hvm_irq_dpci;
|
||||
struct hvm_pirq_dpci *pirq_dpci;
|
||||
@@ -620,7 +620,7 @@ int pt_irq_create_bind(
|
||||
}
|
||||
|
||||
int pt_irq_destroy_bind(
|
||||
struct domain *d, xen_domctl_bind_pt_irq_t *pt_irq_bind)
|
||||
struct domain *d, const struct xen_domctl_bind_pt_irq *pt_irq_bind)
|
||||
{
|
||||
struct hvm_irq_dpci *hvm_irq_dpci;
|
||||
struct hvm_pirq_dpci *pirq_dpci;
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
/* hap domain level functions */
|
||||
/************************************************/
|
||||
void hap_domain_init(struct domain *d);
|
||||
int hap_domctl(struct domain *d, xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl);
|
||||
int hap_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
|
||||
int hap_enable(struct domain *d, u32 mode);
|
||||
void hap_final_teardown(struct domain *d);
|
||||
void hap_teardown(struct domain *d, bool *preempted);
|
||||
|
||||
@@ -87,7 +87,7 @@ int mem_sharing_notify_enomem(struct domain *d, unsigned long gfn,
|
||||
bool_t allow_sleep);
|
||||
int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg);
|
||||
int mem_sharing_domctl(struct domain *d,
|
||||
xen_domctl_mem_sharing_op_t *mec);
|
||||
struct xen_domctl_mem_sharing_op *mec);
|
||||
void mem_sharing_init(void);
|
||||
|
||||
/* Scans the p2m and relinquishes any shared pages, destroying
|
||||
|
||||
@@ -202,8 +202,9 @@ int paging_domain_init(struct domain *d, unsigned int domcr_flags);
|
||||
/* Handler for paging-control ops: operations from user-space to enable
|
||||
* and disable ephemeral shadow modes (test mode and log-dirty mode) and
|
||||
* manipulate the log-dirty bitmap. */
|
||||
int paging_domctl(struct domain *d, xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl, bool_t resuming);
|
||||
int paging_domctl(struct domain *d, struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl,
|
||||
bool_t resuming);
|
||||
|
||||
/* Helper hypercall for dealing with continuations. */
|
||||
long paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl_t));
|
||||
|
||||
@@ -69,8 +69,8 @@ int shadow_track_dirty_vram(struct domain *d,
|
||||
* and disable ephemeral shadow modes (test mode and log-dirty mode) and
|
||||
* manipulate the log-dirty bitmap. */
|
||||
int shadow_domctl(struct domain *d,
|
||||
xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl);
|
||||
struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
|
||||
|
||||
/* Call when destroying a domain */
|
||||
void shadow_teardown(struct domain *d, bool *preempted);
|
||||
@@ -106,8 +106,9 @@ static inline void sh_remove_shadows(struct domain *d, mfn_t gmfn,
|
||||
|
||||
static inline void shadow_blow_tables_per_domain(struct domain *d) {}
|
||||
|
||||
static inline int shadow_domctl(struct domain *d, xen_domctl_shadow_op_t *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl)
|
||||
static inline int shadow_domctl(struct domain *d,
|
||||
struct xen_domctl_shadow_op *sc,
|
||||
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
+25
-116
@@ -66,8 +66,6 @@ struct xen_domctl_createdomain {
|
||||
uint32_t flags;
|
||||
struct xen_arch_domainconfig config;
|
||||
};
|
||||
typedef struct xen_domctl_createdomain xen_domctl_createdomain_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_createdomain_t);
|
||||
|
||||
/* XEN_DOMCTL_getdomaininfo */
|
||||
struct xen_domctl_getdomaininfo {
|
||||
@@ -133,8 +131,6 @@ struct xen_domctl_getmemlist {
|
||||
/* OUT variables. */
|
||||
uint64_aligned_t num_pfns;
|
||||
};
|
||||
typedef struct xen_domctl_getmemlist xen_domctl_getmemlist_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_getmemlist_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_getpageframeinfo */
|
||||
@@ -225,8 +221,6 @@ struct xen_domctl_shadow_op_stats {
|
||||
uint32_t fault_count;
|
||||
uint32_t dirty_count;
|
||||
};
|
||||
typedef struct xen_domctl_shadow_op_stats xen_domctl_shadow_op_stats_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_shadow_op_stats_t);
|
||||
|
||||
struct xen_domctl_shadow_op {
|
||||
/* IN variables. */
|
||||
@@ -244,8 +238,6 @@ struct xen_domctl_shadow_op {
|
||||
uint64_aligned_t pages; /* Size of buffer. Updated with actual size. */
|
||||
struct xen_domctl_shadow_op_stats stats;
|
||||
};
|
||||
typedef struct xen_domctl_shadow_op xen_domctl_shadow_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_shadow_op_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_max_mem */
|
||||
@@ -253,8 +245,6 @@ struct xen_domctl_max_mem {
|
||||
/* IN variables. */
|
||||
uint64_aligned_t max_memkb;
|
||||
};
|
||||
typedef struct xen_domctl_max_mem xen_domctl_max_mem_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_mem_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_setvcpucontext */
|
||||
@@ -263,8 +253,6 @@ struct xen_domctl_vcpucontext {
|
||||
uint32_t vcpu; /* IN */
|
||||
XEN_GUEST_HANDLE_64(vcpu_guest_context_t) ctxt; /* IN/OUT */
|
||||
};
|
||||
typedef struct xen_domctl_vcpucontext xen_domctl_vcpucontext_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpucontext_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_getvcpuinfo */
|
||||
@@ -278,8 +266,6 @@ struct xen_domctl_getvcpuinfo {
|
||||
uint64_aligned_t cpu_time; /* total cpu time consumed (ns) */
|
||||
uint32_t cpu; /* current mapping */
|
||||
};
|
||||
typedef struct xen_domctl_getvcpuinfo xen_domctl_getvcpuinfo_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_getvcpuinfo_t);
|
||||
|
||||
|
||||
/* Get/set the NUMA node(s) with which the guest has affinity with. */
|
||||
@@ -288,8 +274,6 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_getvcpuinfo_t);
|
||||
struct xen_domctl_nodeaffinity {
|
||||
struct xenctl_bitmap nodemap;/* IN */
|
||||
};
|
||||
typedef struct xen_domctl_nodeaffinity xen_domctl_nodeaffinity_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_nodeaffinity_t);
|
||||
|
||||
|
||||
/* Get/set which physical cpus a vcpu can execute on. */
|
||||
@@ -327,16 +311,12 @@ struct xen_domctl_vcpuaffinity {
|
||||
struct xenctl_bitmap cpumap_hard;
|
||||
struct xenctl_bitmap cpumap_soft;
|
||||
};
|
||||
typedef struct xen_domctl_vcpuaffinity xen_domctl_vcpuaffinity_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpuaffinity_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_max_vcpus */
|
||||
struct xen_domctl_max_vcpus {
|
||||
uint32_t max; /* maximum number of vcpus */
|
||||
};
|
||||
typedef struct xen_domctl_max_vcpus xen_domctl_max_vcpus_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_vcpus_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_scheduler_op */
|
||||
@@ -348,25 +328,25 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_vcpus_t);
|
||||
#define XEN_SCHEDULER_RTDS 8
|
||||
#define XEN_SCHEDULER_NULL 9
|
||||
|
||||
typedef struct xen_domctl_sched_credit {
|
||||
struct xen_domctl_sched_credit {
|
||||
uint16_t weight;
|
||||
uint16_t cap;
|
||||
} xen_domctl_sched_credit_t;
|
||||
};
|
||||
|
||||
typedef struct xen_domctl_sched_credit2 {
|
||||
struct xen_domctl_sched_credit2 {
|
||||
uint16_t weight;
|
||||
} xen_domctl_sched_credit2_t;
|
||||
};
|
||||
|
||||
typedef struct xen_domctl_sched_rtds {
|
||||
struct xen_domctl_sched_rtds {
|
||||
uint32_t period;
|
||||
uint32_t budget;
|
||||
} xen_domctl_sched_rtds_t;
|
||||
};
|
||||
|
||||
typedef struct xen_domctl_schedparam_vcpu {
|
||||
union {
|
||||
xen_domctl_sched_credit_t credit;
|
||||
xen_domctl_sched_credit2_t credit2;
|
||||
xen_domctl_sched_rtds_t rtds;
|
||||
struct xen_domctl_sched_credit credit;
|
||||
struct xen_domctl_sched_credit2 credit2;
|
||||
struct xen_domctl_sched_rtds rtds;
|
||||
} u;
|
||||
uint32_t vcpuid;
|
||||
} xen_domctl_schedparam_vcpu_t;
|
||||
@@ -393,9 +373,9 @@ struct xen_domctl_scheduler_op {
|
||||
uint32_t cmd; /* XEN_DOMCTL_SCHEDOP_* */
|
||||
/* IN/OUT */
|
||||
union {
|
||||
xen_domctl_sched_credit_t credit;
|
||||
xen_domctl_sched_credit2_t credit2;
|
||||
xen_domctl_sched_rtds_t rtds;
|
||||
struct xen_domctl_sched_credit credit;
|
||||
struct xen_domctl_sched_credit2 credit2;
|
||||
struct xen_domctl_sched_rtds rtds;
|
||||
struct {
|
||||
XEN_GUEST_HANDLE_64(xen_domctl_schedparam_vcpu_t) vcpus;
|
||||
/*
|
||||
@@ -407,24 +387,18 @@ struct xen_domctl_scheduler_op {
|
||||
} v;
|
||||
} u;
|
||||
};
|
||||
typedef struct xen_domctl_scheduler_op xen_domctl_scheduler_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_scheduler_op_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_setdomainhandle */
|
||||
struct xen_domctl_setdomainhandle {
|
||||
xen_domain_handle_t handle;
|
||||
};
|
||||
typedef struct xen_domctl_setdomainhandle xen_domctl_setdomainhandle_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_setdomainhandle_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_setdebugging */
|
||||
struct xen_domctl_setdebugging {
|
||||
uint8_t enable;
|
||||
};
|
||||
typedef struct xen_domctl_setdebugging xen_domctl_setdebugging_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_setdebugging_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_irq_permission */
|
||||
@@ -432,8 +406,6 @@ struct xen_domctl_irq_permission {
|
||||
uint8_t pirq;
|
||||
uint8_t allow_access; /* flag to specify enable/disable of IRQ access */
|
||||
};
|
||||
typedef struct xen_domctl_irq_permission xen_domctl_irq_permission_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_irq_permission_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_iomem_permission */
|
||||
@@ -442,8 +414,6 @@ struct xen_domctl_iomem_permission {
|
||||
uint64_aligned_t nr_mfns; /* number of pages in range (>0) */
|
||||
uint8_t allow_access; /* allow (!0) or deny (0) access to range? */
|
||||
};
|
||||
typedef struct xen_domctl_iomem_permission xen_domctl_iomem_permission_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_iomem_permission_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_ioport_permission */
|
||||
@@ -452,42 +422,34 @@ struct xen_domctl_ioport_permission {
|
||||
uint32_t nr_ports; /* size of port range */
|
||||
uint8_t allow_access; /* allow or deny access to range? */
|
||||
};
|
||||
typedef struct xen_domctl_ioport_permission xen_domctl_ioport_permission_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_ioport_permission_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_hypercall_init */
|
||||
struct xen_domctl_hypercall_init {
|
||||
uint64_aligned_t gmfn; /* GMFN to be initialised */
|
||||
};
|
||||
typedef struct xen_domctl_hypercall_init xen_domctl_hypercall_init_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_hypercall_init_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_settimeoffset */
|
||||
struct xen_domctl_settimeoffset {
|
||||
int64_aligned_t time_offset_seconds; /* applied to domain wallclock time */
|
||||
};
|
||||
typedef struct xen_domctl_settimeoffset xen_domctl_settimeoffset_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_settimeoffset_t);
|
||||
|
||||
/* XEN_DOMCTL_gethvmcontext */
|
||||
/* XEN_DOMCTL_sethvmcontext */
|
||||
typedef struct xen_domctl_hvmcontext {
|
||||
struct xen_domctl_hvmcontext {
|
||||
uint32_t size; /* IN/OUT: size of buffer / bytes filled */
|
||||
XEN_GUEST_HANDLE_64(uint8) buffer; /* IN/OUT: data, or call
|
||||
* gethvmcontext with NULL
|
||||
* buffer to get size req'd */
|
||||
} xen_domctl_hvmcontext_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_hvmcontext_t);
|
||||
};
|
||||
|
||||
|
||||
/* XEN_DOMCTL_set_address_size */
|
||||
/* XEN_DOMCTL_get_address_size */
|
||||
typedef struct xen_domctl_address_size {
|
||||
struct xen_domctl_address_size {
|
||||
uint32_t size;
|
||||
} xen_domctl_address_size_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_address_size_t);
|
||||
};
|
||||
|
||||
|
||||
/* XEN_DOMCTL_sendtrigger */
|
||||
@@ -500,8 +462,6 @@ struct xen_domctl_sendtrigger {
|
||||
uint32_t trigger; /* IN */
|
||||
uint32_t vcpu; /* IN */
|
||||
};
|
||||
typedef struct xen_domctl_sendtrigger xen_domctl_sendtrigger_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_sendtrigger_t);
|
||||
|
||||
|
||||
/* Assign a device to a guest. Sets up IOMMU structures. */
|
||||
@@ -536,8 +496,6 @@ struct xen_domctl_assign_device {
|
||||
} dt;
|
||||
} u;
|
||||
};
|
||||
typedef struct xen_domctl_assign_device xen_domctl_assign_device_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_assign_device_t);
|
||||
|
||||
/* Retrieve sibling devices infomation of machine_sbdf */
|
||||
/* XEN_DOMCTL_get_device_group */
|
||||
@@ -547,22 +505,20 @@ struct xen_domctl_get_device_group {
|
||||
uint32_t num_sdevs; /* OUT */
|
||||
XEN_GUEST_HANDLE_64(uint32) sdev_array; /* OUT */
|
||||
};
|
||||
typedef struct xen_domctl_get_device_group xen_domctl_get_device_group_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_get_device_group_t);
|
||||
|
||||
/* Pass-through interrupts: bind real irq -> hvm devfn. */
|
||||
/* XEN_DOMCTL_bind_pt_irq */
|
||||
/* XEN_DOMCTL_unbind_pt_irq */
|
||||
typedef enum pt_irq_type_e {
|
||||
enum pt_irq_type {
|
||||
PT_IRQ_TYPE_PCI,
|
||||
PT_IRQ_TYPE_ISA,
|
||||
PT_IRQ_TYPE_MSI,
|
||||
PT_IRQ_TYPE_MSI_TRANSLATE,
|
||||
PT_IRQ_TYPE_SPI, /* ARM: valid range 32-1019 */
|
||||
} pt_irq_type_t;
|
||||
};
|
||||
struct xen_domctl_bind_pt_irq {
|
||||
uint32_t machine_irq;
|
||||
pt_irq_type_t irq_type;
|
||||
uint32_t irq_type; /* enum pt_irq_type */
|
||||
|
||||
union {
|
||||
struct {
|
||||
@@ -590,8 +546,6 @@ struct xen_domctl_bind_pt_irq {
|
||||
} spi;
|
||||
} u;
|
||||
};
|
||||
typedef struct xen_domctl_bind_pt_irq xen_domctl_bind_pt_irq_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_bind_pt_irq_t);
|
||||
|
||||
|
||||
/* Bind machine I/O address range -> HVM address range. */
|
||||
@@ -613,8 +567,6 @@ struct xen_domctl_memory_mapping {
|
||||
uint32_t add_mapping; /* add or remove mapping */
|
||||
uint32_t padding; /* padding for 64-bit aligned structure */
|
||||
};
|
||||
typedef struct xen_domctl_memory_mapping xen_domctl_memory_mapping_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_memory_mapping_t);
|
||||
|
||||
|
||||
/* Bind machine I/O port range -> HVM I/O port range. */
|
||||
@@ -625,8 +577,6 @@ struct xen_domctl_ioport_mapping {
|
||||
uint32_t nr_ports; /* size of port range */
|
||||
uint32_t add_mapping; /* add or remove mapping */
|
||||
};
|
||||
typedef struct xen_domctl_ioport_mapping xen_domctl_ioport_mapping_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_ioport_mapping_t);
|
||||
|
||||
|
||||
/*
|
||||
@@ -645,8 +595,6 @@ struct xen_domctl_pin_mem_cacheattr {
|
||||
uint64_aligned_t start, end;
|
||||
uint32_t type; /* XEN_DOMCTL_MEM_CACHEATTR_* */
|
||||
};
|
||||
typedef struct xen_domctl_pin_mem_cacheattr xen_domctl_pin_mem_cacheattr_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_pin_mem_cacheattr_t);
|
||||
|
||||
|
||||
/* XEN_DOMCTL_set_ext_vcpucontext */
|
||||
@@ -678,8 +626,6 @@ struct xen_domctl_ext_vcpucontext {
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
typedef struct xen_domctl_ext_vcpucontext xen_domctl_ext_vcpucontext_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_ext_vcpucontext_t);
|
||||
|
||||
/*
|
||||
* Set the target domain for a domain
|
||||
@@ -688,8 +634,6 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_ext_vcpucontext_t);
|
||||
struct xen_domctl_set_target {
|
||||
domid_t target;
|
||||
};
|
||||
typedef struct xen_domctl_set_target xen_domctl_set_target_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_target_t);
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
# define XEN_CPUID_INPUT_UNUSED 0xFFFFFFFF
|
||||
@@ -701,8 +645,6 @@ struct xen_domctl_cpuid {
|
||||
uint32_t ecx;
|
||||
uint32_t edx;
|
||||
};
|
||||
typedef struct xen_domctl_cpuid xen_domctl_cpuid_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_cpuid_t);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -725,8 +667,6 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_cpuid_t);
|
||||
struct xen_domctl_subscribe {
|
||||
uint32_t port; /* IN */
|
||||
};
|
||||
typedef struct xen_domctl_subscribe xen_domctl_subscribe_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_subscribe_t);
|
||||
|
||||
/*
|
||||
* Define the maximum machine address size which should be allocated
|
||||
@@ -747,37 +687,34 @@ struct xen_domctl_debug_op {
|
||||
uint32_t op; /* IN */
|
||||
uint32_t vcpu; /* IN */
|
||||
};
|
||||
typedef struct xen_domctl_debug_op xen_domctl_debug_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_debug_op_t);
|
||||
|
||||
/*
|
||||
* Request a particular record from the HVM context
|
||||
*/
|
||||
/* XEN_DOMCTL_gethvmcontext_partial */
|
||||
typedef struct xen_domctl_hvmcontext_partial {
|
||||
struct xen_domctl_hvmcontext_partial {
|
||||
uint32_t type; /* IN: Type of record required */
|
||||
uint32_t instance; /* IN: Instance of that type */
|
||||
uint64_aligned_t bufsz; /* IN: size of buffer */
|
||||
XEN_GUEST_HANDLE_64(uint8) buffer; /* OUT: buffer to write record into */
|
||||
} xen_domctl_hvmcontext_partial_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_hvmcontext_partial_t);
|
||||
};
|
||||
|
||||
/* XEN_DOMCTL_disable_migrate */
|
||||
typedef struct xen_domctl_disable_migrate {
|
||||
struct xen_domctl_disable_migrate {
|
||||
uint32_t disable; /* IN: 1: disable migration and restore */
|
||||
} xen_domctl_disable_migrate_t;
|
||||
};
|
||||
|
||||
|
||||
/* XEN_DOMCTL_gettscinfo */
|
||||
/* XEN_DOMCTL_settscinfo */
|
||||
typedef struct xen_domctl_tsc_info {
|
||||
struct xen_domctl_tsc_info {
|
||||
/* IN/OUT */
|
||||
uint32_t tsc_mode;
|
||||
uint32_t gtsc_khz;
|
||||
uint32_t incarnation;
|
||||
uint32_t pad;
|
||||
uint64_aligned_t elapsed_nsec;
|
||||
} xen_domctl_tsc_info_t;
|
||||
};
|
||||
|
||||
/* XEN_DOMCTL_gdbsx_guestmemio guest mem io */
|
||||
struct xen_domctl_gdbsx_memio {
|
||||
@@ -885,8 +822,6 @@ struct xen_domctl_vm_event_op {
|
||||
|
||||
uint32_t port; /* OUT: event channel for ring */
|
||||
};
|
||||
typedef struct xen_domctl_vm_event_op xen_domctl_vm_event_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vm_event_op_t);
|
||||
|
||||
/*
|
||||
* Memory sharing operations
|
||||
@@ -902,8 +837,6 @@ struct xen_domctl_mem_sharing_op {
|
||||
uint8_t enable; /* CONTROL */
|
||||
} u;
|
||||
};
|
||||
typedef struct xen_domctl_mem_sharing_op xen_domctl_mem_sharing_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_mem_sharing_op_t);
|
||||
|
||||
struct xen_domctl_audit_p2m {
|
||||
/* OUT error counts */
|
||||
@@ -911,14 +844,10 @@ struct xen_domctl_audit_p2m {
|
||||
uint64_t m2p_bad;
|
||||
uint64_t p2m_bad;
|
||||
};
|
||||
typedef struct xen_domctl_audit_p2m xen_domctl_audit_p2m_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_audit_p2m_t);
|
||||
|
||||
struct xen_domctl_set_virq_handler {
|
||||
uint32_t virq; /* IN */
|
||||
};
|
||||
typedef struct xen_domctl_set_virq_handler xen_domctl_set_virq_handler_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_virq_handler_t);
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
/* XEN_DOMCTL_setvcpuextstate */
|
||||
@@ -941,8 +870,6 @@ struct xen_domctl_vcpuextstate {
|
||||
uint64_aligned_t size;
|
||||
XEN_GUEST_HANDLE_64(uint64) buffer;
|
||||
};
|
||||
typedef struct xen_domctl_vcpuextstate xen_domctl_vcpuextstate_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpuextstate_t);
|
||||
#endif
|
||||
|
||||
/* XEN_DOMCTL_set_access_required: sets whether a memory event listener
|
||||
@@ -952,14 +879,10 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpuextstate_t);
|
||||
struct xen_domctl_set_access_required {
|
||||
uint8_t access_required;
|
||||
};
|
||||
typedef struct xen_domctl_set_access_required xen_domctl_set_access_required_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_access_required_t);
|
||||
|
||||
struct xen_domctl_set_broken_page_p2m {
|
||||
uint64_aligned_t pfn;
|
||||
};
|
||||
typedef struct xen_domctl_set_broken_page_p2m xen_domctl_set_broken_page_p2m_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_broken_page_p2m_t);
|
||||
|
||||
/*
|
||||
* XEN_DOMCTL_set_max_evtchn: sets the maximum event channel port
|
||||
@@ -969,8 +892,6 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_broken_page_p2m_t);
|
||||
struct xen_domctl_set_max_evtchn {
|
||||
uint32_t max_port;
|
||||
};
|
||||
typedef struct xen_domctl_set_max_evtchn xen_domctl_set_max_evtchn_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_max_evtchn_t);
|
||||
|
||||
/*
|
||||
* ARM: Clean and invalidate caches associated with given region of
|
||||
@@ -980,8 +901,6 @@ struct xen_domctl_cacheflush {
|
||||
/* IN: page range to flush. */
|
||||
xen_pfn_t start_pfn, nr_pfns;
|
||||
};
|
||||
typedef struct xen_domctl_cacheflush xen_domctl_cacheflush_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_cacheflush_t);
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
struct xen_domctl_vcpu_msr {
|
||||
@@ -1014,8 +933,6 @@ struct xen_domctl_vcpu_msrs {
|
||||
uint32_t msr_count; /* IN/OUT */
|
||||
XEN_GUEST_HANDLE_64(xen_domctl_vcpu_msr_t) msrs; /* IN/OUT */
|
||||
};
|
||||
typedef struct xen_domctl_vcpu_msrs xen_domctl_vcpu_msrs_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpu_msrs_t);
|
||||
#endif
|
||||
|
||||
/* XEN_DOMCTL_setvnumainfo: specifies a virtual NUMA topology for the guest */
|
||||
@@ -1052,8 +969,6 @@ struct xen_domctl_vnuma {
|
||||
*/
|
||||
XEN_GUEST_HANDLE_64(xen_vmemrange_t) vmemrange;
|
||||
};
|
||||
typedef struct xen_domctl_vnuma xen_domctl_vnuma_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_vnuma_t);
|
||||
|
||||
struct xen_domctl_psr_cmt_op {
|
||||
#define XEN_DOMCTL_PSR_CMT_OP_DETACH 0
|
||||
@@ -1062,8 +977,6 @@ struct xen_domctl_psr_cmt_op {
|
||||
uint32_t cmd;
|
||||
uint32_t data;
|
||||
};
|
||||
typedef struct xen_domctl_psr_cmt_op xen_domctl_psr_cmt_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_psr_cmt_op_t);
|
||||
|
||||
/* XEN_DOMCTL_MONITOR_*
|
||||
*
|
||||
@@ -1144,8 +1057,6 @@ struct xen_domctl_monitor_op {
|
||||
} debug_exception;
|
||||
} u;
|
||||
};
|
||||
typedef struct xen_domctl_monitor_op xen_domctl_monitor_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_monitor_op_t);
|
||||
|
||||
struct xen_domctl_psr_cat_op {
|
||||
#define XEN_DOMCTL_PSR_CAT_OP_SET_L3_CBM 0
|
||||
@@ -1160,8 +1071,6 @@ struct xen_domctl_psr_cat_op {
|
||||
uint32_t target; /* IN */
|
||||
uint64_t data; /* IN/OUT */
|
||||
};
|
||||
typedef struct xen_domctl_psr_cat_op xen_domctl_psr_cat_op_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_domctl_psr_cat_op_t);
|
||||
|
||||
struct xen_domctl_set_gnttab_limits {
|
||||
uint32_t grant_frames; /* IN */
|
||||
|
||||
@@ -96,8 +96,8 @@ void pt_pci_init(void);
|
||||
|
||||
struct pirq;
|
||||
int hvm_do_IRQ_dpci(struct domain *, struct pirq *);
|
||||
int pt_irq_create_bind(struct domain *, xen_domctl_bind_pt_irq_t *);
|
||||
int pt_irq_destroy_bind(struct domain *, xen_domctl_bind_pt_irq_t *);
|
||||
int pt_irq_create_bind(struct domain *, const struct xen_domctl_bind_pt_irq *);
|
||||
int pt_irq_destroy_bind(struct domain *, const struct xen_domctl_bind_pt_irq *);
|
||||
|
||||
void hvm_dpci_isairq_eoi(struct domain *d, unsigned int isairq);
|
||||
struct hvm_irq_dpci *domain_get_irq_dpci(const struct domain *);
|
||||
|
||||
@@ -69,7 +69,7 @@ int vm_event_get_response(struct domain *d, struct vm_event_domain *ved,
|
||||
|
||||
void vm_event_resume(struct domain *d, struct vm_event_domain *ved);
|
||||
|
||||
int vm_event_domctl(struct domain *d, xen_domctl_vm_event_op_t *vec,
|
||||
int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec,
|
||||
XEN_GUEST_HANDLE_PARAM(void) u_domctl);
|
||||
|
||||
void vm_event_vcpu_pause(struct vcpu *v);
|
||||
|
||||