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] vt-d: Better restrict memory ranges consi

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] vt-d: Better restrict memory ranges considered to be in Xen
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 07 Mar 2009 06:35:26 -0800
Delivery-date: Sat, 07 Mar 2009 06:36:13 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1236366390 0
# Node ID 73c4e6dbbb602f52e5bb0ab878a2b3af61d63a7b
# Parent  ec671455fb05ca6714deeaca78aacb1026ca4752
vt-d: Better restrict memory ranges considered to be in Xen

The current implementation of xen_in_range() misses several memory
ranges that are used by the hypervisor and thus shouldn't get mapped
into dom0's VT-d tables.  This patch should make the check complete.

This patch is only against x86 because I'm not familiar enough with
IA64 to know how much, if any, of these checks apply there.

Signed-off-by: Joseph Cihula <joseph.cihula@xxxxxxxxx>
---
 xen/arch/x86/setup.c |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)

diff -r ec671455fb05 -r 73c4e6dbbb60 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Fri Mar 06 18:58:41 2009 +0000
+++ b/xen/arch/x86/setup.c      Fri Mar 06 19:06:30 2009 +0000
@@ -1111,15 +1111,43 @@ void arch_get_xen_caps(xen_capabilities_
 
 int xen_in_range(paddr_t start, paddr_t end)
 {
-#if defined(CONFIG_X86_32)
-    paddr_t xs = 0;
-    paddr_t xe = xenheap_phys_end;
-#else
-    paddr_t xs = __pa(&_stext);
-    paddr_t xe = __pa(&_etext);
-#endif
-
-    return (start < xe) && (end > xs);
+    int i;
+    static struct {
+        paddr_t s, e;
+    } xen_regions[5];
+
+    /* initialize first time */
+    if ( !xen_regions[0].s )
+    {
+        extern char __init_begin[], __per_cpu_start[], __per_cpu_end[],
+                    __bss_start[];
+        extern unsigned long allocator_bitmap_end;
+
+        /* S3 resume code (and other real mode trampoline code) */
+        xen_regions[0].s = bootsym_phys(trampoline_start);
+        xen_regions[0].e = bootsym_phys(trampoline_end);
+        /* hypervisor code + data */
+        xen_regions[1].s =__pa(&_stext);
+        xen_regions[1].e = __pa(&__init_begin);
+        /* per-cpu data */
+        xen_regions[2].s = __pa(&__per_cpu_start);
+        xen_regions[2].e = __pa(&__per_cpu_end);
+        /* bss + boot allocator bitmap */
+        xen_regions[3].s = __pa(&__bss_start);
+        xen_regions[3].e = allocator_bitmap_end;
+        /* frametable */
+        xen_regions[4].s = (unsigned long)frame_table;
+        xen_regions[4].e = (unsigned long)frame_table +
+                           PFN_UP(max_page * sizeof(*frame_table));
+    }
+
+    for ( i = 0; i < ARRAY_SIZE(xen_regions); i++ )
+    {
+        if ( (start < xen_regions[i].e) && (end > xen_regions[i].s) )
+            return 1;
+    }
+
+    return 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] vt-d: Better restrict memory ranges considered to be in Xen, Xen patchbot-unstable <=