[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] 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#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |