[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 1/4] x86/compat: Test whether guest has 32b shinfo instead of being a PV 32b domain
In preparation for enabling 32-bit PVH guests replace a number of guest mode's tests that assume a PV guest with has_32bit_shinfo() that can be applicable to both PV and PVH guests. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- Changes in v2: * New patch xen/arch/x86/domain.c | 10 ++++------ xen/arch/x86/domctl.c | 4 ++-- xen/common/domctl.c | 4 ++-- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index a8fe046..b87f642 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -358,7 +358,7 @@ int switch_native(struct domain *d) if ( !may_switch_mode(d) ) return -EACCES; - if ( !is_pv_32on64_domain(d) ) + if ( !has_32bit_shinfo(d) ) return 0; d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0; @@ -386,7 +386,7 @@ int switch_compat(struct domain *d) if ( !may_switch_mode(d) ) return -EACCES; - if ( is_pv_32on64_domain(d) ) + if ( has_32bit_shinfo(d) ) return 0; d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 1; @@ -737,7 +737,7 @@ int arch_set_info_guest( /* The context is a compat-mode one if the target domain is compat-mode; * we expect the tools to DTRT even in compat-mode callers. */ - compat = is_pv_32on64_domain(d); + compat = has_32bit_shinfo(d); #define c(fld) (compat ? (c.cmp->fld) : (c.nat->fld)) flags = c(flags); @@ -1721,9 +1721,7 @@ unsigned long hypercall_create_continuation( else curr->arch.hvm_vcpu.hcall_preempted = 1; - if ( is_pv_vcpu(curr) ? - !is_pv_32bit_vcpu(curr) : - curr->arch.hvm_vcpu.hcall_64bit ) + if ( !has_32bit_shinfo(curr->domain) ) { for ( i = 0; *p != '\0'; i++ ) { diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 82bd818..57f8535 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -349,7 +349,7 @@ long arch_do_domctl( case XEN_DOMCTL_get_address_size: domctl->u.address_size.size = - is_pv_32on64_domain(d) ? 32 : BITS_PER_LONG; + has_32bit_shinfo(d) ? 32 : BITS_PER_LONG; copyback = 1; break; @@ -1183,7 +1183,7 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) { unsigned int i; const struct domain *d = v->domain; - bool_t compat = is_pv_32on64_domain(d); + bool_t compat = has_32bit_shinfo(d); #define c(fld) (!compat ? (c.nat->fld) : (c.cmp->fld)) if ( !is_pv_domain(d) ) diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 2a2d203..66fe668 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -496,7 +496,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) break; #ifdef CONFIG_COMPAT - if ( !is_pv_32on64_domain(d) ) + if ( !has_32bit_shinfo(d) ) ret = copy_from_guest(c.nat, op->u.vcpucontext.ctxt, 1); else ret = copy_from_guest(c.cmp, @@ -902,7 +902,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) vcpu_unpause(v); #ifdef CONFIG_COMPAT - if ( !is_pv_32on64_domain(d) ) + if ( !has_32bit_shinfo(d) ) ret = copy_to_guest(op->u.vcpucontext.ctxt, c.nat, 1); else ret = copy_to_guest(guest_handle_cast(op->u.vcpucontext.ctxt, -- 1.8.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |