WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [XEN] Some suspicion that we may enter an

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEN] Some suspicion that we may enter an infinite
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 01 Aug 2006 19:20:16 +0000
Delivery-date: Tue, 01 Aug 2006 12:22:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 2d2ed4d9b1c14aeee29dfdd77acd6017d31290cd
# Parent  c471b326b75e587104e8328b57f6985b75e38577
[XEN] Some suspicion that we may enter an infinite
#PF loop due to broken spurious pagefault detection.
Beef up the tracing on that code path so we can catch
some useful info if it happens.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/traps.c |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff -r c471b326b75e -r 2d2ed4d9b1c1 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Mon Jul 31 09:30:36 2006 +0000
+++ b/xen/arch/x86/traps.c      Mon Jul 31 10:40:21 2006 +0100
@@ -733,7 +733,10 @@ static int __spurious_page_fault(
          (l2e_get_flags(l2e) & disallowed_flags) )
         return 0;
     if ( l2e_get_flags(l2e) & _PAGE_PSE )
-        return 1;
+    {
+        l1e = l1e_empty(); /* define before use in debug tracing */
+        goto spurious;
+    }
 
     l1t = map_domain_page(mfn);
     l1e = l1t[l1_table_offset(addr)];
@@ -742,6 +745,22 @@ static int __spurious_page_fault(
     if ( !(l1e_get_flags(l1e) & required_flags) ||
          (l1e_get_flags(l1e) & disallowed_flags) )
         return 0;
+
+ spurious:
+    DPRINTK("Spurious fault in domain %u:%u at addr %lx, e/c %04x\n",
+            current->domain->domain_id, current->vcpu_id,
+            addr, regs->error_code);
+#if CONFIG_PAGING_LEVELS >= 4
+    DPRINTK(" l4e = %"PRIpte"\n", l4e_get_intpte(l4e));
+#endif
+#if CONFIG_PAGING_LEVELS >= 3
+    DPRINTK(" l3e = %"PRIpte"\n", l3e_get_intpte(l3e));
+#endif
+    DPRINTK(" l2e = %"PRIpte"\n", l2e_get_intpte(l2e));
+    DPRINTK(" l1e = %"PRIpte"\n", l1e_get_intpte(l1e));
+#ifndef NDEBUG
+    show_registers(regs);
+#endif
     return 1;
 }
 
@@ -839,11 +858,7 @@ asmlinkage int do_page_fault(struct cpu_
     if ( unlikely(!guest_mode(regs)) )
     {
         if ( spurious_page_fault(addr, regs) )
-        {
-            DPRINTK("Spurious fault in domain %u:%u at addr %lx\n",
-                    current->domain->domain_id, current->vcpu_id, addr);
             return EXCRET_not_a_fault;
-        }
 
         if ( likely((fixup = search_exception_table(regs->eip)) != 0) )
         {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEN] Some suspicion that we may enter an infinite, Xen patchbot-unstable <=