1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_XEN_DOMCTL_H
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_XEN_DOMCTL_H
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * The domctl interface is versioned via the interface_version
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * field. This structures in this header supports domctl interfaces:
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov *
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * - 00000007: Xen 4.1
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * - 00000008: Xen 4.2
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * - 00000009: Xen 4.3
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov *
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * When adding a new subop be sure to include the variants used by all
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * of the above, both here and in syswrap-xen.c
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov *
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * Structs which are identical in all supported versions have no
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * version suffix. Structs which do differ are defined multiple times
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * and use the suffix of the latest version to contain that particular
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov * variant.
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov */
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_createdomain                   1
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_destroydomain                  2
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_pausedomain                    3
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_unpausedomain                  4
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getdomaininfo                  5
26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getmemlist                     6
27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getpageframeinfo               7
28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getpageframeinfo2              8
29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setvcpuaffinity                9
30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_shadow_op                     10
31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_max_mem                       11
32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setvcpucontext                12
33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getvcpucontext                13
34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getvcpuinfo                   14
35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_max_vcpus                     15
36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_scheduler_op                  16
37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setdomainhandle               17
38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setdebugging                  18
39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_irq_permission                19
40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_iomem_permission              20
41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_ioport_permission             21
42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_hypercall_init                22
43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_arch_setup                    23
44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_settimeoffset                 24
45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getvcpuaffinity               25
46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_real_mode_area                26
47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_resumedomain                  27
48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_sendtrigger                   28
49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_subscribe                     29
50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gethvmcontext                 33
51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_sethvmcontext                 34
52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_address_size              35
53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_get_address_size              36
54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_assign_device                 37
55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_bind_pt_irq                   38
56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_memory_mapping                39
57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_ioport_mapping                40
58436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_pin_mem_cacheattr             41
59436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_ext_vcpucontext           42
60436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_get_ext_vcpucontext           43
61436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_opt_feature               44 /*Obsolete IA64 only */
62436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_test_assign_device            45
63436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_target                    46
64436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_deassign_device               47
65436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_unbind_pt_irq                 48
66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_cpuid                     49
67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_get_device_group              50
68436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_machine_address_size      51
69436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_get_machine_address_size      52
70436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_suppress_spurious_page_faults 53
71436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_debug_op                      54
72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gethvmcontext_partial         55
73436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_mem_event_op                  56
74436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_mem_sharing_op                57
75436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_disable_migrate               58
76436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gettscinfo                    59
77436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_settscinfo                    60
78436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getpageframeinfo3             61
79436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setvcpuextstate               62
80436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getvcpuextstate               63
81436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_access_required           64
82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_audit_p2m                     65
83436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_virq_handler              66
84436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_broken_page_p2m           67
85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_setnodeaffinity               68
86436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_getnodeaffinity               69
87436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_set_max_evtchn                70
88eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov#define VKI_XEN_DOMCTL_cacheflush                    71
89436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gdbsx_guestmemio            1000
90436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gdbsx_pausevcpu             1001
91436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gdbsx_unpausevcpu           1002
92436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_gdbsx_domstatus             1003
93436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
94436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_createdomain {
95436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* IN parameters */
96436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t ssidref;
97436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domain_handle_t handle;
98436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t flags;
99436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
100436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
101436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_getdomaininfo_00000007 {
102436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* OUT variables. */
103436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domid_t  domain;
104436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t flags;
105436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t tot_pages;
106436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t max_pages;
107436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shr_pages;
108436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t paged_pages;
109436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shared_info_frame;
110436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t cpu_time;
111436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t nr_online_vcpus;
112436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t max_vcpu_id;
113436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t ssidref;
114436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domain_handle_t handle;
115436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cpupool;
116436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
117436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_domctl_getdomaininfo_00000007 vki_xen_domctl_getdomaininfo_00000007_t;
118436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000007_t);
119436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
120436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_getdomaininfo_00000008 {
121436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* OUT variables. */
122436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domid_t  domain;
123436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t flags;
124436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t tot_pages;
125436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t max_pages;
126436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shr_pages;
127436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t paged_pages;
128436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shared_info_frame;
129436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t cpu_time;
130436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t nr_online_vcpus;
131436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t max_vcpu_id;
132436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t ssidref;
133436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domain_handle_t handle;
134436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cpupool;
135436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
136436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_domctl_getdomaininfo_00000008 vki_xen_domctl_getdomaininfo_00000008_t;
137436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000008_t);
138436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
139436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_getdomaininfo_00000009 {
140436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* OUT variables. */
141436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domid_t  domain;
142436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t flags;
143436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t tot_pages;
144436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t max_pages;
145436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t outstanding_pages;
146436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shr_pages;
147436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t paged_pages;
148436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t shared_info_frame;
149436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t cpu_time;
150436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t nr_online_vcpus;
151436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t max_vcpu_id;
152436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t ssidref;
153436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domain_handle_t handle;
154436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cpupool;
155436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
156436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t;
157436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t);
158436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
159436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* Get/set the NUMA node(s) with which the guest has affinity with. */
160436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* XEN_DOMCTL_setnodeaffinity */
161436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* XEN_DOMCTL_getnodeaffinity */
162436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_nodeaffinity {
163436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    struct vki_xenctl_bitmap nodemap;/* IN */
164436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
165436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_domctl_nodeaffinity vki_xen_domctl_nodeaffinity_t;
166436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_nodeaffinity_t);
167436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
168436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_getpageframeinfo3 {
169436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t num; /* IN */
170436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_xen_pfn_t) array; /* IN/OUT */
171436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
172436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
173436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_vcpuaffinity {
174436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t  vcpu;              /* IN */
175436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    struct vki_xenctl_bitmap cpumap; /* IN/OUT */
176436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
177436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
178436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_shadow_op_stats {
179436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t fault_count;
180436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t dirty_count;
181436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
182436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
183436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* vki_xen_domctl_shadow_op.op is an utter mess for compatibily reasons. */
184436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
185436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_shadow_op {
186436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t op; /* IN */
187436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
188436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_OFF               0
189436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE           32
190436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_CLEAN            11
191436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_PEEK             12
192436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION   30
193436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION   31
194436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
195436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TEST       1
196436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY   2
197436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TRANSLATE  3
198436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
199436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t mode;
200436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
201436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT  (1 << 1)
202436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY (1 << 2)
203436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE (1 << 3)
204436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL  (1 << 4)
205436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
206436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t mb;
207436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_uint8) dirty_bitmap;
208436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t pages;
209436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    struct vki_xen_domctl_shadow_op_stats stats;
210436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
211436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
212436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_max_mem {
213436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* IN variables. */
214436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t max_memkb;
215436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
216436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
217436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_vcpucontext {
218436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t              vcpu;                  /* IN */
219436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_xen_vcpu_guest_context_t) ctxt; /* IN/OUT */
220436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
221436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
222436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_getvcpuinfo {
223436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* IN variables. */
224436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t vcpu;
225436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    /* OUT variables. */
226436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint8_t  online;              /* currently online (not hotplugged)? */
227436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint8_t  blocked;             /* blocked waiting for an event? */
228436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint8_t  running;             /* currently scheduled on its CPU? */
229436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t cpu_time;/* total cpu time consumed (ns) */
230436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cpu;                 /* current mapping   */
231436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
232436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
233436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_scheduler_op {
234436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t sched_id;  /* VKI_XEN_SCHEDULER_* */
235436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_SCHEDULER_SEDF     4
236436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_SCHEDULER_CREDIT   5
237436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_SCHEDULER_CREDIT2  6
238436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_SCHEDULER_ARINC653 7
239436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cmd;       /* VKI_XEN_DOMCTL_SCHEDOP_* */
240436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SCHEDOP_putinfo 0
241436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_XEN_DOMCTL_SCHEDOP_getinfo 1
242436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    union {
243436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct xen_domctl_sched_sedf {
244436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_xen_uint64_aligned_t period;
245436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_xen_uint64_aligned_t slice;
246436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_xen_uint64_aligned_t latency;
247436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_uint32_t extratime;
248436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_uint32_t weight;
249436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        } sedf;
250436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct xen_domctl_sched_credit {
251436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_uint16_t weight;
252436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_uint16_t cap;
253436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        } credit;
254436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct xen_domctl_sched_credit2 {
255436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            vki_uint16_t weight;
256436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        } credit2;
257436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    } u;
258436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
259436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
260436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_max_vcpus {
261436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t max;           /* maximum number of vcpus */
262436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
263436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
264436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_hypercall_init {
265436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t  gmfn;           /* GMFN to be initialised */
266436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
267436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
268eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanovstruct vki_xen_domctl_settimeoffset {
269eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov    vki_int32_t time_offset_seconds;
270eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov};
271eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov
272436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_cpuid {
273436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  vki_uint32_t input[2];
274436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  vki_uint32_t eax;
275436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  vki_uint32_t ebx;
276436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  vki_uint32_t ecx;
277436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov  vki_uint32_t edx;
278436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
279436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
280436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_guest_tsc_info {
281436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t tsc_mode;
282436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t gtsc_khz;
283436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t incarnation;
284436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t pad;
285436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t elapsed_nsec;
286436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
287436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_guest_tsc_info vki_xen_guest_tsc_info_t;
288436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_guest_tsc_info_t);
289436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
290436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_hvmcontext {
291436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t size; /* IN/OUT size of buffer */
292436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT */
293436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
294436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_xen_domctl_hvmcontext vki_xen_domctl_hvmcontext_t;
295436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovDEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_t);
296436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
297436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_tsc_info {
298436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_xen_guest_tsc_info_t) out_info; /* OUT */
299436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_guest_tsc_info_t info; /* IN */
300436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
301436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
302436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_vcpuextstate {
303436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t         vcpu;
304436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t         xfeature_mask;
305436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_uint64_aligned_t         size;
306436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    VKI_XEN_GUEST_HANDLE_64(vki_uint64) buffer;
307436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
308436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
309436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_address_size {
310436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t size;
311436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
312436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
313436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl_set_max_evtchn {
314436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t max_port;
315436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
316436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
317eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanovstruct vki_xen_domctl_cacheflush {
318eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov    /* IN: page range to flush. */
319eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov    vki_xen_pfn_t start_pfn, nr_pfns;
320eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov};
321eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov
322436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_xen_domctl {
323436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t cmd;
324436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
325436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    vki_xen_domid_t  domain;
326436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    union {
327436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_createdomain      createdomain;
328436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007;
329436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008;
330436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_getdomaininfo_00000009 getdomaininfo_00000009;
331436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_getmemlist        getmemlist;
332436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_getpageframeinfo  getpageframeinfo;
333436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
334436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
335436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_nodeaffinity      nodeaffinity;
336436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_vcpuaffinity      vcpuaffinity;
337436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_shadow_op         shadow_op;
338436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_max_mem           max_mem;
339436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_vcpucontext       vcpucontext;
340436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_getvcpuinfo       getvcpuinfo;
341436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_max_vcpus         max_vcpus;
342436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_scheduler_op      scheduler_op;
343436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_setdomainhandle   setdomainhandle;
344436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_setdebugging      setdebugging;
345436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_irq_permission    irq_permission;
346436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_iomem_permission  iomem_permission;
347436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_ioport_permission ioport_permission;
348436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_hypercall_init    hypercall_init;
349436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_arch_setup        arch_setup;
350eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov        struct vki_xen_domctl_settimeoffset     settimeoffset;
351436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_disable_migrate   disable_migrate;
352436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_tsc_info          tsc_info;
353436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_real_mode_area    real_mode_area;
354436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_hvmcontext        hvmcontext;
355436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_hvmcontext_partial hvmcontext_partial;
356436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_address_size      address_size;
357436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_sendtrigger       sendtrigger;
358436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_get_device_group  get_device_group;
359436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_assign_device     assign_device;
360436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_bind_pt_irq       bind_pt_irq;
361436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_memory_mapping    memory_mapping;
362436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_ioport_mapping    ioport_mapping;
363436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
364436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_ext_vcpucontext   ext_vcpucontext;
365436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_set_target        set_target;
366436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_subscribe         subscribe;
367436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_debug_op          debug_op;
368436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_mem_event_op      mem_event_op;
369436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_mem_sharing_op    mem_sharing_op;
370436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if defined(__i386__) || defined(__x86_64__)
371436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_cpuid             cpuid;
372436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_vcpuextstate      vcpuextstate;
373436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
374436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_set_access_required access_required;
375436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_audit_p2m         audit_p2m;
376436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_set_virq_handler  set_virq_handler;
377436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        struct vki_xen_domctl_set_max_evtchn    set_max_evtchn;
378436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_gdbsx_memio       gdbsx_guest_memio;
379436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m;
380eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov        struct vki_xen_domctl_cacheflush        cacheflush;
381436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu;
382436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        //struct vki_xen_domctl_gdbsx_domstatus   gdbsx_domstatus;
383436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        vki_uint8_t                         pad[128];
384436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    } u;
385436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
386436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
387436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif // __VKI_XEN_DOMCTL_H
388436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
389436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
390436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- end                                                          ---*/
391436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
392