[xen-3.1-testing] [IA64] Fix TLB insertion for subpaging

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen-3.1-testing] [IA64] Fix TLB insertion for subpaging

Xen patchbot-3.1-testing
# HG changeset patch
# User Keir Fraser <[hidden email]>
# Date 1197031557 0
# Node ID 4e16701e94b1516d451b688ffd78202bc002ed15
# Parent  1301c84728aa7bd4724f48fcb1f1fd6bb7146953
[IA64] Fix TLB insertion for subpaging

Without this patch, Longhorn is sure to hang up.  .NET application
might hit this bug.  itc.i instruction is repeated forever, because
TLB entry with smaller page size is volatile.

Signed-off-by: Kouya Shimura <[hidden email]>
xen-unstable changeset: 16177:52d9f5028397081990791e633aa12e112bfe2677
xen-unstable date: Fri Oct 12 14:49:37 2007 -0600
---
 xen/arch/ia64/vmx/vtlb.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff -r 1301c84728aa -r 4e16701e94b1 xen/arch/ia64/vmx/vtlb.c
--- a/xen/arch/ia64/vmx/vtlb.c Fri Dec 07 12:45:37 2007 +0000
+++ b/xen/arch/ia64/vmx/vtlb.c Fri Dec 07 12:45:57 2007 +0000
@@ -556,13 +556,16 @@ void thash_purge_and_insert(VCPU *v, u64
         }
         else {
             u64 psr;
-            phy_pte  &= ~PAGE_FLAGS_RV_MASK;
-            psr = ia64_clear_ic();
-            ia64_itc(type + 1, ifa, phy_pte, ps);
-            ia64_set_psr(psr);
-            ia64_srlz_i();
-            // ps < mrr.ps, this is not supported
-            // panic_domain(NULL, "%s: ps (%lx) < mrr.ps \n", __func__, ps);
+
+            vtlb_insert(v, pte, itir, ifa);
+            vcpu_quick_region_set(PSCBX(v, tc_regions), ifa);
+            if (!(pte & VTLB_PTE_IO)) {
+                phy_pte  &= ~PAGE_FLAGS_RV_MASK;
+                psr = ia64_clear_ic();
+                ia64_itc(type + 1, ifa, phy_pte, ps);
+                ia64_set_psr(psr);
+                ia64_srlz_i();
+            }
         }
     }
     else{

_______________________________________________
Xen-changelog mailing list
[hidden email]
http://lists.xensource.com/xen-changelog