@@ -84,7 +84,7 @@ static int build(xc_interface *xch)
struct e820entry e820[3];
struct xen_domctl_createdomain config = {
.ssidref = SECINITSID_DOMU,
- .flags = XEN_DOMCTL_CDF_xs_domain,
+ .flags = XEN_DOMCTL_CDF_XS_DOMAIN,
.max_vcpus = 1,
.max_evtchn_port = -1, /* No limit. */
@@ -176,7 +176,7 @@ static int build(xc_interface *xch)
if ( dom->container_type == XC_DOM_HVM_CONTAINER )
{
- config.flags |= XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap;
+ config.flags |= XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP;
config.arch.emulation_flags = XEN_X86_EMU_LAPIC;
dom->target_pages = mem_size >> XC_PAGE_SHIFT;
dom->mmio_size = GB(4) - LAPIC_BASE_ADDRESS;
@@ -648,30 +648,30 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
};
if (info->type != LIBXL_DOMAIN_TYPE_PV) {
- create.flags |= XEN_DOMCTL_CDF_hvm;
+ create.flags |= XEN_DOMCTL_CDF_HVM;
if ( libxl_defbool_val(info->hap) )
- create.flags |= XEN_DOMCTL_CDF_hap;
+ create.flags |= XEN_DOMCTL_CDF_HAP;
if ( !libxl_defbool_val(info->oos) )
- create.flags |= XEN_DOMCTL_CDF_oos_off;
+ create.flags |= XEN_DOMCTL_CDF_OOS_OFF;
if ( libxl_defbool_val(b_info->nested_hvm) )
- create.flags |= XEN_DOMCTL_CDF_nested_virt;
+ create.flags |= XEN_DOMCTL_CDF_NESTED_VIRT;
}
if (libxl_defbool_val(b_info->vpmu))
- create.flags |= XEN_DOMCTL_CDF_vpmu;
+ create.flags |= XEN_DOMCTL_CDF_VPMU;
assert(info->passthrough != LIBXL_PASSTHROUGH_DEFAULT);
LOG(DETAIL, "passthrough: %s",
libxl_passthrough_to_string(info->passthrough));
if (info->passthrough != LIBXL_PASSTHROUGH_DISABLED)
- create.flags |= XEN_DOMCTL_CDF_iommu;
+ create.flags |= XEN_DOMCTL_CDF_IOMMU;
if (info->passthrough == LIBXL_PASSTHROUGH_SYNC_PT)
- create.iommu_opts |= XEN_DOMCTL_IOMMU_no_sharept;
+ create.iommu_opts |= XEN_DOMCTL_IOMMU_OPTS_NO_SHAREPT;
LOG(DETAIL, "altp2m: %s", libxl_altp2m_mode_to_string(b_info->altp2m));
switch(b_info->altp2m) {
@@ -49,7 +49,7 @@ type x86_arch_emulation_flags =
| X86_EMU_VPCI
type x86_arch_misc_flags =
- | X86_MSR_RELAXED
+ | X86_MISC_MSR_RELAXED
type xen_x86_arch_domainconfig =
{
@@ -72,7 +72,7 @@ type domain_create_flag =
| CDF_VPMU
type domain_create_iommu_opts =
- | IOMMU_NO_SHAREPT
+ | IOMMU_OPTS_NO_SHAREPT
type domctl_create_config =
{
@@ -43,7 +43,7 @@ type x86_arch_emulation_flags =
| X86_EMU_VPCI
type x86_arch_misc_flags =
- | X86_MSR_RELAXED
+ | X86_MISC_MSR_RELAXED
type xen_x86_arch_domainconfig = {
emulation_flags: x86_arch_emulation_flags list;
@@ -65,7 +65,7 @@ type domain_create_flag =
| CDF_VPMU
type domain_create_iommu_opts =
- | IOMMU_NO_SHAREPT
+ | IOMMU_OPTS_NO_SHAREPT
type domctl_create_config = {
ssidref: int32;
@@ -232,13 +232,13 @@ CAMLprim value stub_xc_domain_create(value xch_val, value wanted_domid, value co
domain_handle_of_uuid_string(cfg.handle, String_val(VAL_HANDLE));
cfg.flags = ocaml_list_to_c_bitmap
- /* ! domain_create_flag CDF_ lc */
- /* ! XEN_DOMCTL_CDF_ XEN_DOMCTL_CDF_MAX max */
+ /* ! domain_create_flag CDF_ none */
+ /* ! XEN_DOMCTL_CDF_ XEN_DOMCTL_CDF__ALL all */
(VAL_FLAGS);
cfg.iommu_opts = ocaml_list_to_c_bitmap
- /* ! domain_create_iommu_opts IOMMU_ lc */
- /* ! XEN_DOMCTL_IOMMU_ XEN_DOMCTL_IOMMU_MAX max */
+ /* ! domain_create_iommu_opts IOMMU_ none */
+ /* ! XEN_DOMCTL_IOMMU_ XEN_DOMCTL_IOMMU_OPTS__ALL all */
(VAL_IOMMU_OPTS);
arch_domconfig = Field(VAL_ARCH, 0);
@@ -158,8 +158,8 @@ static PyObject *pyxc_domain_create(XcObject *self,
}
#if defined (__i386) || defined(__x86_64__)
- if ( config.flags & XEN_DOMCTL_CDF_hvm )
- config.arch.emulation_flags = XEN_X86_EMU_ALL &
+ if ( config.flags & XEN_DOMCTL_CDF_HVM )
+ config.arch.emulation_flags = XEN_X86_EMU__ALL &
~(XEN_X86_EMU_VPCI |
XEN_X86_EMU_USE_PIRQ);
#elif defined (__arm__) || defined(__aarch64__)
@@ -22,3 +22,62 @@ value = 2
name = "limited"
description = "Use limited mode for the altp2m."
value = 3
+
+################################################################################
+
+[[bitmaps]]
+name = "xen_domctl_cdf"
+description = "Content of the `flags` field of the domain creation hypercall."
+typ = { tag = "u32" }
+
+[[bitmaps.bits]]
+name = "hvm"
+description = "Set if this is an HVM guest. Cleared if it's PV."
+shift = 0
+
+[[bitmaps.bits]]
+name = "hap"
+description = "Use hardware-assisted paging if available"
+shift = 1
+
+[[bitmaps.bits]]
+name = "s3_integrity"
+description = "Set if domain memory integrity is to be verified by tboot during Sx."
+shift = 2
+
+[[bitmaps.bits]]
+name = "oos_off"
+description = "Set if Out-of-Sync shadow page tables are to be disabled"
+shift = 3
+
+[[bitmaps.bits]]
+name = "xs_domain"
+description = "Set if this is a xenstore domain"
+shift = 4
+
+[[bitmaps.bits]]
+name = "iommu"
+description = "Set if this is domain can make use of the IOMMU"
+shift = 5
+
+[[bitmaps.bits]]
+name = "nested_virt"
+description = "Set for the domain to have nested virtualization enabled."
+shift = 6
+
+[[bitmaps.bits]]
+name = "vpmu"
+description = "Set to expose a vPMU to this domain."
+shift = 7
+
+################################################################################
+
+[[bitmaps]]
+name = "xen_domctl_iommu_opts"
+description = "Content of the `iommu_opts` field of the domain creation hypercall."
+typ = { tag = "u32" }
+
+[[bitmaps.bits]]
+name = "no_sharept"
+description = "Set to _NOT_ share page tables between the CPU and the IOMMU when it would be possible to do so."
+shift = 0
@@ -21,7 +21,7 @@ static xc_interface *xch;
static uint32_t domid;
static struct xen_domctl_createdomain create = {
- .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+ .flags = XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP,
.max_vcpus = 1,
.max_grant_frames = 1,
.max_grant_version = 1,
@@ -143,7 +143,7 @@ static void test_domain_configurations(void)
{
.name = "x86 PVH",
.create = {
- .flags = XEN_DOMCTL_CDF_hvm,
+ .flags = XEN_DOMCTL_CDF_HVM,
.max_vcpus = 2,
.max_grant_frames = 40,
.max_grant_version = 1,
@@ -156,7 +156,7 @@ static void test_domain_configurations(void)
{
.name = "ARM",
.create = {
- .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+ .flags = XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP,
.max_vcpus = 2,
.max_grant_frames = 40,
.max_grant_version = 1,
@@ -175,7 +175,7 @@ static void test_domain_configurations(void)
printf("Test %s\n", t->name);
#if defined(__x86_64__) || defined(__i386__)
- if ( t->create.flags & XEN_DOMCTL_CDF_hvm )
+ if ( t->create.flags & XEN_DOMCTL_CDF_HVM )
{
if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_hvm) )
{
@@ -188,7 +188,7 @@ static void test_domain_configurations(void)
* SHADOW is available.
*/
if ( physinfo.capabilities & XEN_SYSCTL_PHYSCAP_hap )
- t->create.flags |= XEN_DOMCTL_CDF_hap;
+ t->create.flags |= XEN_DOMCTL_CDF_HAP;
else if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_shadow) )
{
printf(" Skip: Neither HAP or SHADOW available\n");
@@ -467,7 +467,7 @@ static void test_guests(void)
if ( xen_has_hvm )
{
struct xen_domctl_createdomain c = {
- .flags = XEN_DOMCTL_CDF_hvm,
+ .flags = XEN_DOMCTL_CDF_HVM,
.max_vcpus = 1,
.max_grant_frames = 1,
.max_grant_version = 1,
@@ -477,7 +477,7 @@ static void test_guests(void)
};
if ( physinfo.capabilities & XEN_SYSCTL_PHYSCAP_hap )
- c.flags |= XEN_DOMCTL_CDF_hap;
+ c.flags |= XEN_DOMCTL_CDF_HAP;
else if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_shadow) )
return fail(" HVM available, but neither HAP nor Shadow\n");
@@ -867,7 +867,7 @@ void __init create_domUs(void)
struct domain *d;
struct xen_domctl_createdomain d_cfg = {
.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE,
- .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+ .flags = XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP,
/*
* The default of 1023 should be sufficient for guests because
* on ARM we don't bind physical interrupts to event channels.
@@ -912,7 +912,7 @@ void __init create_domUs(void)
if ( iommu_enabled &&
(iommu || dt_find_compatible_node(node, NULL,
"multiboot,device-tree")) )
- d_cfg.flags |= XEN_DOMCTL_CDF_iommu;
+ d_cfg.flags |= XEN_DOMCTL_CDF_IOMMU;
if ( !dt_property_read_u32(node, "nr_spis", &d_cfg.arch.nr_spis) )
{
@@ -567,7 +567,7 @@ int arch_vcpu_create(struct vcpu *v)
v->arch.hcr_el2 = get_default_hcr_flags();
v->arch.mdcr_el2 = HDCR_TDRA | HDCR_TDOSA | HDCR_TDA;
- if ( !(v->domain->options & XEN_DOMCTL_CDF_vpmu) )
+ if ( !(v->domain->options & XEN_DOMCTL_CDF_VPMU) )
v->arch.mdcr_el2 |= HDCR_TPM | HDCR_TPMCR;
if ( (rc = vcpu_vgic_init(v)) != 0 )
@@ -607,8 +607,8 @@ void vcpu_switch_to_aarch64_mode(struct vcpu *v)
int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
{
unsigned int max_vcpus;
- unsigned int flags_required = (XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap);
- unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | XEN_DOMCTL_CDF_vpmu);
+ unsigned int flags_required = (XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP);
+ unsigned int flags_optional = (XEN_DOMCTL_CDF_IOMMU | XEN_DOMCTL_CDF_VPMU);
unsigned int sve_vl_bits = sve_decode_vl(config->arch.sve_vl);
if ( (config->flags & ~flags_optional) != flags_required )
@@ -2190,7 +2190,7 @@ void __init create_dom0(void)
{
struct domain *dom0;
struct xen_domctl_createdomain dom0_cfg = {
- .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+ .flags = XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP,
.max_evtchn_port = -1,
.max_grant_frames = gnttab_dom0_frames(),
.max_maptrack_frames = -1,
@@ -2211,7 +2211,7 @@ void __init create_dom0(void)
dom0_cfg.max_vcpus = dom0_max_vcpus();
if ( iommu_enabled )
- dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
+ dom0_cfg.flags |= XEN_DOMCTL_CDF_IOMMU;
if ( opt_dom0_sve )
{
@@ -633,9 +633,9 @@ void arch_vcpu_destroy(struct vcpu *v)
int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
{
- bool hvm = config->flags & XEN_DOMCTL_CDF_hvm;
- bool hap = config->flags & XEN_DOMCTL_CDF_hap;
- bool nested_virt = config->flags & XEN_DOMCTL_CDF_nested_virt;
+ bool hvm = config->flags & XEN_DOMCTL_CDF_HVM;
+ bool hap = config->flags & XEN_DOMCTL_CDF_HAP;
+ bool nested_virt = config->flags & XEN_DOMCTL_CDF_NESTED_VIRT;
unsigned int max_vcpus;
if ( hvm ? !hvm_enabled : !IS_ENABLED(CONFIG_PV) )
@@ -654,7 +654,7 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
}
if ( !IS_ENABLED(CONFIG_TBOOT) &&
- (config->flags & XEN_DOMCTL_CDF_s3_integrity) )
+ (config->flags & XEN_DOMCTL_CDF_S3_INTEGRITY) )
{
dprintk(XENLOG_INFO, "S3 integrity check not valid without CONFIG_TBOOT\n");
return -EINVAL;
@@ -668,10 +668,10 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
if ( !hvm )
/*
- * It is only meaningful for XEN_DOMCTL_CDF_oos_off to be clear
+ * It is only meaningful for XEN_DOMCTL_CDF_OOS_OFF to be clear
* for HVM guests.
*/
- config->flags |= XEN_DOMCTL_CDF_oos_off;
+ config->flags |= XEN_DOMCTL_CDF_OOS_OFF;
if ( nested_virt && !hvm_nested_virt_supported() )
{
@@ -25,7 +25,7 @@ enum nestedhvm_vmexits {
/* Nested HVM on/off per domain */
static inline bool nestedhvm_enabled(const struct domain *d)
{
- return IS_ENABLED(CONFIG_HVM) && (d->options & XEN_DOMCTL_CDF_nested_virt);
+ return IS_ENABLED(CONFIG_HVM) && (d->options & XEN_DOMCTL_CDF_NESTED_VIRT);
}
/* Nested VCPU */
@@ -2344,7 +2344,7 @@ static void sh_update_paging_modes(struct vcpu *v)
#endif /* (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB) */
#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
- if ( !(d->options & XEN_DOMCTL_CDF_oos_off) &&
+ if ( !(d->options & XEN_DOMCTL_CDF_OOS_OFF) &&
mfn_eq(v->arch.paging.shadow.oos_snapshot[0], INVALID_MFN) )
{
int i;
@@ -2491,7 +2491,7 @@ static void sh_update_paging_modes(struct vcpu *v)
#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
/* We need to check that all the vcpus have paging enabled to
* unsync PTs. */
- if ( !(d->options & XEN_DOMCTL_CDF_oos_off) )
+ if ( !(d->options & XEN_DOMCTL_CDF_OOS_OFF) )
{
int pe = 1;
struct vcpu *vptr;
@@ -960,7 +960,7 @@ static struct domain *__init create_dom0(const module_t *image,
static char __initdata cmdline[MAX_GUEST_CMDLINE];
struct xen_domctl_createdomain dom0_cfg = {
- .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_s3_integrity : 0,
+ .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_S3_INTEGRITY : 0,
.max_evtchn_port = -1,
.max_grant_frames = -1,
.max_maptrack_frames = -1,
@@ -975,16 +975,16 @@ static struct domain *__init create_dom0(const module_t *image,
if ( opt_dom0_pvh )
{
- dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
+ dom0_cfg.flags |= (XEN_DOMCTL_CDF_HVM |
((hvm_hap_supported() && !opt_dom0_shadow) ?
- XEN_DOMCTL_CDF_hap : 0));
+ XEN_DOMCTL_CDF_HAP : 0));
dom0_cfg.arch.emulation_flags |=
XEN_X86_EMU_LAPIC | XEN_X86_EMU_IOAPIC | XEN_X86_EMU_VPCI;
}
if ( iommu_enabled )
- dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
+ dom0_cfg.flags |= XEN_DOMCTL_CDF_IOMMU;
/* Create initial domain. Not d0 for pvshim. */
domid = get_initial_domain_id();
@@ -203,7 +203,7 @@ static void tboot_gen_domain_integrity(const uint8_t key[TB_KEY_SIZE],
vmac_set_key((uint8_t *)key, &ctx);
for_each_domain( d )
{
- if ( !(d->options & XEN_DOMCTL_CDF_s3_integrity) )
+ if ( !(d->options & XEN_DOMCTL_CDF_S3_INTEGRITY) )
continue;
printk("MACing Domain %u\n", d->domain_id);
@@ -564,16 +564,16 @@ static void _domain_destroy(struct domain *d)
static int sanitise_domain_config(struct xen_domctl_createdomain *config)
{
- bool hvm = config->flags & XEN_DOMCTL_CDF_hvm;
- bool hap = config->flags & XEN_DOMCTL_CDF_hap;
- bool iommu = config->flags & XEN_DOMCTL_CDF_iommu;
- bool vpmu = config->flags & XEN_DOMCTL_CDF_vpmu;
+ bool hvm = config->flags & XEN_DOMCTL_CDF_HVM;
+ bool hap = config->flags & XEN_DOMCTL_CDF_HAP;
+ bool iommu = config->flags & XEN_DOMCTL_CDF_IOMMU;
+ bool vpmu = config->flags & XEN_DOMCTL_CDF_VPMU;
if ( config->flags &
- ~(XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap |
- XEN_DOMCTL_CDF_s3_integrity | XEN_DOMCTL_CDF_oos_off |
- XEN_DOMCTL_CDF_xs_domain | XEN_DOMCTL_CDF_iommu |
- XEN_DOMCTL_CDF_nested_virt | XEN_DOMCTL_CDF_vpmu) )
+ ~(XEN_DOMCTL_CDF_HVM | XEN_DOMCTL_CDF_HAP |
+ XEN_DOMCTL_CDF_S3_INTEGRITY | XEN_DOMCTL_CDF_OOS_OFF |
+ XEN_DOMCTL_CDF_XS_DOMAIN | XEN_DOMCTL_CDF_IOMMU |
+ XEN_DOMCTL_CDF_NESTED_VIRT | XEN_DOMCTL_CDF_VPMU) )
{
dprintk(XENLOG_INFO, "Unknown CDF flags %#x\n", config->flags);
return -EINVAL;
@@ -600,7 +600,7 @@ static int sanitise_domain_config(struct xen_domctl_createdomain *config)
if ( iommu )
{
- if ( config->iommu_opts & ~XEN_DOMCTL_IOMMU_no_sharept )
+ if ( config->iommu_opts & ~XEN_DOMCTL_IOMMU_OPTS_NO_SHAREPT )
{
dprintk(XENLOG_INFO, "Unknown IOMMU options %#x\n",
config->iommu_opts);
@@ -224,7 +224,7 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
* be enabled.
*/
hd->hap_pt_share = hap_enabled(d) && iommu_hap_pt_share &&
- !(opts & XEN_DOMCTL_IOMMU_no_sharept);
+ !(opts & XEN_DOMCTL_IOMMU_OPTS_NO_SHAREPT);
/*
* NB: 'relaxed' h/w domains don't need the IOMMU mappings to be kept
@@ -542,7 +542,7 @@ int iommu_quarantine_dev_init(device_t *dev)
static int __init iommu_quarantine_init(void)
{
- dom_io->options |= XEN_DOMCTL_CDF_iommu;
+ dom_io->options |= XEN_DOMCTL_CDF_IOMMU;
return iommu_domain_init(dom_io, 0);
}
@@ -18,5 +18,33 @@ enum xen_domctl_altp2m_mode {
XEN_DOMCTL_ALTP2M_MODE_LIMITED = 3,
};
+/* Content of the `flags` field of the domain creation hypercall. */
+struct xen_domctl_cdf {}; /* GREP FODDER */
+/* Set if this is an HVM guest. Cleared if it's PV. */
+#define XEN_DOMCTL_CDF_HVM (1U << 0)
+/* Use hardware-assisted paging if available */
+#define XEN_DOMCTL_CDF_HAP (1U << 1)
+/* Set if domain memory integrity is to be verified by tboot during Sx. */
+#define XEN_DOMCTL_CDF_S3_INTEGRITY (1U << 2)
+/* Set if Out-of-Sync shadow page tables are to be disabled */
+#define XEN_DOMCTL_CDF_OOS_OFF (1U << 3)
+/* Set if this is a xenstore domain */
+#define XEN_DOMCTL_CDF_XS_DOMAIN (1U << 4)
+/* Set if this is domain can make use of the IOMMU */
+#define XEN_DOMCTL_CDF_IOMMU (1U << 5)
+/* Set for the domain to have nested virtualization enabled. */
+#define XEN_DOMCTL_CDF_NESTED_VIRT (1U << 6)
+/* Set to expose a vPMU to this domain. */
+#define XEN_DOMCTL_CDF_VPMU (1U << 7)
+/* Mask covering all defined bits */
+#define XEN_DOMCTL_CDF__ALL (0xFFU)
+
+/* Content of the `iommu_opts` field of the domain creation hypercall. */
+struct xen_domctl_iommu_opts {}; /* GREP FODDER */
+/* Set to _NOT_ share page tables between the CPU and the IOMMU when it would be possible to do so. */
+#define XEN_DOMCTL_IOMMU_OPTS_NO_SHAREPT (1U << 0)
+/* Mask covering all defined bits */
+#define XEN_DOMCTL_IOMMU_OPTS__ALL (0x1U)
+
#endif /* __XEN_AUTOGEN_DOMCTL_H */
@@ -45,40 +45,10 @@ struct xen_domctl_createdomain {
/* IN parameters */
uint32_t ssidref;
xen_domain_handle_t handle;
- /* Is this an HVM guest (as opposed to a PV guest)? */
-#define _XEN_DOMCTL_CDF_hvm 0
-#define XEN_DOMCTL_CDF_hvm (1U<<_XEN_DOMCTL_CDF_hvm)
- /* Use hardware-assisted paging if available? */
-#define _XEN_DOMCTL_CDF_hap 1
-#define XEN_DOMCTL_CDF_hap (1U<<_XEN_DOMCTL_CDF_hap)
- /* Should domain memory integrity be verifed by tboot during Sx? */
-#define _XEN_DOMCTL_CDF_s3_integrity 2
-#define XEN_DOMCTL_CDF_s3_integrity (1U<<_XEN_DOMCTL_CDF_s3_integrity)
- /* Disable out-of-sync shadow page tables? */
-#define _XEN_DOMCTL_CDF_oos_off 3
-#define XEN_DOMCTL_CDF_oos_off (1U<<_XEN_DOMCTL_CDF_oos_off)
- /* Is this a xenstore domain? */
-#define _XEN_DOMCTL_CDF_xs_domain 4
-#define XEN_DOMCTL_CDF_xs_domain (1U<<_XEN_DOMCTL_CDF_xs_domain)
- /* Should this domain be permitted to use the IOMMU? */
-#define _XEN_DOMCTL_CDF_iommu 5
-#define XEN_DOMCTL_CDF_iommu (1U<<_XEN_DOMCTL_CDF_iommu)
-#define _XEN_DOMCTL_CDF_nested_virt 6
-#define XEN_DOMCTL_CDF_nested_virt (1U << _XEN_DOMCTL_CDF_nested_virt)
-/* Should we expose the vPMU to the guest? */
-#define XEN_DOMCTL_CDF_vpmu (1U << 7)
-
-/* Max XEN_DOMCTL_CDF_* constant. Used for ABI checking. */
-#define XEN_DOMCTL_CDF_MAX XEN_DOMCTL_CDF_vpmu
+ /* See xen_domctl_cdf */
uint32_t flags;
-
-#define _XEN_DOMCTL_IOMMU_no_sharept 0
-#define XEN_DOMCTL_IOMMU_no_sharept (1U << _XEN_DOMCTL_IOMMU_no_sharept)
-
-/* Max XEN_DOMCTL_IOMMU_* constant. Used for ABI checking. */
-#define XEN_DOMCTL_IOMMU_MAX XEN_DOMCTL_IOMMU_no_sharept
-
+ /* See xen_domctl_iommu_opts */
uint32_t iommu_opts;
/*
@@ -1125,7 +1125,7 @@ static always_inline bool is_control_domain(const struct domain *d)
static always_inline bool is_pv_domain(const struct domain *d)
{
return IS_ENABLED(CONFIG_PV) &&
- evaluate_nospec(!(d->options & XEN_DOMCTL_CDF_hvm));
+ evaluate_nospec(!(d->options & XEN_DOMCTL_CDF_HVM));
}
static always_inline bool is_pv_vcpu(const struct vcpu *v)
@@ -1167,7 +1167,7 @@ static always_inline bool is_pv_64bit_vcpu(const struct vcpu *v)
static always_inline bool is_hvm_domain(const struct domain *d)
{
return IS_ENABLED(CONFIG_HVM) &&
- evaluate_nospec(d->options & XEN_DOMCTL_CDF_hvm);
+ evaluate_nospec(d->options & XEN_DOMCTL_CDF_HVM);
}
static always_inline bool is_hvm_vcpu(const struct vcpu *v)
@@ -1179,7 +1179,7 @@ static always_inline bool hap_enabled(const struct domain *d)
{
/* sanitise_domain_config() rejects HAP && !HVM */
return IS_ENABLED(CONFIG_HVM) &&
- evaluate_nospec(d->options & XEN_DOMCTL_CDF_hap);
+ evaluate_nospec(d->options & XEN_DOMCTL_CDF_HAP);
}
static inline bool is_hwdom_pinned_vcpu(const struct vcpu *v)
@@ -1195,12 +1195,12 @@ static inline bool is_vcpu_online(const struct vcpu *v)
static inline bool is_xenstore_domain(const struct domain *d)
{
- return d->options & XEN_DOMCTL_CDF_xs_domain;
+ return d->options & XEN_DOMCTL_CDF_XS_DOMAIN;
}
static always_inline bool is_iommu_enabled(const struct domain *d)
{
- return evaluate_nospec(d->options & XEN_DOMCTL_CDF_iommu);
+ return evaluate_nospec(d->options & XEN_DOMCTL_CDF_IOMMU);
}
extern bool sched_smt_power_savings;
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com> --- tools/helpers/init-xenstore-domain.c | 4 +- tools/libs/light/libxl_create.c | 14 ++--- tools/ocaml/libs/xc/xenctrl.ml | 4 +- tools/ocaml/libs/xc/xenctrl.mli | 4 +- tools/ocaml/libs/xc/xenctrl_stubs.c | 8 +-- tools/python/xen/lowlevel/xc/xc.c | 4 +- .../xenbindgen/extra/domctl/createdomain.toml | 59 +++++++++++++++++++ .../paging-mempool/test-paging-mempool.c | 2 +- tools/tests/resource/test-resource.c | 8 +-- tools/tests/tsx/test-tsx.c | 4 +- xen/arch/arm/dom0less-build.c | 4 +- xen/arch/arm/domain.c | 6 +- xen/arch/arm/domain_build.c | 4 +- xen/arch/x86/domain.c | 12 ++-- xen/arch/x86/include/asm/hvm/nestedhvm.h | 2 +- xen/arch/x86/mm/shadow/common.c | 4 +- xen/arch/x86/setup.c | 8 +-- xen/arch/x86/tboot.c | 2 +- xen/common/domain.c | 18 +++--- xen/drivers/passthrough/iommu.c | 4 +- xen/include/public/autogen/domctl.h | 28 +++++++++ xen/include/public/domctl.h | 34 +---------- xen/include/xen/sched.h | 10 ++-- 23 files changed, 152 insertions(+), 95 deletions(-)