69 lines · c
1/* SPDX-License-Identifier: MIT */2 3#ifndef __XEN_PUBLIC_HVM_HVM_OP_H__4#define __XEN_PUBLIC_HVM_HVM_OP_H__5 6#include <xen/interface/xen.h>7 8/* Get/set subcommands: the second argument of the hypercall is a9 * pointer to a xen_hvm_param struct. */10#define HVMOP_set_param 011#define HVMOP_get_param 112struct xen_hvm_param {13 domid_t domid; /* IN */14 uint32_t index; /* IN */15 uint64_t value; /* IN/OUT */16};17DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_param);18 19/* Hint from PV drivers for pagetable destruction. */20#define HVMOP_pagetable_dying 921struct xen_hvm_pagetable_dying {22 /* Domain with a pagetable about to be destroyed. */23 domid_t domid;24 /* guest physical address of the toplevel pagetable dying */25 aligned_u64 gpa;26};27typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t;28DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_pagetable_dying_t);29 30enum hvmmem_type_t {31 HVMMEM_ram_rw, /* Normal read/write guest RAM */32 HVMMEM_ram_ro, /* Read-only; writes are discarded */33 HVMMEM_mmio_dm, /* Reads and write go to the device model */34};35 36#define HVMOP_get_mem_type 1537/* Return hvmmem_type_t for the specified pfn. */38struct xen_hvm_get_mem_type {39 /* Domain to be queried. */40 domid_t domid;41 /* OUT variable. */42 uint16_t mem_type;43 uint16_t pad[2]; /* align next field on 8-byte boundary */44 /* IN variable. */45 uint64_t pfn;46};47DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_get_mem_type);48 49#if defined(__i386__) || defined(__x86_64__)50 51/*52 * HVMOP_set_evtchn_upcall_vector: Set a <vector> that should be used for event53 * channel upcalls on the specified <vcpu>. If set,54 * this vector will be used in preference to the55 * domain global callback via (see56 * HVM_PARAM_CALLBACK_IRQ).57 */58#define HVMOP_set_evtchn_upcall_vector 2359struct xen_hvm_evtchn_upcall_vector {60 uint32_t vcpu;61 uint8_t vector;62};63typedef struct xen_hvm_evtchn_upcall_vector xen_hvm_evtchn_upcall_vector_t;64DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_evtchn_upcall_vector_t);65 66#endif /* defined(__i386__) || defined(__x86_64__) */67 68#endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */69