ia64/xen-unstable

changeset 11458:a34659228c24

[IA64] Avoid iterative VHPT purges

Workaround to avoid iteratively purging 16M itr.d using
16k Xen VHPT page size.

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
author awilliam@xenbuild.aw
date Thu Sep 21 15:34:10 2006 -0600 (2006-09-21)
parents 36a3c92cdf8f
children 997bd5fcf307
files xen/arch/ia64/vmx/vmmu.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmmu.c	Thu Sep 21 15:33:50 2006 -0600
     1.2 +++ b/xen/arch/ia64/vmx/vmmu.c	Thu Sep 21 15:34:10 2006 -0600
     1.3 @@ -456,7 +456,15 @@ IA64FAULT vmx_vcpu_itr_d(VCPU *vcpu, u64
     1.4      }
     1.5  #endif   
     1.6      pte &= ~PAGE_FLAGS_RV_MASK;
     1.7 -    thash_purge_entries(vcpu, va, ps);
     1.8 +
     1.9 +    /* This is a bad workaround
    1.10 +       In Linux, region 7 use 16M pagesize and is identity mapped.
    1.11 +       VHPT page size is 16K in XEN.  If purge VHPT while guest insert 16M,
    1.12 +       it will iteratively purge VHPT 1024 times, which makes XEN/IPF very
    1.13 +       slow.  XEN doesn't purge VHPT
    1.14 +    */   
    1.15 +    if (ps != _PAGE_SIZE_16M)
    1.16 +        thash_purge_entries(vcpu, va, ps);
    1.17      gpfn = (pte & _PAGE_PPN_MASK)>> PAGE_SHIFT;
    1.18      if (VMX_DOMAIN(vcpu) && __gpfn_is_io(vcpu->domain, gpfn))
    1.19          pte |= VTLB_PTE_IO;