File 555c6f18-x86-don-t-unconditionally-touch-the-hvm_domain-union.patch of Package xen.787
# Commit 74d0932448245cc4776d50811ceb80365623893c
# Date 2015-05-20 13:25:12 +0200
# Author Andrew Cooper <andrew.cooper3@citrix.com>
# Committer Jan Beulich <jbeulich@suse.com>
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 <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -492,12 +492,6 @@ int arch_domain_create(struct domain *d,
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);
@@ -520,7 +514,12 @@ int arch_domain_create(struct domain *d,
}
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