• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2    This file is part of Valgrind, a dynamic binary instrumentation
3    framework.
4 
5    Copyright (C) 2012-2015 Citrix
6 
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License as
9    published by the Free Software Foundation; either version 2 of the
10    License, or (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20    02111-1307, USA.
21 
22    The GNU General Public License is contained in the file COPYING.
23 */
24 
25 /* Contributed by Andrew Cooper <andrew.cooper3@citrix.com>
26    and Ian Campbell <ian.campbell@citrix.com> */
27 
28 #ifndef __VKI_XEN_DOMCTL_H
29 #define __VKI_XEN_DOMCTL_H
30 
31 /*
32  * The domctl interface is versioned via the interface_version
33  * field. This structures in this header supports domctl interfaces:
34  *
35  * - 0x00000007: Xen 4.1
36  * - 0x00000008: Xen 4.2
37  * - 0x00000009: Xen 4.3 & 4.4
38  * - 0x0000000a: Xen 4.5
39  *
40  * When adding a new subop be sure to include the variants used by all
41  * of the above, both here and in syswrap-xen.c
42  *
43  * Structs which are identical in all supported versions have no
44  * version suffix. Structs which do differ are defined multiple times
45  * and use the suffix of the latest version to contain that particular
46  * variant.
47  */
48 
49 #define VKI_XEN_DOMCTL_createdomain                   1
50 #define VKI_XEN_DOMCTL_destroydomain                  2
51 #define VKI_XEN_DOMCTL_pausedomain                    3
52 #define VKI_XEN_DOMCTL_unpausedomain                  4
53 #define VKI_XEN_DOMCTL_getdomaininfo                  5
54 #define VKI_XEN_DOMCTL_getmemlist                     6
55 #define VKI_XEN_DOMCTL_getpageframeinfo               7
56 #define VKI_XEN_DOMCTL_getpageframeinfo2              8
57 #define VKI_XEN_DOMCTL_setvcpuaffinity                9
58 #define VKI_XEN_DOMCTL_shadow_op                     10
59 #define VKI_XEN_DOMCTL_max_mem                       11
60 #define VKI_XEN_DOMCTL_setvcpucontext                12
61 #define VKI_XEN_DOMCTL_getvcpucontext                13
62 #define VKI_XEN_DOMCTL_getvcpuinfo                   14
63 #define VKI_XEN_DOMCTL_max_vcpus                     15
64 #define VKI_XEN_DOMCTL_scheduler_op                  16
65 #define VKI_XEN_DOMCTL_setdomainhandle               17
66 #define VKI_XEN_DOMCTL_setdebugging                  18
67 #define VKI_XEN_DOMCTL_irq_permission                19
68 #define VKI_XEN_DOMCTL_iomem_permission              20
69 #define VKI_XEN_DOMCTL_ioport_permission             21
70 #define VKI_XEN_DOMCTL_hypercall_init                22
71 #define VKI_XEN_DOMCTL_arch_setup                    23
72 #define VKI_XEN_DOMCTL_settimeoffset                 24
73 #define VKI_XEN_DOMCTL_getvcpuaffinity               25
74 #define VKI_XEN_DOMCTL_real_mode_area                26
75 #define VKI_XEN_DOMCTL_resumedomain                  27
76 #define VKI_XEN_DOMCTL_sendtrigger                   28
77 #define VKI_XEN_DOMCTL_subscribe                     29
78 #define VKI_XEN_DOMCTL_gethvmcontext                 33
79 #define VKI_XEN_DOMCTL_sethvmcontext                 34
80 #define VKI_XEN_DOMCTL_set_address_size              35
81 #define VKI_XEN_DOMCTL_get_address_size              36
82 #define VKI_XEN_DOMCTL_assign_device                 37
83 #define VKI_XEN_DOMCTL_bind_pt_irq                   38
84 #define VKI_XEN_DOMCTL_memory_mapping                39
85 #define VKI_XEN_DOMCTL_ioport_mapping                40
86 #define VKI_XEN_DOMCTL_pin_mem_cacheattr             41
87 #define VKI_XEN_DOMCTL_set_ext_vcpucontext           42
88 #define VKI_XEN_DOMCTL_get_ext_vcpucontext           43
89 #define VKI_XEN_DOMCTL_set_opt_feature               44 /*Obsolete IA64 only */
90 #define VKI_XEN_DOMCTL_test_assign_device            45
91 #define VKI_XEN_DOMCTL_set_target                    46
92 #define VKI_XEN_DOMCTL_deassign_device               47
93 #define VKI_XEN_DOMCTL_unbind_pt_irq                 48
94 #define VKI_XEN_DOMCTL_set_cpuid                     49
95 #define VKI_XEN_DOMCTL_get_device_group              50
96 #define VKI_XEN_DOMCTL_set_machine_address_size      51
97 #define VKI_XEN_DOMCTL_get_machine_address_size      52
98 #define VKI_XEN_DOMCTL_suppress_spurious_page_faults 53
99 #define VKI_XEN_DOMCTL_debug_op                      54
100 #define VKI_XEN_DOMCTL_gethvmcontext_partial         55
101 #define VKI_XEN_DOMCTL_mem_event_op                  56
102 #define VKI_XEN_DOMCTL_mem_sharing_op                57
103 #define VKI_XEN_DOMCTL_disable_migrate               58
104 #define VKI_XEN_DOMCTL_gettscinfo                    59
105 #define VKI_XEN_DOMCTL_settscinfo                    60
106 #define VKI_XEN_DOMCTL_getpageframeinfo3             61
107 #define VKI_XEN_DOMCTL_setvcpuextstate               62
108 #define VKI_XEN_DOMCTL_getvcpuextstate               63
109 #define VKI_XEN_DOMCTL_set_access_required           64
110 #define VKI_XEN_DOMCTL_audit_p2m                     65
111 #define VKI_XEN_DOMCTL_set_virq_handler              66
112 #define VKI_XEN_DOMCTL_set_broken_page_p2m           67
113 #define VKI_XEN_DOMCTL_setnodeaffinity               68
114 #define VKI_XEN_DOMCTL_getnodeaffinity               69
115 #define VKI_XEN_DOMCTL_set_max_evtchn                70
116 #define VKI_XEN_DOMCTL_cacheflush                    71
117 #define VKI_XEN_DOMCTL_get_vcpu_msrs                 72
118 #define VKI_XEN_DOMCTL_set_vcpu_msrs                 73
119 #define VKI_XEN_DOMCTL_gdbsx_guestmemio            1000
120 #define VKI_XEN_DOMCTL_gdbsx_pausevcpu             1001
121 #define VKI_XEN_DOMCTL_gdbsx_unpausevcpu           1002
122 #define VKI_XEN_DOMCTL_gdbsx_domstatus             1003
123 
124 struct vki_xen_domctl_createdomain {
125     /* IN parameters */
126     vki_uint32_t ssidref;
127     vki_xen_domain_handle_t handle;
128     vki_uint32_t flags;
129 };
130 
131 struct vki_xen_domctl_getdomaininfo_00000007 {
132     /* OUT variables. */
133     vki_xen_domid_t  domain;
134     vki_uint32_t flags;
135     vki_xen_uint64_aligned_t tot_pages;
136     vki_xen_uint64_aligned_t max_pages;
137     vki_xen_uint64_aligned_t shr_pages;
138     vki_xen_uint64_aligned_t paged_pages;
139     vki_xen_uint64_aligned_t shared_info_frame;
140     vki_xen_uint64_aligned_t cpu_time;
141     vki_uint32_t nr_online_vcpus;
142     vki_uint32_t max_vcpu_id;
143     vki_uint32_t ssidref;
144     vki_xen_domain_handle_t handle;
145     vki_uint32_t cpupool;
146 };
147 typedef struct vki_xen_domctl_getdomaininfo_00000007 vki_xen_domctl_getdomaininfo_00000007_t;
148 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000007_t);
149 
150 struct vki_xen_domctl_getdomaininfo_00000008 {
151     /* OUT variables. */
152     vki_xen_domid_t  domain;
153     vki_uint32_t flags;
154     vki_xen_uint64_aligned_t tot_pages;
155     vki_xen_uint64_aligned_t max_pages;
156     vki_xen_uint64_aligned_t shr_pages;
157     vki_xen_uint64_aligned_t paged_pages;
158     vki_xen_uint64_aligned_t shared_info_frame;
159     vki_xen_uint64_aligned_t cpu_time;
160     vki_uint32_t nr_online_vcpus;
161     vki_uint32_t max_vcpu_id;
162     vki_uint32_t ssidref;
163     vki_xen_domain_handle_t handle;
164     vki_uint32_t cpupool;
165 };
166 typedef struct vki_xen_domctl_getdomaininfo_00000008 vki_xen_domctl_getdomaininfo_00000008_t;
167 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000008_t);
168 
169 struct vki_xen_domctl_getdomaininfo_00000009 {
170     /* OUT variables. */
171     vki_xen_domid_t  domain;
172     vki_uint32_t flags;
173     vki_xen_uint64_aligned_t tot_pages;
174     vki_xen_uint64_aligned_t max_pages;
175     vki_xen_uint64_aligned_t outstanding_pages;
176     vki_xen_uint64_aligned_t shr_pages;
177     vki_xen_uint64_aligned_t paged_pages;
178     vki_xen_uint64_aligned_t shared_info_frame;
179     vki_xen_uint64_aligned_t cpu_time;
180     vki_uint32_t nr_online_vcpus;
181     vki_uint32_t max_vcpu_id;
182     vki_uint32_t ssidref;
183     vki_xen_domain_handle_t handle;
184     vki_uint32_t cpupool;
185 };
186 typedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t;
187 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t);
188 
189 /* vki_xen_domctl_getdomaininfo_0000000a is the same as 00000009 */
190 
191 /* Get/set the NUMA node(s) with which the guest has affinity with. */
192 /* XEN_DOMCTL_setnodeaffinity */
193 /* XEN_DOMCTL_getnodeaffinity */
194 struct vki_xen_domctl_nodeaffinity {
195     struct vki_xenctl_bitmap nodemap;/* IN */
196 };
197 typedef struct vki_xen_domctl_nodeaffinity vki_xen_domctl_nodeaffinity_t;
198 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_nodeaffinity_t);
199 
200 struct vki_xen_domctl_getpageframeinfo3 {
201     vki_xen_uint64_aligned_t num; /* IN */
202     VKI_XEN_GUEST_HANDLE_64(vki_xen_pfn_t) array; /* IN/OUT */
203 };
204 
205 struct vki_xen_domctl_vcpuaffinity_00000009 {
206     vki_uint32_t  vcpu;              /* IN */
207     struct vki_xenctl_bitmap cpumap; /* IN/OUT */
208 };
209 
210 struct vki_xen_domctl_vcpuaffinity_0000000a {
211     vki_uint32_t  vcpu;              /* IN */
212 #define VKI_XEN_VCPUAFFINITY_HARD   (1U<<0)
213 #define VKI_XEN_VCPUAFFINITY_SOFT   (1U<<1)
214     vki_uint32_t  flags;              /* IN */
215     struct vki_xenctl_bitmap cpumap_hard; /* IN/OUT */
216     struct vki_xenctl_bitmap cpumap_soft; /* IN/OUT */
217 };
218 
219 struct vki_xen_domctl_shadow_op_stats {
220     vki_uint32_t fault_count;
221     vki_uint32_t dirty_count;
222 };
223 
224 /* vki_xen_domctl_shadow_op.op is an utter mess for compatibily reasons. */
225 
226 struct vki_xen_domctl_shadow_op {
227     vki_uint32_t op; /* IN */
228 
229 #define VKI_XEN_DOMCTL_SHADOW_OP_OFF               0
230 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE           32
231 #define VKI_XEN_DOMCTL_SHADOW_OP_CLEAN            11
232 #define VKI_XEN_DOMCTL_SHADOW_OP_PEEK             12
233 #define VKI_XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION   30
234 #define VKI_XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION   31
235 
236 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TEST       1
237 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY   2
238 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TRANSLATE  3
239 
240     vki_uint32_t mode;
241 
242 #define XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT  (1 << 1)
243 #define XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY (1 << 2)
244 #define XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE (1 << 3)
245 #define XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL  (1 << 4)
246 
247     vki_uint32_t mb;
248     VKI_XEN_GUEST_HANDLE_64(vki_uint8) dirty_bitmap;
249     vki_xen_uint64_aligned_t pages;
250     struct vki_xen_domctl_shadow_op_stats stats;
251 };
252 
253 struct vki_xen_domctl_max_mem {
254     /* IN variables. */
255     vki_xen_uint64_aligned_t max_memkb;
256 };
257 
258 struct vki_xen_domctl_vcpucontext {
259     vki_uint32_t              vcpu;                  /* IN */
260     VKI_XEN_GUEST_HANDLE_64(vki_xen_vcpu_guest_context_t) ctxt; /* IN/OUT */
261 };
262 
263 struct vki_xen_domctl_getvcpuinfo {
264     /* IN variables. */
265     vki_uint32_t vcpu;
266     /* OUT variables. */
267     vki_uint8_t  online;              /* currently online (not hotplugged)? */
268     vki_uint8_t  blocked;             /* blocked waiting for an event? */
269     vki_uint8_t  running;             /* currently scheduled on its CPU? */
270     vki_xen_uint64_aligned_t cpu_time;/* total cpu time consumed (ns) */
271     vki_uint32_t cpu;                 /* current mapping   */
272 };
273 
274 struct vki_xen_domctl_scheduler_op {
275     vki_uint32_t sched_id;  /* VKI_XEN_SCHEDULER_* */
276 #define VKI_XEN_SCHEDULER_SEDF     4
277 #define VKI_XEN_SCHEDULER_CREDIT   5
278 #define VKI_XEN_SCHEDULER_CREDIT2  6
279 #define VKI_XEN_SCHEDULER_ARINC653 7
280 #define VKI_XEN_SCHEDULER_RTDS     8
281     vki_uint32_t cmd;       /* VKI_XEN_DOMCTL_SCHEDOP_* */
282 #define VKI_XEN_DOMCTL_SCHEDOP_putinfo 0
283 #define VKI_XEN_DOMCTL_SCHEDOP_getinfo 1
284     union {
285         struct xen_domctl_sched_sedf {
286             vki_xen_uint64_aligned_t period;
287             vki_xen_uint64_aligned_t slice;
288             vki_xen_uint64_aligned_t latency;
289             vki_uint32_t extratime;
290             vki_uint32_t weight;
291         } sedf;
292         struct xen_domctl_sched_credit {
293             vki_uint16_t weight;
294             vki_uint16_t cap;
295         } credit;
296         struct xen_domctl_sched_credit2 {
297             vki_uint16_t weight;
298         } credit2;
299         struct xen_domctl_sched_rtds {
300             vki_uint32_t period;
301             vki_uint32_t budget;
302         } rtds;
303     } u;
304 };
305 
306 struct vki_xen_domctl_max_vcpus {
307     vki_uint32_t max;           /* maximum number of vcpus */
308 };
309 
310 /* XEN_DOMCTL_irq_permission */
311 struct vki_xen_domctl_irq_permission {
312     vki_uint8_t pirq;
313     vki_uint8_t allow_access;    /* flag to specify enable/disable of IRQ access */
314 };
315 
316 struct vki_xen_domctl_iomem_permission {
317     vki_xen_uint64_aligned_t first_mfn;/* first page (physical page number) in range */
318     vki_xen_uint64_aligned_t nr_mfns;  /* number of pages in range (>0) */
319     vki_uint8_t  allow_access;     /* allow (!0) or deny (0) access to range? */
320 };
321 
322 struct vki_xen_domctl_ioport_permission {
323     vki_uint32_t first_port;              /* IN */
324     vki_uint32_t nr_ports;                /* IN */
325     vki_uint8_t  allow_access;            /* IN */
326 };
327 
328 struct vki_xen_domctl_hypercall_init {
329     vki_xen_uint64_aligned_t  gmfn;           /* GMFN to be initialised */
330 };
331 
332 struct vki_xen_domctl_settimeoffset {
333     vki_int32_t time_offset_seconds;
334 };
335 
336 struct vki_xen_domctl_cpuid {
337   vki_uint32_t input[2];
338   vki_uint32_t eax;
339   vki_uint32_t ebx;
340   vki_uint32_t ecx;
341   vki_uint32_t edx;
342 };
343 
344 struct vki_xen_guest_tsc_info {
345     vki_uint32_t tsc_mode;
346     vki_uint32_t gtsc_khz;
347     vki_uint32_t incarnation;
348     vki_uint32_t pad;
349     vki_xen_uint64_aligned_t elapsed_nsec;
350 };
351 typedef struct vki_xen_guest_tsc_info vki_xen_guest_tsc_info_t;
352 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_guest_tsc_info_t);
353 
354 struct vki_xen_domctl_hvmcontext {
355     vki_uint32_t size; /* IN/OUT size of buffer */
356     VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT */
357 };
358 typedef struct vki_xen_domctl_hvmcontext vki_xen_domctl_hvmcontext_t;
359 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_t);
360 
361 struct vki_xen_domctl_hvmcontext_partial {
362     vki_uint32_t type; /* IN */
363     vki_uint32_t instance; /* IN */
364     VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT buffer */
365 };
366 typedef struct vki_xen_domctl_hvmcontext_partial vki_xen_domctl_hvmcontext_partial_t;
367 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_partial_t);
368 
369 struct vki_xen_domctl_tsc_info {
370     VKI_XEN_GUEST_HANDLE_64(vki_xen_guest_tsc_info_t) out_info; /* OUT */
371     vki_xen_guest_tsc_info_t info; /* IN */
372 };
373 
374 struct vki_xen_domctl_pin_mem_cacheattr {
375     vki_xen_uint64_aligned_t start, end; /* IN */
376     vki_uint32_t type;                   /* IN */
377 };
378 
379 struct vki_xen_domctl_ext_vcpucontext_00000008 {
380     vki_uint32_t             vcpu; /* IN */
381 
382     /* IN  for XEN_DOMCTL_set_ext_vcpucontext
383      * OUT for XEN_DOMCTL_get_ext_vcpucontext */
384     vki_uint32_t             size;
385 #if defined(__i386__) || defined(__x86_64__)
386     vki_xen_uint64_aligned_t syscall32_callback_eip;
387     vki_xen_uint64_aligned_t sysenter_callback_eip;
388     vki_uint16_t             syscall32_callback_cs;
389     vki_uint16_t             sysenter_callback_cs;
390     vki_uint8_t              syscall32_disables_events;
391     vki_uint8_t              sysenter_disables_events;
392     vki_xen_uint64_aligned_t mcg_cap;
393 #endif
394 };
395 
396 struct vki_xen_domctl_ext_vcpucontext_00000009 {
397     vki_uint32_t             vcpu; /* IN */
398 
399     /* IN  for XEN_DOMCTL_set_ext_vcpucontext
400      * OUT for XEN_DOMCTL_get_ext_vcpucontext */
401     vki_uint32_t             size;
402 #if defined(__i386__) || defined(__x86_64__)
403     vki_xen_uint64_aligned_t syscall32_callback_eip;
404     vki_xen_uint64_aligned_t sysenter_callback_eip;
405     vki_uint16_t             syscall32_callback_cs;
406     vki_uint16_t             sysenter_callback_cs;
407     vki_uint8_t              syscall32_disables_events;
408     vki_uint8_t              sysenter_disables_events;
409     vki_uint64_t             caps;
410     vki_uint64_t             mci_ctl2_bank0;
411     vki_uint64_t             mci_ctl2_bank1;
412 #endif
413 };
414 
415 /* vki_xen_domctl_ext_vcpucontext_0000000a is the same as 00000009 */
416 
417 struct vki_xen_domctl_vcpuextstate {
418     vki_uint32_t         vcpu;
419     vki_xen_uint64_aligned_t         xfeature_mask;
420     vki_xen_uint64_aligned_t         size;
421     VKI_XEN_GUEST_HANDLE_64(vki_uint64) buffer;
422 };
423 
424 struct vki_xen_domctl_address_size {
425     vki_uint32_t size;
426 };
427 
428 struct vki_xen_domctl_assign_device {
429     vki_uint32_t  machine_sbdf;   /* machine PCI ID of assigned device */
430 };
431 
432 struct vki_xen_domctl_debug_op {
433     vki_uint32_t op;   /* IN */
434     vki_uint32_t vcpu; /* IN */
435 };
436 typedef struct vki_xen_domctl_debug_op vki_xen_domctl_debug_op_t;
437 
438 struct vki_xen_domctl_mem_event_op {
439     vki_uint32_t op; /* IN */
440     vki_uint32_t mode; /* IN */
441     vki_uint32_t port; /* OUT */
442 };
443 
444 struct vki_xen_domctl_set_access_required {
445     vki_uint8_t access_required; /* IN */
446 };
447 
448 struct vki_xen_domctl_set_max_evtchn {
449     vki_uint32_t max_port;
450 };
451 
452 struct vki_xen_domctl_cacheflush {
453     /* IN: page range to flush. */
454     vki_xen_pfn_t start_pfn, nr_pfns;
455 };
456 
457 struct vki_xen_domctl_vcpu_msr {
458     vki_uint32_t             index;
459     vki_uint32_t             reserved;
460     vki_xen_uint64_aligned_t value;
461 };
462 typedef struct vki_xen_domctl_vcpu_msr vki_xen_domctl_vcpu_msr_t;
463 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_vcpu_msr_t);
464 
465 struct vki_xen_domctl_vcpu_msrs {
466     vki_uint32_t vcpu;
467     vki_uint32_t msr_count;
468     VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_vcpu_msr_t) msrs;
469 };
470 
471 struct vki_xen_domctl {
472     vki_uint32_t cmd;
473     vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
474     vki_xen_domid_t  domain;
475     union {
476         struct vki_xen_domctl_createdomain      createdomain;
477         struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007;
478         struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008;
479         struct vki_xen_domctl_getdomaininfo_00000009 getdomaininfo_00000009;
480         //struct vki_xen_domctl_getmemlist        getmemlist;
481         //struct vki_xen_domctl_getpageframeinfo  getpageframeinfo;
482         //struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
483         struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
484         struct vki_xen_domctl_nodeaffinity      nodeaffinity;
485         struct vki_xen_domctl_vcpuaffinity_00000009 vcpuaffinity_00000009;
486         struct vki_xen_domctl_vcpuaffinity_0000000a vcpuaffinity_0000000a;
487         struct vki_xen_domctl_shadow_op         shadow_op;
488         struct vki_xen_domctl_max_mem           max_mem;
489         struct vki_xen_domctl_vcpucontext       vcpucontext;
490         struct vki_xen_domctl_getvcpuinfo       getvcpuinfo;
491         struct vki_xen_domctl_max_vcpus         max_vcpus;
492         struct vki_xen_domctl_scheduler_op      scheduler_op;
493         //struct vki_xen_domctl_setdomainhandle   setdomainhandle;
494         //struct vki_xen_domctl_setdebugging      setdebugging;
495         struct vki_xen_domctl_irq_permission    irq_permission;
496         struct vki_xen_domctl_iomem_permission  iomem_permission;
497         struct vki_xen_domctl_ioport_permission ioport_permission;
498         struct vki_xen_domctl_hypercall_init    hypercall_init;
499         //struct vki_xen_domctl_arch_setup        arch_setup;
500         struct vki_xen_domctl_settimeoffset     settimeoffset;
501         //struct vki_xen_domctl_disable_migrate   disable_migrate;
502         struct vki_xen_domctl_tsc_info          tsc_info;
503         //struct vki_xen_domctl_real_mode_area    real_mode_area;
504         struct vki_xen_domctl_hvmcontext        hvmcontext;
505         struct vki_xen_domctl_hvmcontext_partial hvmcontext_partial;
506         struct vki_xen_domctl_address_size      address_size;
507         //struct vki_xen_domctl_sendtrigger       sendtrigger;
508         //struct vki_xen_domctl_get_device_group  get_device_group;
509         struct vki_xen_domctl_assign_device     assign_device;
510         //struct vki_xen_domctl_bind_pt_irq       bind_pt_irq;
511         //struct vki_xen_domctl_memory_mapping    memory_mapping;
512         //struct vki_xen_domctl_ioport_mapping    ioport_mapping;
513         struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
514         struct vki_xen_domctl_ext_vcpucontext_00000008 ext_vcpucontext_00000008;
515         struct vki_xen_domctl_ext_vcpucontext_00000009 ext_vcpucontext_00000009;
516         //struct vki_xen_domctl_set_target        set_target;
517         //struct vki_xen_domctl_subscribe         subscribe;
518         struct vki_xen_domctl_debug_op          debug_op;
519         struct vki_xen_domctl_mem_event_op      mem_event_op;
520         //struct vki_xen_domctl_mem_sharing_op    mem_sharing_op;
521 #if defined(__i386__) || defined(__x86_64__)
522         struct vki_xen_domctl_cpuid             cpuid;
523         struct vki_xen_domctl_vcpuextstate      vcpuextstate;
524         struct vki_xen_domctl_vcpu_msrs         vcpu_msrs;
525 #endif
526         struct vki_xen_domctl_set_access_required access_required;
527         //struct vki_xen_domctl_audit_p2m         audit_p2m;
528         //struct vki_xen_domctl_set_virq_handler  set_virq_handler;
529         struct vki_xen_domctl_set_max_evtchn    set_max_evtchn;
530         //struct vki_xen_domctl_gdbsx_memio       gdbsx_guest_memio;
531         //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m;
532         struct vki_xen_domctl_cacheflush        cacheflush;
533         //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu;
534         //struct vki_xen_domctl_gdbsx_domstatus   gdbsx_domstatus;
535         vki_uint8_t                         pad[128];
536     } u;
537 };
538 
539 #endif // __VKI_XEN_DOMCTL_H
540 
541 /*--------------------------------------------------------------------*/
542 /*--- end                                                          ---*/
543 /*--------------------------------------------------------------------*/
544