xref: /illumos-gate/usr/src/uts/common/xen/public/domctl.h (revision ad09f8b8)
1843e1988Sjohnlev /******************************************************************************
2843e1988Sjohnlev  * domctl.h
3843e1988Sjohnlev  *
4843e1988Sjohnlev  * Domain management operations. For use by node control stack.
5843e1988Sjohnlev  *
6843e1988Sjohnlev  * Permission is hereby granted, free of charge, to any person obtaining a copy
7843e1988Sjohnlev  * of this software and associated documentation files (the "Software"), to
8843e1988Sjohnlev  * deal in the Software without restriction, including without limitation the
9843e1988Sjohnlev  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10843e1988Sjohnlev  * sell copies of the Software, and to permit persons to whom the Software is
11843e1988Sjohnlev  * furnished to do so, subject to the following conditions:
12843e1988Sjohnlev  *
13843e1988Sjohnlev  * The above copyright notice and this permission notice shall be included in
14843e1988Sjohnlev  * all copies or substantial portions of the Software.
15843e1988Sjohnlev  *
16843e1988Sjohnlev  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17843e1988Sjohnlev  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18843e1988Sjohnlev  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19843e1988Sjohnlev  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20843e1988Sjohnlev  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21843e1988Sjohnlev  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22843e1988Sjohnlev  * DEALINGS IN THE SOFTWARE.
23843e1988Sjohnlev  *
24843e1988Sjohnlev  * Copyright (c) 2002-2003, B Dragovic
25843e1988Sjohnlev  * Copyright (c) 2002-2006, K Fraser
26843e1988Sjohnlev  */
27843e1988Sjohnlev 
28843e1988Sjohnlev #ifndef __XEN_PUBLIC_DOMCTL_H__
29843e1988Sjohnlev #define __XEN_PUBLIC_DOMCTL_H__
30843e1988Sjohnlev 
31843e1988Sjohnlev #if !defined(__XEN__) && !defined(__XEN_TOOLS__)
32843e1988Sjohnlev #error "domctl operations are intended for use by node control tools only"
33843e1988Sjohnlev #endif
34843e1988Sjohnlev 
35843e1988Sjohnlev #include "xen.h"
36843e1988Sjohnlev 
37a576ab5bSrab #define XEN_DOMCTL_INTERFACE_VERSION 0x00000005
38843e1988Sjohnlev 
39843e1988Sjohnlev struct xenctl_cpumap {
40349b53ddSStuart Maybee     XEN_GUEST_HANDLE_64(uint8) bitmap;
41843e1988Sjohnlev     uint32_t nr_cpus;
42843e1988Sjohnlev };
43843e1988Sjohnlev 
44843e1988Sjohnlev /*
45843e1988Sjohnlev  * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
46843e1988Sjohnlev  * If it is specified as zero, an id is auto-allocated and returned.
47843e1988Sjohnlev  */
48843e1988Sjohnlev #define XEN_DOMCTL_createdomain       1
49843e1988Sjohnlev struct xen_domctl_createdomain {
50843e1988Sjohnlev     /* IN parameters */
51843e1988Sjohnlev     uint32_t ssidref;
52843e1988Sjohnlev     xen_domain_handle_t handle;
53843e1988Sjohnlev  /* Is this an HVM guest (as opposed to a PV guest)? */
54*ad09f8b8SMark Johnson #define _XEN_DOMCTL_CDF_hvm_guest     0
55*ad09f8b8SMark Johnson #define XEN_DOMCTL_CDF_hvm_guest      (1U<<_XEN_DOMCTL_CDF_hvm_guest)
56349b53ddSStuart Maybee  /* Use hardware-assisted paging if available? */
57*ad09f8b8SMark Johnson #define _XEN_DOMCTL_CDF_hap           1
58*ad09f8b8SMark Johnson #define XEN_DOMCTL_CDF_hap            (1U<<_XEN_DOMCTL_CDF_hap)
59*ad09f8b8SMark Johnson  /* Should domain memory integrity be verifed by tboot during Sx? */
60*ad09f8b8SMark Johnson #define _XEN_DOMCTL_CDF_s3_integrity  2
61*ad09f8b8SMark Johnson #define XEN_DOMCTL_CDF_s3_integrity   (1U<<_XEN_DOMCTL_CDF_s3_integrity)
62843e1988Sjohnlev     uint32_t flags;
63843e1988Sjohnlev };
64843e1988Sjohnlev typedef struct xen_domctl_createdomain xen_domctl_createdomain_t;
65843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_createdomain_t);
66843e1988Sjohnlev 
67843e1988Sjohnlev #define XEN_DOMCTL_destroydomain      2
68843e1988Sjohnlev #define XEN_DOMCTL_pausedomain        3
69843e1988Sjohnlev #define XEN_DOMCTL_unpausedomain      4
70a576ab5bSrab #define XEN_DOMCTL_resumedomain      27
71843e1988Sjohnlev 
72843e1988Sjohnlev #define XEN_DOMCTL_getdomaininfo      5
73843e1988Sjohnlev struct xen_domctl_getdomaininfo {
74843e1988Sjohnlev     /* OUT variables. */
75843e1988Sjohnlev     domid_t  domain;              /* Also echoed in domctl.domain */
76843e1988Sjohnlev  /* Domain is scheduled to die. */
77843e1988Sjohnlev #define _XEN_DOMINF_dying     0
78843e1988Sjohnlev #define XEN_DOMINF_dying      (1U<<_XEN_DOMINF_dying)
79843e1988Sjohnlev  /* Domain is an HVM guest (as opposed to a PV guest). */
80843e1988Sjohnlev #define _XEN_DOMINF_hvm_guest 1
81843e1988Sjohnlev #define XEN_DOMINF_hvm_guest  (1U<<_XEN_DOMINF_hvm_guest)
82843e1988Sjohnlev  /* The guest OS has shut down. */
83843e1988Sjohnlev #define _XEN_DOMINF_shutdown  2
84843e1988Sjohnlev #define XEN_DOMINF_shutdown   (1U<<_XEN_DOMINF_shutdown)
85843e1988Sjohnlev  /* Currently paused by control software. */
86843e1988Sjohnlev #define _XEN_DOMINF_paused    3
87843e1988Sjohnlev #define XEN_DOMINF_paused     (1U<<_XEN_DOMINF_paused)
88843e1988Sjohnlev  /* Currently blocked pending an event.     */
89843e1988Sjohnlev #define _XEN_DOMINF_blocked   4
90843e1988Sjohnlev #define XEN_DOMINF_blocked    (1U<<_XEN_DOMINF_blocked)
91843e1988Sjohnlev  /* Domain is currently running.            */
92843e1988Sjohnlev #define _XEN_DOMINF_running   5
93843e1988Sjohnlev #define XEN_DOMINF_running    (1U<<_XEN_DOMINF_running)
94a576ab5bSrab  /* Being debugged.  */
95a576ab5bSrab #define _XEN_DOMINF_debugged  6
96a576ab5bSrab #define XEN_DOMINF_debugged   (1U<<_XEN_DOMINF_debugged)
97843e1988Sjohnlev  /* XEN_DOMINF_shutdown guest-supplied code.  */
98843e1988Sjohnlev #define XEN_DOMINF_shutdownmask 255
99843e1988Sjohnlev #define XEN_DOMINF_shutdownshift 16
100843e1988Sjohnlev     uint32_t flags;              /* XEN_DOMINF_* */
101a576ab5bSrab     uint64_aligned_t tot_pages;
102a576ab5bSrab     uint64_aligned_t max_pages;
103a576ab5bSrab     uint64_aligned_t shared_info_frame; /* GMFN of shared_info struct */
104a576ab5bSrab     uint64_aligned_t cpu_time;
105843e1988Sjohnlev     uint32_t nr_online_vcpus;    /* Number of VCPUs currently online. */
106843e1988Sjohnlev     uint32_t max_vcpu_id;        /* Maximum VCPUID in use by this domain. */
107843e1988Sjohnlev     uint32_t ssidref;
108843e1988Sjohnlev     xen_domain_handle_t handle;
109843e1988Sjohnlev };
110843e1988Sjohnlev typedef struct xen_domctl_getdomaininfo xen_domctl_getdomaininfo_t;
111843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_getdomaininfo_t);
112843e1988Sjohnlev 
113843e1988Sjohnlev 
114843e1988Sjohnlev #define XEN_DOMCTL_getmemlist         6
115843e1988Sjohnlev struct xen_domctl_getmemlist {
116843e1988Sjohnlev     /* IN variables. */
117843e1988Sjohnlev     /* Max entries to write to output buffer. */
118a576ab5bSrab     uint64_aligned_t max_pfns;
119843e1988Sjohnlev     /* Start index in guest's page list. */
120a576ab5bSrab     uint64_aligned_t start_pfn;
121349b53ddSStuart Maybee     XEN_GUEST_HANDLE_64(uint64) buffer;
122843e1988Sjohnlev     /* OUT variables. */
123a576ab5bSrab     uint64_aligned_t num_pfns;
124843e1988Sjohnlev };
125843e1988Sjohnlev typedef struct xen_domctl_getmemlist xen_domctl_getmemlist_t;
126843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_getmemlist_t);
127843e1988Sjohnlev 
128843e1988Sjohnlev 
129843e1988Sjohnlev #define XEN_DOMCTL_getpageframeinfo   7
130843e1988Sjohnlev 
131843e1988Sjohnlev #define XEN_DOMCTL_PFINFO_LTAB_SHIFT 28
132a576ab5bSrab #define XEN_DOMCTL_PFINFO_NOTAB   (0x0U<<28)
133a576ab5bSrab #define XEN_DOMCTL_PFINFO_L1TAB   (0x1U<<28)
134a576ab5bSrab #define XEN_DOMCTL_PFINFO_L2TAB   (0x2U<<28)
135a576ab5bSrab #define XEN_DOMCTL_PFINFO_L3TAB   (0x3U<<28)
136a576ab5bSrab #define XEN_DOMCTL_PFINFO_L4TAB   (0x4U<<28)
137a576ab5bSrab #define XEN_DOMCTL_PFINFO_LTABTYPE_MASK (0x7U<<28)
138a576ab5bSrab #define XEN_DOMCTL_PFINFO_LPINTAB (0x1U<<31)
139a576ab5bSrab #define XEN_DOMCTL_PFINFO_XTAB    (0xfU<<28) /* invalid page */
140a576ab5bSrab #define XEN_DOMCTL_PFINFO_LTAB_MASK (0xfU<<28)
141843e1988Sjohnlev 
142843e1988Sjohnlev struct xen_domctl_getpageframeinfo {
143843e1988Sjohnlev     /* IN variables. */
144a576ab5bSrab     uint64_aligned_t gmfn; /* GMFN to query */
145843e1988Sjohnlev     /* OUT variables. */
146843e1988Sjohnlev     /* Is the page PINNED to a type? */
147843e1988Sjohnlev     uint32_t type;         /* see above type defs */
148843e1988Sjohnlev };
149843e1988Sjohnlev typedef struct xen_domctl_getpageframeinfo xen_domctl_getpageframeinfo_t;
150843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_getpageframeinfo_t);
151843e1988Sjohnlev 
152843e1988Sjohnlev 
153843e1988Sjohnlev #define XEN_DOMCTL_getpageframeinfo2  8
154843e1988Sjohnlev struct xen_domctl_getpageframeinfo2 {
155843e1988Sjohnlev     /* IN variables. */
156a576ab5bSrab     uint64_aligned_t num;
157843e1988Sjohnlev     /* IN/OUT variables. */
158349b53ddSStuart Maybee     XEN_GUEST_HANDLE_64(uint32) array;
159843e1988Sjohnlev };
160843e1988Sjohnlev typedef struct xen_domctl_getpageframeinfo2 xen_domctl_getpageframeinfo2_t;
161843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_getpageframeinfo2_t);
162843e1988Sjohnlev 
163843e1988Sjohnlev 
164843e1988Sjohnlev /*
165843e1988Sjohnlev  * Control shadow pagetables operation
166843e1988Sjohnlev  */
167843e1988Sjohnlev #define XEN_DOMCTL_shadow_op         10
168843e1988Sjohnlev 
169843e1988Sjohnlev /* Disable shadow mode. */
170843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_OFF         0
171843e1988Sjohnlev 
172843e1988Sjohnlev /* Enable shadow mode (mode contains ORed XEN_DOMCTL_SHADOW_ENABLE_* flags). */
173843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_ENABLE      32
174843e1988Sjohnlev 
175843e1988Sjohnlev /* Log-dirty bitmap operations. */
176843e1988Sjohnlev  /* Return the bitmap and clean internal copy for next round. */
177843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_CLEAN       11
178843e1988Sjohnlev  /* Return the bitmap but do not modify internal copy. */
179843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_PEEK        12
180843e1988Sjohnlev 
181843e1988Sjohnlev /* Memory allocation accessors. */
182843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION   30
183843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION   31
184843e1988Sjohnlev 
185843e1988Sjohnlev /* Legacy enable operations. */
186843e1988Sjohnlev  /* Equiv. to ENABLE with no mode flags. */
187843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_ENABLE_TEST       1
188843e1988Sjohnlev  /* Equiv. to ENABLE with mode flag ENABLE_LOG_DIRTY. */
189843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY   2
190843e1988Sjohnlev  /* Equiv. to ENABLE with mode flags ENABLE_REFCOUNT and ENABLE_TRANSLATE. */
191843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_OP_ENABLE_TRANSLATE  3
192843e1988Sjohnlev 
193843e1988Sjohnlev /* Mode flags for XEN_DOMCTL_SHADOW_OP_ENABLE. */
194843e1988Sjohnlev  /*
195843e1988Sjohnlev   * Shadow pagetables are refcounted: guest does not use explicit mmu
196843e1988Sjohnlev   * operations nor write-protect its pagetables.
197843e1988Sjohnlev   */
198843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT  (1 << 1)
199843e1988Sjohnlev  /*
200843e1988Sjohnlev   * Log pages in a bitmap as they are dirtied.
201843e1988Sjohnlev   * Used for live relocation to determine which pages must be re-sent.
202843e1988Sjohnlev   */
203843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY (1 << 2)
204843e1988Sjohnlev  /*
205843e1988Sjohnlev   * Automatically translate GPFNs into MFNs.
206843e1988Sjohnlev   */
207843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE (1 << 3)
208843e1988Sjohnlev  /*
209843e1988Sjohnlev   * Xen does not steal virtual address space from the guest.
210843e1988Sjohnlev   * Requires HVM support.
211843e1988Sjohnlev   */
212843e1988Sjohnlev #define XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL  (1 << 4)
213843e1988Sjohnlev 
214843e1988Sjohnlev struct xen_domctl_shadow_op_stats {
215843e1988Sjohnlev     uint32_t fault_count;
216843e1988Sjohnlev     uint32_t dirty_count;
217843e1988Sjohnlev };
218843e1988Sjohnlev typedef struct xen_domctl_shadow_op_stats xen_domctl_shadow_op_stats_t;
219843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_shadow_op_stats_t);
220843e1988Sjohnlev 
221843e1988Sjohnlev struct xen_domctl_shadow_op {
222843e1988Sjohnlev     /* IN variables. */
223843e1988Sjohnlev     uint32_t       op;       /* XEN_DOMCTL_SHADOW_OP_* */
224843e1988Sjohnlev 
225843e1988Sjohnlev     /* OP_ENABLE */
226843e1988Sjohnlev     uint32_t       mode;     /* XEN_DOMCTL_SHADOW_ENABLE_* */
227843e1988Sjohnlev 
228843e1988Sjohnlev     /* OP_GET_ALLOCATION / OP_SET_ALLOCATION */
229843e1988Sjohnlev     uint32_t       mb;       /* Shadow memory allocation in MB */
230843e1988Sjohnlev 
231843e1988Sjohnlev     /* OP_PEEK / OP_CLEAN */
232349b53ddSStuart Maybee     XEN_GUEST_HANDLE_64(uint8) dirty_bitmap;
233a576ab5bSrab     uint64_aligned_t pages; /* Size of buffer. Updated with actual size. */
234843e1988Sjohnlev     struct xen_domctl_shadow_op_stats stats;
235843e1988Sjohnlev };
236843e1988Sjohnlev typedef struct xen_domctl_shadow_op xen_domctl_shadow_op_t;
237843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_shadow_op_t);
238843e1988Sjohnlev 
239843e1988Sjohnlev 
240843e1988Sjohnlev #define XEN_DOMCTL_max_mem           11
241843e1988Sjohnlev struct xen_domctl_max_mem {
242843e1988Sjohnlev     /* IN variables. */
243a576ab5bSrab     uint64_aligned_t max_memkb;
244843e1988Sjohnlev };
245843e1988Sjohnlev typedef struct xen_domctl_max_mem xen_domctl_max_mem_t;
246843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_mem_t);
247843e1988Sjohnlev 
248843e1988Sjohnlev 
249843e1988Sjohnlev #define XEN_DOMCTL_setvcpucontext    12
250843e1988Sjohnlev #define XEN_DOMCTL_getvcpucontext    13
251843e1988Sjohnlev struct xen_domctl_vcpucontext {
252843e1988Sjohnlev     uint32_t              vcpu;                  /* IN */
253a576ab5bSrab     XEN_GUEST_HANDLE_64(vcpu_guest_context_t) ctxt; /* IN/OUT */
254843e1988Sjohnlev };
255843e1988Sjohnlev typedef struct xen_domctl_vcpucontext xen_domctl_vcpucontext_t;
256843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpucontext_t);
257843e1988Sjohnlev 
258843e1988Sjohnlev 
259843e1988Sjohnlev #define XEN_DOMCTL_getvcpuinfo       14
260843e1988Sjohnlev struct xen_domctl_getvcpuinfo {
261843e1988Sjohnlev     /* IN variables. */
262843e1988Sjohnlev     uint32_t vcpu;
263843e1988Sjohnlev     /* OUT variables. */
264843e1988Sjohnlev     uint8_t  online;                  /* currently online (not hotplugged)? */
265843e1988Sjohnlev     uint8_t  blocked;                 /* blocked waiting for an event? */
266843e1988Sjohnlev     uint8_t  running;                 /* currently scheduled on its CPU? */
267a576ab5bSrab     uint64_aligned_t cpu_time;        /* total cpu time consumed (ns) */
268843e1988Sjohnlev     uint32_t cpu;                     /* current mapping   */
269843e1988Sjohnlev };
270843e1988Sjohnlev typedef struct xen_domctl_getvcpuinfo xen_domctl_getvcpuinfo_t;
271843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_getvcpuinfo_t);
272843e1988Sjohnlev 
273843e1988Sjohnlev 
274843e1988Sjohnlev /* Get/set which physical cpus a vcpu can execute on. */
275843e1988Sjohnlev #define XEN_DOMCTL_setvcpuaffinity    9
276843e1988Sjohnlev #define XEN_DOMCTL_getvcpuaffinity   25
277843e1988Sjohnlev struct xen_domctl_vcpuaffinity {
278843e1988Sjohnlev     uint32_t  vcpu;              /* IN */
279843e1988Sjohnlev     struct xenctl_cpumap cpumap; /* IN/OUT */
280843e1988Sjohnlev };
281843e1988Sjohnlev typedef struct xen_domctl_vcpuaffinity xen_domctl_vcpuaffinity_t;
282843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpuaffinity_t);
283843e1988Sjohnlev 
284843e1988Sjohnlev 
285843e1988Sjohnlev #define XEN_DOMCTL_max_vcpus         15
286843e1988Sjohnlev struct xen_domctl_max_vcpus {
287843e1988Sjohnlev     uint32_t max;           /* maximum number of vcpus */
288843e1988Sjohnlev };
289843e1988Sjohnlev typedef struct xen_domctl_max_vcpus xen_domctl_max_vcpus_t;
290843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_vcpus_t);
291843e1988Sjohnlev 
292843e1988Sjohnlev 
293843e1988Sjohnlev #define XEN_DOMCTL_scheduler_op      16
294843e1988Sjohnlev /* Scheduler types. */
295843e1988Sjohnlev #define XEN_SCHEDULER_SEDF     4
296843e1988Sjohnlev #define XEN_SCHEDULER_CREDIT   5
297843e1988Sjohnlev /* Set or get info? */
298843e1988Sjohnlev #define XEN_DOMCTL_SCHEDOP_putinfo 0
299843e1988Sjohnlev #define XEN_DOMCTL_SCHEDOP_getinfo 1
300843e1988Sjohnlev struct xen_domctl_scheduler_op {
301843e1988Sjohnlev     uint32_t sched_id;  /* XEN_SCHEDULER_* */
302843e1988Sjohnlev     uint32_t cmd;       /* XEN_DOMCTL_SCHEDOP_* */
303843e1988Sjohnlev     union {
304843e1988Sjohnlev         struct xen_domctl_sched_sedf {
305a576ab5bSrab             uint64_aligned_t period;
306a576ab5bSrab             uint64_aligned_t slice;
307a576ab5bSrab             uint64_aligned_t latency;
308843e1988Sjohnlev             uint32_t extratime;
309843e1988Sjohnlev             uint32_t weight;
310843e1988Sjohnlev         } sedf;
311843e1988Sjohnlev         struct xen_domctl_sched_credit {
312843e1988Sjohnlev             uint16_t weight;
313843e1988Sjohnlev             uint16_t cap;
314843e1988Sjohnlev         } credit;
315843e1988Sjohnlev     } u;
316843e1988Sjohnlev };
317843e1988Sjohnlev typedef struct xen_domctl_scheduler_op xen_domctl_scheduler_op_t;
318843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_scheduler_op_t);
319843e1988Sjohnlev 
320843e1988Sjohnlev 
321843e1988Sjohnlev #define XEN_DOMCTL_setdomainhandle   17
322843e1988Sjohnlev struct xen_domctl_setdomainhandle {
323843e1988Sjohnlev     xen_domain_handle_t handle;
324843e1988Sjohnlev };
325843e1988Sjohnlev typedef struct xen_domctl_setdomainhandle xen_domctl_setdomainhandle_t;
326843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_setdomainhandle_t);
327843e1988Sjohnlev 
328843e1988Sjohnlev 
329843e1988Sjohnlev #define XEN_DOMCTL_setdebugging      18
330843e1988Sjohnlev struct xen_domctl_setdebugging {
331843e1988Sjohnlev     uint8_t enable;
332843e1988Sjohnlev };
333843e1988Sjohnlev typedef struct xen_domctl_setdebugging xen_domctl_setdebugging_t;
334843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_setdebugging_t);
335843e1988Sjohnlev 
336843e1988Sjohnlev 
337843e1988Sjohnlev #define XEN_DOMCTL_irq_permission    19
338843e1988Sjohnlev struct xen_domctl_irq_permission {
339843e1988Sjohnlev     uint8_t pirq;
340843e1988Sjohnlev     uint8_t allow_access;    /* flag to specify enable/disable of IRQ access */
341843e1988Sjohnlev };
342843e1988Sjohnlev typedef struct xen_domctl_irq_permission xen_domctl_irq_permission_t;
343843e1988Sjohnlev DEFINE_XEN_GUEST_HANDLE(xen_domctl_irq_permission_t);
344843e1988Sjohnlev 
345