|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xen/domctl: Simplify DOMCTL_CDF_ checking logic
commit 45264e0669c0874c9058f7c7de24d5c45a425664
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Tue Sep 29 16:56:35 2020 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Tue Oct 6 12:28:37 2020 +0100
xen/domctl: Simplify DOMCTL_CDF_ checking logic
Introduce some local variables to make the resulting logic easier to follow.
Join the two IOMMU checks in sanitise_domain_config(). Tweak some of the
terminology for better accuracy.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Reviewed-by: Wei Liu <wl@xxxxxxx>
---
xen/arch/x86/domain.c | 7 ++++---
xen/common/domain.c | 45 +++++++++++++++++++++++++++------------------
2 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 7e16d49bfd..d8f9be132c 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -629,6 +629,7 @@ 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;
unsigned int max_vcpus;
if ( hvm ? !hvm_enabled : !IS_ENABLED(CONFIG_PV) )
@@ -653,13 +654,13 @@ int arch_sanitise_domain_config(struct
xen_domctl_createdomain *config)
return -EINVAL;
}
- if ( (config->flags & XEN_DOMCTL_CDF_hap) && !hvm_hap_supported() )
+ if ( hap && !hvm_hap_supported() )
{
- dprintk(XENLOG_INFO, "HAP requested but not supported\n");
+ dprintk(XENLOG_INFO, "HAP requested but not available\n");
return -EINVAL;
}
- if ( !(config->flags & XEN_DOMCTL_CDF_hvm) )
+ if ( !hvm )
/*
* It is only meaningful for XEN_DOMCTL_CDF_oos_off to be clear
* for HVM guests.
diff --git a/xen/common/domain.c b/xen/common/domain.c
index c4a480fa14..a877eacc09 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -299,6 +299,10 @@ 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;
+
if ( config->flags & ~(XEN_DOMCTL_CDF_hvm |
XEN_DOMCTL_CDF_hap |
XEN_DOMCTL_CDF_s3_integrity |
@@ -310,36 +314,41 @@ static int sanitise_domain_config(struct
xen_domctl_createdomain *config)
return -EINVAL;
}
- if ( config->iommu_opts & ~XEN_DOMCTL_IOMMU_no_sharept )
- {
- dprintk(XENLOG_INFO, "Unknown IOMMU options %#x\n",
config->iommu_opts);
- return -EINVAL;
- }
-
- if ( !(config->flags & XEN_DOMCTL_CDF_iommu) && config->iommu_opts )
- {
- dprintk(XENLOG_INFO,
- "IOMMU options specified but IOMMU not enabled\n");
- return -EINVAL;
- }
-
if ( config->max_vcpus < 1 )
{
dprintk(XENLOG_INFO, "No vCPUS\n");
return -EINVAL;
}
- if ( !(config->flags & XEN_DOMCTL_CDF_hvm) &&
- (config->flags & XEN_DOMCTL_CDF_hap) )
+ if ( hap && !hvm )
{
dprintk(XENLOG_INFO, "HAP requested for non-HVM guest\n");
return -EINVAL;
}
- if ( (config->flags & XEN_DOMCTL_CDF_iommu) && !iommu_enabled )
+ if ( iommu )
{
- dprintk(XENLOG_INFO, "IOMMU is not enabled\n");
- return -EINVAL;
+ if ( config->iommu_opts & ~XEN_DOMCTL_IOMMU_no_sharept )
+ {
+ dprintk(XENLOG_INFO, "Unknown IOMMU options %#x\n",
+ config->iommu_opts);
+ return -EINVAL;
+ }
+
+ if ( !iommu_enabled )
+ {
+ dprintk(XENLOG_INFO, "IOMMU requested but not available\n");
+ return -EINVAL;
+ }
+ }
+ else
+ {
+ if ( config->iommu_opts )
+ {
+ dprintk(XENLOG_INFO,
+ "IOMMU options specified but IOMMU not requested\n");
+ return -EINVAL;
+ }
}
return arch_sanitise_domain_config(config);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |