[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-bugs] [Bug 1087] New: message on console for level> 2 recursive page table entry



http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1087

           Summary: message on console for level> 2 recursive page table
                    entry
           Product: Xen
           Version: unspecified
          Platform: x86-64
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Hypervisor
        AssignedTo: xen-bugs@xxxxxxxxxxxxxxxxxxx
        ReportedBy: bouyer@xxxxxxxxxx


Hi,
while working on NetBSD/amd64 support for Xen, I've found that Xen emits a
message on the serial console every time a L4 page table with recursive
mappings is checked:
(XEN) mm.c:1753:d10 Bad type (saw 0000000098000004 != exp 0000000060000000) for
mfn 23f5 (pfn 3da2)
On NetBSD, this means a message on every context switch.
I found that mm.c already had a check for L2 recursive mapping (which is
why I didn't see the problem with NetBSD/i386), but not for L3 or L4.
The patch below (now part of NetBSD pkgsrc) extends the check for L3 and L4
page tables.


$NetBSD: patch-ae,v 1.1 2007/10/16 20:31:57 bouyer Exp $

--- xen/arch/x86/mm.c.orig      2007-05-18 16:45:21.000000000 +0200
+++ xen/arch/x86/mm.c   2007-10-17 05:03:09.000000000 +0200
@@ -1741,15 +1741,26 @@
                     nx |= PGT_validated;
             }
         }
-        else if ( unlikely((x & (PGT_type_mask|PGT_pae_xen_l2)) != type) )
+        else if (unlikely((x & (PGT_type_mask|PGT_pae_xen_l2)) != type) )
         {
-            if ( ((x & PGT_type_mask) != PGT_l2_page_table) ||
-                 (type != PGT_l1_page_table) )
-                MEM_LOG("Bad type (saw %" PRtype_info
-                        " != exp %" PRtype_info ") "
-                        "for mfn %lx (pfn %lx)",
-                        x, type, page_to_mfn(page),
-                        get_gpfn_from_mfn(page_to_mfn(page)));
+           /*
+            * if it's a recursive mapping failure here is expected.
+            * Don't log it
+            */
+           if ((x & PGT_type_mask) == PGT_l2_page_table &&
+               type == PGT_l1_page_table)
+                       return 0;
+           if ((x & PGT_type_mask) == PGT_l3_page_table &&
+               type == PGT_l2_page_table)
+                       return 0;
+           if ((x & PGT_type_mask) == PGT_l4_page_table &&
+               type == PGT_l3_page_table)
+                       return 0;
+            MEM_LOG("Bad type (saw %" PRtype_info
+                    " != exp %" PRtype_info ") "
+                    "for mfn %lx (pfn %lx)",
+                    x, type, page_to_mfn(page),
+                    get_gpfn_from_mfn(page_to_mfn(page)));
             return 0;
         }
         else if ( unlikely(!(x & PGT_validated)) )


-- 
Configure bugmail: 
http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.