Line data Source code
1 0 : /* SPDX-License-Identifier: MIT */ 2 : /****************************************************************************** 3 : * domctl.h 4 : * 5 : * Domain management operations. For use by node control stack. 6 : * 7 : * Copyright (c) 2002-2003, B Dragovic 8 : * Copyright (c) 2002-2006, K Fraser 9 : */ 10 : 11 : #ifndef __XEN_PUBLIC_DOMCTL_H__ 12 : #define __XEN_PUBLIC_DOMCTL_H__ 13 : 14 : #ifndef CONFIG_XEN_DOM0 15 : #error "domctl operations are intended for use by node control tools only" 16 : #endif 17 : 18 : #include "xen.h" 19 : #include "event_channel.h" 20 : #include "grant_table.h" 21 : #include "memory.h" 22 : 23 0 : #define XEN_DOMCTL_INTERFACE_VERSION 0x00000015 24 : 25 : /* 26 : * NB. xen_domctl.domain is an IN/OUT parameter for this operation. 27 : * If it is specified as an invalid value (0 or >= DOMID_FIRST_RESERVED), 28 : * an id is auto-allocated and returned. 29 : */ 30 : /* XEN_DOMCTL_createdomain */ 31 0 : struct xen_domctl_createdomain { 32 : /* IN parameters */ 33 0 : uint32_t ssidref; 34 0 : xen_domain_handle_t handle; 35 : /* Is this an HVM guest (as opposed to a PV guest)? */ 36 : #define _XEN_DOMCTL_CDF_hvm 0 37 0 : #define XEN_DOMCTL_CDF_hvm (1U << _XEN_DOMCTL_CDF_hvm) 38 : /* Use hardware-assisted paging if available? */ 39 : #define _XEN_DOMCTL_CDF_hap 1 40 0 : #define XEN_DOMCTL_CDF_hap (1U << _XEN_DOMCTL_CDF_hap) 41 : /* Should domain memory integrity be verified by tboot during Sx? */ 42 : #define _XEN_DOMCTL_CDF_s3_integrity 2 43 0 : #define XEN_DOMCTL_CDF_s3_integrity (1U << _XEN_DOMCTL_CDF_s3_integrity) 44 : /* Disable out-of-sync shadow page tables? */ 45 : #define _XEN_DOMCTL_CDF_oos_off 3 46 0 : #define XEN_DOMCTL_CDF_oos_off (1U << _XEN_DOMCTL_CDF_oos_off) 47 : /* Is this a xenstore domain? */ 48 : #define _XEN_DOMCTL_CDF_xs_domain 4 49 0 : #define XEN_DOMCTL_CDF_xs_domain (1U << _XEN_DOMCTL_CDF_xs_domain) 50 : /* Should this domain be permitted to use the IOMMU? */ 51 : #define _XEN_DOMCTL_CDF_iommu 5 52 0 : #define XEN_DOMCTL_CDF_iommu (1U << _XEN_DOMCTL_CDF_iommu) 53 : #define _XEN_DOMCTL_CDF_nested_virt 6 54 0 : #define XEN_DOMCTL_CDF_nested_virt (1U << _XEN_DOMCTL_CDF_nested_virt) 55 : /* Should we expose the vPMU to the guest? */ 56 0 : #define XEN_DOMCTL_CDF_vpmu (1U << 7) 57 : 58 : /* Max XEN_DOMCTL_CDF_* constant. Used for ABI checking. */ 59 0 : #define XEN_DOMCTL_CDF_MAX XEN_DOMCTL_CDF_vpmu 60 : 61 0 : uint32_t flags; 62 : 63 : #define _XEN_DOMCTL_IOMMU_no_sharept 0 64 0 : #define XEN_DOMCTL_IOMMU_no_sharep (1U << _XEN_DOMCTL_IOMMU_no_sharept) 65 : 66 : /* Max XEN_DOMCTL_IOMMU_* constant. Used for ABI checking. */ 67 0 : #define XEN_DOMCTL_IOMMU_MAX XEN_DOMCTL_IOMMU_no_sharept 68 : 69 0 : uint32_t iommu_opts; 70 : 71 : /* 72 : * Various domain limits, which impact the quantity of resources 73 : * (global mapping space, xenheap, etc) a guest may consume. For 74 : * max_grant_frames and max_maptrack_frames, < 0 means "use the 75 : * default maximum value in the hypervisor". 76 : */ 77 0 : uint32_t max_vcpus; 78 0 : uint32_t max_evtchn_port; 79 0 : int32_t max_grant_frames; 80 0 : int32_t max_maptrack_frames; 81 : 82 : /* Grant version, use low 4 bits. */ 83 0 : #define XEN_DOMCTL_GRANT_version_mask 0xf 84 0 : #define XEN_DOMCTL_GRANT_version(v) ((v) & XEN_DOMCTL_GRANT_version_mask) 85 : 86 0 : uint32_t grant_opts; 87 : 88 : /* Per-vCPU buffer size in bytes. 0 to disable. */ 89 0 : uint32_t vmtrace_size; 90 : 91 : /* CPU pool to use; specify 0 or a specific existing pool */ 92 0 : uint32_t cpupool_id; 93 : 94 0 : struct xen_arch_domainconfig arch; 95 : }; 96 : 97 : /* XEN_DOMCTL_getdomaininfo */ 98 0 : struct xen_domctl_getdomaininfo { 99 : /* OUT variables. */ 100 0 : domid_t domain; /* Also echoed in domctl.domain */ 101 0 : uint16_t pad1; 102 : /* Domain is scheduled to die. */ 103 : #define _XEN_DOMINF_dying 0 104 0 : #define XEN_DOMINF_dying (1U << _XEN_DOMINF_dying) 105 : /* Domain is an HVM guest (as opposed to a PV guest). */ 106 : #define _XEN_DOMINF_hvm_guest 1 107 0 : #define XEN_DOMINF_hvm_guest (1U << _XEN_DOMINF_hvm_guest) 108 : /* The guest OS has shut down. */ 109 : #define _XEN_DOMINF_shutdown 2 110 0 : #define XEN_DOMINF_shutdown (1U << _XEN_DOMINF_shutdown) 111 : /* Currently paused by control software. */ 112 : #define _XEN_DOMINF_paused 3 113 0 : #define XEN_DOMINF_paused (1U << _XEN_DOMINF_paused) 114 : /* Currently blocked pending an event. */ 115 : #define _XEN_DOMINF_blocked 4 116 0 : #define XEN_DOMINF_blocked (1U << _XEN_DOMINF_blocked) 117 : /* Domain is currently running. */ 118 : #define _XEN_DOMINF_running 5 119 0 : #define XEN_DOMINF_running (1U << _XEN_DOMINF_running) 120 : /* Being debugged. */ 121 : #define _XEN_DOMINF_debugged 6 122 0 : #define XEN_DOMINF_debugged (1U << _XEN_DOMINF_debugged) 123 : /* domain is a xenstore domain */ 124 : #define _XEN_DOMINF_xs_domain 7 125 0 : #define XEN_DOMINF_xs_domain (1U << _XEN_DOMINF_xs_domain) 126 : /* domain has hardware assisted paging */ 127 : #define _XEN_DOMINF_hap 8 128 0 : #define XEN_DOMINF_hap (1U << _XEN_DOMINF_hap) 129 : /* XEN_DOMINF_shutdown guest-supplied code. */ 130 0 : #define XEN_DOMINF_shutdownmask 255 131 0 : #define XEN_DOMINF_shutdownshift 16 132 0 : uint32_t flags; /* XEN_DOMINF_* */ 133 0 : uint64_aligned_t tot_pages; 134 0 : uint64_aligned_t max_pages; 135 0 : uint64_aligned_t outstanding_pages; 136 0 : uint64_aligned_t shr_pages; 137 0 : uint64_aligned_t paged_pages; 138 0 : uint64_aligned_t shared_info_frame; /* GMFN of shared_info struct */ 139 0 : uint64_aligned_t cpu_time; 140 0 : uint32_t nr_online_vcpus; /* Number of VCPUs currently online. */ 141 0 : #define XEN_INVALID_MAX_VCPU_ID (~0U) /* Domain has no vcpus? */ 142 0 : uint32_t max_vcpu_id; /* Maximum VCPUID in use by this domain. */ 143 0 : uint32_t ssidref; 144 0 : xen_domain_handle_t handle; 145 0 : uint32_t cpupool; 146 0 : uint8_t gpaddr_bits; /* Guest physical address space size. */ 147 0 : uint8_t pad2[7]; 148 0 : struct xen_arch_domainconfig arch_config; 149 : }; 150 0 : typedef struct xen_domctl_getdomaininfo xen_domctl_getdomaininfo_t; 151 0 : DEFINE_XEN_GUEST_HANDLE(xen_domctl_getdomaininfo_t); 152 : 153 : /* 154 : * Control shadow pagetables operation 155 : */ 156 : /* XEN_DOMCTL_shadow_op */ 157 : 158 : /* Memory allocation accessors. */ 159 0 : #define XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION 30 160 0 : #define XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION 31 161 : 162 0 : struct xen_domctl_shadow_op_stats { 163 0 : uint32_t fault_count; 164 0 : uint32_t dirty_count; 165 : }; 166 : 167 0 : struct xen_domctl_shadow_op { 168 : /* IN variables. */ 169 0 : uint32_t op; /* XEN_DOMCTL_SHADOW_OP_* */ 170 : 171 : /* OP_ENABLE: XEN_DOMCTL_SHADOW_ENABLE_* */ 172 : /* OP_PEAK / OP_CLEAN: XEN_DOMCTL_SHADOW_LOGDIRTY_* */ 173 0 : uint32_t mode; 174 : 175 : /* OP_GET_ALLOCATION / OP_SET_ALLOCATION */ 176 0 : uint32_t mb; /* Shadow memory allocation in MB */ 177 : 178 : /* OP_PEEK / OP_CLEAN */ 179 0 : XEN_GUEST_HANDLE_64(uint8_t) dirty_bitmap; 180 0 : uint64_aligned_t pages; /* Size of buffer. Updated with actual size. */ 181 0 : struct xen_domctl_shadow_op_stats stats; 182 : }; 183 : 184 : /* XEN_DOMCTL_max_mem */ 185 0 : struct xen_domctl_max_mem { 186 : /* IN variables. */ 187 0 : uint64_aligned_t max_memkb; 188 : }; 189 : 190 : /* XEN_DOMCTL_setvcpucontext */ 191 : /* XEN_DOMCTL_getvcpucontext */ 192 0 : struct xen_domctl_vcpucontext { 193 0 : uint32_t vcpu; /* IN */ 194 : 195 0 : XEN_GUEST_HANDLE_64(vcpu_guest_context_t) ctxt; /* IN/OUT */ 196 : }; 197 : 198 : /* 199 : * XEN_DOMCTL_max_vcpus: 200 : * 201 : * The parameter passed to XEN_DOMCTL_max_vcpus must match the value passed to 202 : * XEN_DOMCTL_createdomain. This hypercall is in the process of being removed 203 : * (once the failure paths in domain_create() have been improved), but is 204 : * still required in the short term to allocate the vcpus themselves. 205 : */ 206 0 : struct xen_domctl_max_vcpus { 207 0 : uint32_t max; /* maximum number of vcpus */ 208 : }; 209 : 210 : /* XEN_DOMCTL_scheduler_op */ 211 : /* Scheduler types. */ 212 : /* #define XEN_SCHEDULER_SEDF 4 (Removed) */ 213 0 : #define XEN_SCHEDULER_CREDIT 5 214 0 : #define XEN_SCHEDULER_CREDIT2 6 215 0 : #define XEN_SCHEDULER_ARINC653 7 216 0 : #define XEN_SCHEDULER_RTDS 8 217 0 : #define XEN_SCHEDULER_NULL 9 218 : 219 0 : struct xen_domctl_sched_credit { 220 0 : uint16_t weight; 221 0 : uint16_t cap; 222 : }; 223 : 224 0 : struct xen_domctl_sched_credit2 { 225 0 : uint16_t weight; 226 0 : uint16_t cap; 227 : }; 228 : 229 0 : struct xen_domctl_sched_rtds { 230 0 : uint32_t period; 231 0 : uint32_t budget; 232 : /* Can this vCPU execute beyond its reserved amount of time? */ 233 : #define _XEN_DOMCTL_SCHEDRT_extra 0 234 0 : #define XEN_DOMCTL_SCHEDRT_extra (1U<<_XEN_DOMCTL_SCHEDRT_extra) 235 0 : uint32_t flags; 236 : }; 237 : 238 0 : typedef struct xen_domctl_schedparam_vcpu { 239 : union { 240 0 : struct xen_domctl_sched_credit credit; 241 0 : struct xen_domctl_sched_credit2 credit2; 242 0 : struct xen_domctl_sched_rtds rtds; 243 0 : } u; 244 0 : uint32_t vcpuid; 245 0 : } xen_domctl_schedparam_vcpu_t; 246 0 : DEFINE_XEN_GUEST_HANDLE(xen_domctl_schedparam_vcpu_t); 247 : 248 : /* 249 : * Set or get info? 250 : * For schedulers supporting per-vcpu settings (e.g., RTDS): 251 : * XEN_DOMCTL_SCHEDOP_putinfo sets params for all vcpus; 252 : * XEN_DOMCTL_SCHEDOP_getinfo gets default params; 253 : * XEN_DOMCTL_SCHEDOP_put(get)vcpuinfo sets (gets) params of vcpus; 254 : * 255 : * For schedulers not supporting per-vcpu settings: 256 : * XEN_DOMCTL_SCHEDOP_putinfo sets params for all vcpus; 257 : * XEN_DOMCTL_SCHEDOP_getinfo gets domain-wise params; 258 : * XEN_DOMCTL_SCHEDOP_put(get)vcpuinfo returns error; 259 : */ 260 0 : #define XEN_DOMCTL_SCHEDOP_putinfo 0 261 0 : #define XEN_DOMCTL_SCHEDOP_getinfo 1 262 0 : #define XEN_DOMCTL_SCHEDOP_putvcpuinfo 2 263 0 : #define XEN_DOMCTL_SCHEDOP_getvcpuinfo 3 264 0 : struct xen_domctl_scheduler_op { 265 0 : uint32_t sched_id; /* XEN_SCHEDULER_* */ 266 0 : uint32_t cmd; /* XEN_DOMCTL_SCHEDOP_* */ 267 : /* IN/OUT */ 268 : union { 269 0 : struct xen_domctl_sched_credit credit; 270 0 : struct xen_domctl_sched_credit2 credit2; 271 0 : struct xen_domctl_sched_rtds rtds; 272 : struct { 273 0 : XEN_GUEST_HANDLE_64(xen_domctl_schedparam_vcpu_t) vcpus; 274 : /* 275 : * IN: Number of elements in vcpus array. 276 : * OUT: Number of processed elements of vcpus array. 277 : */ 278 0 : uint32_t nr_vcpus; 279 0 : uint32_t padding; 280 0 : } v; 281 0 : } u; 282 : }; 283 : 284 : /* XEN_DOMCTL_iomem_permission */ 285 0 : struct xen_domctl_iomem_permission { 286 0 : uint64_aligned_t first_mfn;/* first page (physical page number) in range */ 287 0 : uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ 288 0 : uint8_t allow_access; /* allow (!0) or deny (0) access to range? */ 289 : }; 290 : 291 : /* XEN_DOMCTL_set_address_size */ 292 : /* XEN_DOMCTL_get_address_size */ 293 0 : struct xen_domctl_address_size { 294 0 : uint32_t size; 295 : }; 296 : 297 : /* Assign a device to a guest. Sets up IOMMU structures. */ 298 : /* XEN_DOMCTL_assign_device */ 299 : /* 300 : * XEN_DOMCTL_test_assign_device: Pass DOMID_INVALID to find out whether the 301 : * given device is assigned to any DomU at all. Pass a specific domain ID to 302 : * find out whether the given device can be assigned to that domain. 303 : */ 304 : /* 305 : * XEN_DOMCTL_deassign_device: The behavior of this DOMCTL differs 306 : * between the different type of device: 307 : * - PCI device (XEN_DOMCTL_DEV_PCI) will be reassigned to DOM0 308 : * - DT device (XEN_DOMCTL_DEV_DT) will left unassigned. DOM0 309 : * will have to call XEN_DOMCTL_assign_device in order to use the 310 : * device. 311 : */ 312 0 : #define XEN_DOMCTL_DEV_PCI 0 313 0 : #define XEN_DOMCTL_DEV_DT 1 314 0 : struct xen_domctl_assign_device { 315 : /* IN */ 316 0 : uint32_t dev; /* XEN_DOMCTL_DEV_* */ 317 0 : uint32_t flags; 318 0 : #define XEN_DOMCTL_DEV_RDM_RELAXED 1 /* assign only */ 319 : union { 320 : struct { 321 0 : uint32_t machine_sbdf; /* machine PCI ID of assigned device */ 322 0 : } pci; 323 : struct { 324 0 : uint32_t size; /* Length of the path */ 325 : 326 0 : XEN_GUEST_HANDLE_64(char) path; /* path to the device tree node */ 327 0 : } dt; 328 0 : } u; 329 : }; 330 : 331 : /* Pass-through interrupts: bind real irq -> hvm devfn. */ 332 : /* XEN_DOMCTL_bind_pt_irq */ 333 : /* XEN_DOMCTL_unbind_pt_irq */ 334 0 : enum pt_irq_type { 335 : PT_IRQ_TYPE_PCI, 336 : PT_IRQ_TYPE_ISA, 337 : PT_IRQ_TYPE_MSI, 338 : PT_IRQ_TYPE_MSI_TRANSLATE, 339 : PT_IRQ_TYPE_SPI, /* ARM: valid range 32-1019 */ 340 : }; 341 0 : struct xen_domctl_bind_pt_irq { 342 0 : uint32_t machine_irq; 343 0 : uint32_t irq_type; /* enum pt_irq_type */ 344 : 345 : union { 346 : struct { 347 0 : uint8_t isa_irq; 348 0 : } isa; 349 : struct { 350 0 : uint8_t bus; 351 0 : uint8_t device; 352 0 : uint8_t intx; 353 0 : } pci; 354 : struct { 355 0 : uint8_t gvec; 356 0 : uint32_t gflags; 357 0 : #define XEN_DOMCTL_VMSI_X86_DEST_ID_MASK 0x0000ff 358 0 : #define XEN_DOMCTL_VMSI_X86_RH_MASK 0x000100 359 0 : #define XEN_DOMCTL_VMSI_X86_DM_MASK 0x000200 360 0 : #define XEN_DOMCTL_VMSI_X86_DELIV_MASK 0x007000 361 0 : #define XEN_DOMCTL_VMSI_X86_TRIG_MASK 0x008000 362 0 : #define XEN_DOMCTL_VMSI_X86_UNMASKED 0x010000 363 : 364 0 : uint64_aligned_t gtable; 365 0 : } msi; 366 : struct { 367 0 : uint16_t spi; 368 0 : } spi; 369 0 : } u; 370 : }; 371 : 372 : 373 : /* Bind machine I/O address range -> HVM address range. */ 374 : /* XEN_DOMCTL_memory_mapping */ 375 : /* Returns 376 : * - zero success, everything done 377 : * - -E2BIG passed in nr_mfns value too large for the implementation 378 : * - positive partial success for the first <result> page frames (with 379 : * <result> less than nr_mfns), requiring re-invocation by the 380 : * caller after updating inputs 381 : * - negative error; other than -E2BIG 382 : */ 383 0 : #define DPCI_ADD_MAPPING 1 384 0 : #define DPCI_REMOVE_MAPPING 0 385 0 : struct xen_domctl_memory_mapping { 386 0 : uint64_aligned_t first_gfn; /* first page (hvm guest phys page) in range */ 387 0 : uint64_aligned_t first_mfn; /* first page (machine page) in range */ 388 0 : uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ 389 0 : uint32_t add_mapping; /* add or remove mapping */ 390 0 : uint32_t padding; /* padding for 64-bit aligned structure */ 391 : }; 392 : 393 : /* 394 : * ARM: Clean and invalidate caches associated with given region of 395 : * guest memory. 396 : */ 397 0 : struct xen_domctl_cacheflush { 398 : /* IN: page range to flush. */ 399 0 : xen_pfn_t start_pfn, nr_pfns; 400 : }; 401 : 402 : /* 403 : * XEN_DOMCTL_get_paging_mempool_size / XEN_DOMCTL_set_paging_mempool_size. 404 : * 405 : * Get or set the paging memory pool size. The size is in bytes. 406 : * 407 : * This is a dedicated pool of memory for Xen to use while managing the guest, 408 : * typically containing pagetables. As such, there is an implementation 409 : * specific minimum granularity. 410 : * 411 : * The set operation can fail mid-way through the request (e.g. Xen running 412 : * out of memory, no free memory to reclaim from the pool, etc.). 413 : */ 414 0 : struct xen_domctl_paging_mempool { 415 0 : uint64_aligned_t size; /* Size in bytes. */ 416 : }; 417 : 418 0 : struct xen_domctl { 419 0 : uint32_t cmd; 420 0 : #define XEN_DOMCTL_createdomain 1 421 0 : #define XEN_DOMCTL_destroydomain 2 422 0 : #define XEN_DOMCTL_pausedomain 3 423 0 : #define XEN_DOMCTL_unpausedomain 4 424 0 : #define XEN_DOMCTL_getdomaininfo 5 425 0 : #define XEN_DOMCTL_setvcpuaffinity 9 426 0 : #define XEN_DOMCTL_shadow_op 10 427 0 : #define XEN_DOMCTL_max_mem 11 428 0 : #define XEN_DOMCTL_setvcpucontext 12 429 0 : #define XEN_DOMCTL_getvcpucontext 13 430 0 : #define XEN_DOMCTL_getvcpuinfo 14 431 0 : #define XEN_DOMCTL_max_vcpus 15 432 0 : #define XEN_DOMCTL_scheduler_op 16 433 0 : #define XEN_DOMCTL_setdomainhandle 17 434 0 : #define XEN_DOMCTL_setdebugging 18 435 0 : #define XEN_DOMCTL_irq_permission 19 436 0 : #define XEN_DOMCTL_iomem_permission 20 437 0 : #define XEN_DOMCTL_ioport_permission 21 438 0 : #define XEN_DOMCTL_hypercall_init 22 439 0 : #define XEN_DOMCTL_settimeoffset 24 440 0 : #define XEN_DOMCTL_getvcpuaffinity 25 441 0 : #define XEN_DOMCTL_real_mode_area 26 /* Obsolete PPC only */ 442 0 : #define XEN_DOMCTL_resumedomain 27 443 0 : #define XEN_DOMCTL_sendtrigger 28 444 0 : #define XEN_DOMCTL_subscribe 29 445 0 : #define XEN_DOMCTL_gethvmcontext 33 446 0 : #define XEN_DOMCTL_sethvmcontext 34 447 0 : #define XEN_DOMCTL_set_address_size 35 448 0 : #define XEN_DOMCTL_get_address_size 36 449 0 : #define XEN_DOMCTL_assign_device 37 450 0 : #define XEN_DOMCTL_bind_pt_irq 38 451 0 : #define XEN_DOMCTL_memory_mapping 39 452 0 : #define XEN_DOMCTL_ioport_mapping 40 453 0 : #define XEN_DOMCTL_set_ext_vcpucontext 42 454 0 : #define XEN_DOMCTL_get_ext_vcpucontext 43 455 0 : #define XEN_DOMCTL_set_opt_feature 44 /* Obsolete IA64 only */ 456 0 : #define XEN_DOMCTL_test_assign_device 45 457 0 : #define XEN_DOMCTL_set_target 46 458 0 : #define XEN_DOMCTL_deassign_device 47 459 0 : #define XEN_DOMCTL_unbind_pt_irq 48 460 0 : #define XEN_DOMCTL_get_device_group 50 461 0 : #define XEN_DOMCTL_debug_op 54 462 0 : #define XEN_DOMCTL_gethvmcontext_partial 55 463 0 : #define XEN_DOMCTL_vm_event_op 56 464 0 : #define XEN_DOMCTL_mem_sharing_op 57 465 0 : #define XEN_DOMCTL_gettscinfo 59 466 0 : #define XEN_DOMCTL_settscinfo 60 467 0 : #define XEN_DOMCTL_getpageframeinfo3 61 468 0 : #define XEN_DOMCTL_setvcpuextstate 62 469 0 : #define XEN_DOMCTL_getvcpuextstate 63 470 0 : #define XEN_DOMCTL_set_access_required 64 471 0 : #define XEN_DOMCTL_audit_p2m 65 472 0 : #define XEN_DOMCTL_set_virq_handler 66 473 0 : #define XEN_DOMCTL_set_broken_page_p2m 67 474 0 : #define XEN_DOMCTL_setnodeaffinity 68 475 0 : #define XEN_DOMCTL_getnodeaffinity 69 476 0 : #define XEN_DOMCTL_cacheflush 71 477 0 : #define XEN_DOMCTL_get_vcpu_msrs 72 478 0 : #define XEN_DOMCTL_set_vcpu_msrs 73 479 0 : #define XEN_DOMCTL_setvnumainfo 74 480 0 : #define XEN_DOMCTL_psr_cmt_op 75 481 0 : #define XEN_DOMCTL_monitor_op 77 482 0 : #define XEN_DOMCTL_psr_alloc 78 483 0 : #define XEN_DOMCTL_soft_reset 79 484 0 : #define XEN_DOMCTL_vuart_op 81 485 0 : #define XEN_DOMCTL_get_cpu_policy 82 486 0 : #define XEN_DOMCTL_set_cpu_policy 83 487 0 : #define XEN_DOMCTL_vmtrace_op 84 488 0 : #define XEN_DOMCTL_get_paging_mempool_size 85 489 0 : #define XEN_DOMCTL_set_paging_mempool_size 86 490 0 : #define XEN_DOMCTL_gdbsx_guestmemio 1000 491 0 : #define XEN_DOMCTL_gdbsx_pausevcpu 1001 492 0 : #define XEN_DOMCTL_gdbsx_unpausevcpu 1002 493 0 : #define XEN_DOMCTL_gdbsx_domstatus 1003 494 0 : uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */ 495 0 : domid_t domain; 496 : uint16_t _pad[3]; 497 : union { 498 0 : struct xen_domctl_createdomain createdomain; 499 0 : struct xen_domctl_getdomaininfo getdomaininfo; 500 0 : struct xen_domctl_max_mem max_mem; 501 0 : struct xen_domctl_vcpucontext vcpucontext; 502 0 : struct xen_domctl_max_vcpus max_vcpus; 503 0 : struct xen_domctl_scheduler_op scheduler_op; 504 0 : struct xen_domctl_iomem_permission iomem_permission; 505 0 : struct xen_domctl_address_size address_size; 506 0 : struct xen_domctl_assign_device assign_device; 507 0 : struct xen_domctl_bind_pt_irq bind_pt_irq; 508 0 : struct xen_domctl_memory_mapping memory_mapping; 509 0 : struct xen_domctl_cacheflush cacheflush; 510 0 : struct xen_domctl_paging_mempool paging_mempool; 511 0 : uint8_t pad[128]; 512 0 : } u; 513 : }; 514 0 : typedef struct xen_domctl xen_domctl_t; 515 0 : DEFINE_XEN_GUEST_HANDLE(xen_domctl_t); 516 : 517 : #endif /* __XEN_PUBLIC_DOMCTL_H__ */