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

[Xen-changelog] [xen-unstable] x86 vtd: Do not exclude freed percpu areas from dom0 vtd tables.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1240643954 -3600
# Node ID 7809e0941b38829de084e5e19a04dffc21aa4bea
# Parent  ce273aa880e50beb3afc04c93b936dcf22d93629
x86 vtd: Do not exclude freed percpu areas from dom0 vtd tables.

Signed-off-by: Qing He <qing.he@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/arch/x86/setup.c |    6 +++---
 xen/arch/x86/tboot.c |    7 ++++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff -r ce273aa880e5 -r 7809e0941b38 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Fri Apr 24 17:51:56 2009 +0100
+++ b/xen/arch/x86/setup.c      Sat Apr 25 08:19:14 2009 +0100
@@ -1124,8 +1124,7 @@ int xen_in_range(paddr_t start, paddr_t 
     /* initialize first time */
     if ( !xen_regions[0].s )
     {
-        extern char __init_begin[], __per_cpu_start[], __per_cpu_end[],
-                    __bss_start[];
+        extern char __init_begin[], __bss_start[];
         extern unsigned long allocator_bitmap_end;
 
         /* S3 resume code (and other real mode trampoline code) */
@@ -1136,7 +1135,8 @@ int xen_in_range(paddr_t start, paddr_t 
         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);
+        xen_regions[2].e = xen_regions[2].s +
+            (((paddr_t)last_cpu(cpu_possible_map) + 1) << PERCPU_SHIFT);
         /* bss + boot allocator bitmap */
         xen_regions[3].s = __pa(&__bss_start);
         xen_regions[3].e = allocator_bitmap_end;
diff -r ce273aa880e5 -r 7809e0941b38 xen/arch/x86/tboot.c
--- a/xen/arch/x86/tboot.c      Fri Apr 24 17:51:56 2009 +0100
+++ b/xen/arch/x86/tboot.c      Sat Apr 25 08:19:14 2009 +0100
@@ -46,7 +46,7 @@ static uint64_t sinit_base, sinit_size;
 #define TXTCR_HEAP_BASE             0x0300
 #define TXTCR_HEAP_SIZE             0x0308
 
-extern char __init_begin[], __per_cpu_start[], __per_cpu_end[], __bss_start[];
+extern char __init_begin[], __per_cpu_start[], __bss_start[];
 extern unsigned long allocator_bitmap_end;
 
 #define SHA1_SIZE      20
@@ -310,8 +310,9 @@ void tboot_shutdown(uint32_t shutdown_ty
                                               __pa(&_stext);
         /* per-cpu data */
         g_tboot_shared->mac_regions[2].start = 
(uint64_t)__pa(&__per_cpu_start);
-        g_tboot_shared->mac_regions[2].size = __pa(&__per_cpu_end) -
-                                              __pa(&__per_cpu_start);
+        g_tboot_shared->mac_regions[2].size =
+            g_tboot_shared->mac_regions[2].start +
+            (((uint64_t)last_cpu(cpu_possible_map) + 1) << PERCPU_SHIFT);
         /* bss */
         g_tboot_shared->mac_regions[3].start = (uint64_t)__pa(&__bss_start);
         g_tboot_shared->mac_regions[3].size = __pa(&_end) - __pa(&__bss_start);

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


 


Rackspace

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