LCOV - code coverage report
Current view: top level - zephyr/xen/public - domctl.h Hit Total Coverage
Test: new.info Lines: 0 267 0.0 %
Date: 2024-12-22 00:14:23

          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__ */

Generated by: LCOV version 1.14