[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xen 4.3 development update
At 15:21 +0200 on 29 Apr (1367248894), Peter Maloney wrote: > On 04/04/2013 07:05 PM, Tim Deegan wrote: > > Also, if there is still a bad slowdown, caused by the p2m lookups, this > > might help a little bit: > > > > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c > > index 38e87ce..7bd8646 100644 > > --- a/xen/arch/x86/hvm/hvm.c > > +++ b/xen/arch/x86/hvm/hvm.c > > @@ -1361,6 +1361,18 @@ int hvm_hap_nested_page_fault(paddr_t gpa, > > } > > } > > > > + > > + /* For the benefit of 32-bit WinXP (& older Windows) on AMD CPUs, > > + * a fast path for LAPIC accesses, skipping the p2m lookup. */ > > + if ( !nestedhvm_vcpu_in_guestmode(v) > > + && gfn == vlapic_base_address(vcpu_vlapic(current)) >> PAGE_SHIFT > > ) > > + { > > + if ( !handle_mmio() ) > > + hvm_inject_hw_exception(TRAP_gp_fault, 0); > > + rc = 1; > > + goto out; > > + } > > + > > p2m = p2m_get_hostp2m(v->domain); > > mfn = get_gfn_type_access(p2m, gfn, &p2mt, &p2ma, > > P2M_ALLOC | (access_w ? P2M_UNSHARE : 0), > > NULL); > This patch (applied to 4.2.2) has a very large improvement on my box > (AMD FX-8150) and WinXP 32 bit. Hmm - I expected it to be only a mild improvement. How about this one, which puts in the same shortcut in another place as well? I don't think it will be much better than the last one, but it's worth a try. Tim. diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index c8487b8..10b6f6b 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1361,6 +1361,17 @@ int hvm_hap_nested_page_fault(paddr_t gpa, } } + /* For the benefit of 32-bit WinXP (& older Windows) on AMD CPUs, + * a fast path for LAPIC accesses, skipping the p2m lookup. */ + if ( !nestedhvm_vcpu_in_guestmode(v) + && gfn == vlapic_base_address(vcpu_vlapic(v)) >> PAGE_SHIFT ) + { + if ( !handle_mmio() ) + hvm_inject_hw_exception(TRAP_gp_fault, 0); + rc = 1; + goto out; + } + p2m = p2m_get_hostp2m(v->domain); mfn = get_gfn_type_access(p2m, gfn, &p2mt, &p2ma, P2M_ALLOC | (access_w ? P2M_UNSHARE : 0), NULL); @@ -2471,6 +2482,12 @@ static enum hvm_copy_result __hvm_copy( gfn = addr >> PAGE_SHIFT; } + /* For the benefit of 32-bit WinXP (& older Windows) on AMD CPUs, + * a fast path for LAPIC accesses, skipping the p2m lookup. */ + if ( !nestedhvm_vcpu_in_guestmode(curr) + && gfn == vlapic_base_address(vcpu_vlapic(curr)) >> PAGE_SHIFT ) + return HVMCOPY_bad_gfn_to_mfn; + page = get_page_from_gfn(curr->domain, gfn, &p2mt, P2M_UNSHARE); if ( p2m_is_paging(p2mt) ) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |