[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xen/domain: Introduce a new arch_sanitise_domain_config() helper
commit 78eb62977bf4d98b06bb80ad1739061dfa1c1414 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Oct 2 15:02:55 2018 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Nov 15 11:11:30 2018 +0000 xen/domain: Introduce a new arch_sanitise_domain_config() helper On the ARM side, lift the code to select the appropriate GIC version when NATIVE is requested. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Julien Grall <julien.grall@xxxxxxx> --- xen/arch/arm/domain.c | 45 +++++++++++++++++++++++++-------------------- xen/arch/x86/domain.c | 5 +++++ xen/common/domain.c | 2 +- xen/include/xen/sched.h | 6 ++++++ 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 80432872d6..c24ace69d0 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -599,6 +599,30 @@ void vcpu_switch_to_aarch64_mode(struct vcpu *v) v->arch.hcr_el2 |= HCR_RW; } +int arch_sanitise_domain_config(struct xen_domctl_createdomain *config) +{ + /* Fill in the native GIC version, passed back to the toolstack. */ + if ( config->arch.gic_version == XEN_DOMCTL_CONFIG_GIC_NATIVE ) + { + switch ( gic_hw_version() ) + { + case GIC_V2: + config->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_V2; + break; + + case GIC_V3: + config->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_V3; + break; + + default: + ASSERT_UNREACHABLE(); + return -EINVAL; + } + } + + return 0; +} + int arch_domain_create(struct domain *d, struct xen_domctl_createdomain *config) { @@ -629,24 +653,6 @@ int arch_domain_create(struct domain *d, switch ( config->arch.gic_version ) { - case XEN_DOMCTL_CONFIG_GIC_NATIVE: - switch ( gic_hw_version () ) - { - case GIC_V2: - config->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_V2; - d->arch.vgic.version = GIC_V2; - break; - - case GIC_V3: - config->arch.gic_version = XEN_DOMCTL_CONFIG_GIC_V3; - d->arch.vgic.version = GIC_V3; - break; - - default: - BUG(); - } - break; - case XEN_DOMCTL_CONFIG_GIC_V2: d->arch.vgic.version = GIC_V2; break; @@ -656,8 +662,7 @@ int arch_domain_create(struct domain *d, break; default: - rc = -EOPNOTSUPP; - goto fail; + BUG(); } if ( (rc = domain_vgic_register(d, &count)) != 0 ) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index f6fe954313..28a145a300 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -418,6 +418,11 @@ void arch_vcpu_destroy(struct vcpu *v) pv_vcpu_destroy(v); } +int arch_sanitise_domain_config(struct xen_domctl_createdomain *config) +{ + return 0; +} + static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) { #ifdef CONFIG_HVM diff --git a/xen/common/domain.c b/xen/common/domain.c index 22aa634510..ddaf74aaa9 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -300,7 +300,7 @@ static int sanitise_domain_config(struct xen_domctl_createdomain *config) return -EINVAL; } - return 0; + return arch_sanitise_domain_config(config); } struct domain *domain_create(domid_t domid, diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 7e51a39358..0309c1f2a0 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -541,6 +541,12 @@ int domain_set_node_affinity(struct domain *d, const nodemask_t *affinity); void domain_update_node_affinity(struct domain *d); /* + * To be implemented by each architecture, sanity checking the configuration + * and filling in any appropriate defaults. + */ +int arch_sanitise_domain_config(struct xen_domctl_createdomain *config); + +/* * Create a domain: the configuration is only necessary for real domain * (domid < DOMID_FIRST_RESERVED). */ -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |