# 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
|