From: Andrew Cooper Date: Wed, 20 May 2015 11:25:12 +0000 (+0200) Subject: x86: don't unconditionally touch the hvm_domain union during domain construction X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3221 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=74d0932448245cc4776d50811ceb80365623893c;p=xen.git x86: don't unconditionally touch the hvm_domain union during domain construction It may not be the appropriate half to touch. Drop the superfluous mem_sharing_enabled assignment, and move the hap_enabled assignment to a suitable conditional before it is actually needed. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 1f1550eb77..6e9464c77b 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -513,12 +513,6 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, int i, paging_initialised = 0; int rc = -ENOMEM; - d->arch.hvm_domain.hap_enabled = - has_hvm_container_domain(d) && - hvm_funcs.hap_supported && - (domcr_flags & DOMCRF_hap); - d->arch.hvm_domain.mem_sharing_enabled = 0; - d->arch.s3_integrity = !!(domcr_flags & DOMCRF_s3_integrity); INIT_LIST_HEAD(&d->arch.pdev_list); @@ -541,7 +535,12 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, } if ( has_hvm_container_domain(d) ) + { + d->arch.hvm_domain.hap_enabled = + hvm_funcs.hap_supported && (domcr_flags & DOMCRF_hap); + rc = create_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0, NULL, NULL); + } else if ( is_idle_domain(d) ) rc = 0; else