ia64/xen-unstable
changeset 9783:4ce84cc55727
x86/64 e820-parse-and-map code should skip low 1GB now as that
is mapped by the boot code.
Signed-off-by: Keir Fraser <keir@xensource.com>
is mapped by the boot code.
Signed-off-by: Keir Fraser <keir@xensource.com>
author | kaf24@firebug.cl.cam.ac.uk |
---|---|
date | Wed Apr 19 22:28:22 2006 +0100 (2006-04-19) |
parents | 7dc3c0bf1395 |
children | 909664b50602 |
files | xen/arch/x86/setup.c |
line diff
1.1 --- a/xen/arch/x86/setup.c Wed Apr 19 22:23:44 2006 +0100 1.2 +++ b/xen/arch/x86/setup.c Wed Apr 19 22:28:22 2006 +0100 1.3 @@ -321,7 +321,7 @@ void __init __start_xen(multiboot_info_t 1.4 #if defined (CONFIG_X86_64) 1.5 /* 1.6 * x86/64 maps all registered RAM. Points to note: 1.7 - * 1. The initial pagetable already maps low 64MB, so skip that. 1.8 + * 1. The initial pagetable already maps low 1GB, so skip that. 1.9 * 2. We must map *only* RAM areas, taking care to avoid I/O holes. 1.10 * Failure to do this can cause coherency problems and deadlocks 1.11 * due to cache-attribute mismatches (e.g., AMD/AGP Linux bug). 1.12 @@ -329,13 +329,14 @@ void __init __start_xen(multiboot_info_t 1.13 { 1.14 /* Calculate page-frame range, discarding partial frames. */ 1.15 unsigned long start, end; 1.16 + unsigned long init_mapped = 1UL << (30 - PAGE_SHIFT); /* 1GB */ 1.17 start = PFN_UP(e820.map[i].addr); 1.18 end = PFN_DOWN(e820.map[i].addr + e820.map[i].size); 1.19 /* Clip the range to above 64MB. */ 1.20 - if ( end < (64UL << (20-PAGE_SHIFT)) ) 1.21 + if ( end < init_mapped ) 1.22 continue; 1.23 - if ( start < (64UL << (20-PAGE_SHIFT)) ) 1.24 - start = 64UL << (20-PAGE_SHIFT); 1.25 + if ( start < init_mapped ) 1.26 + start = init_mapped; 1.27 /* Request the mapping. */ 1.28 map_pages_to_xen( 1.29 PAGE_OFFSET + (start << PAGE_SHIFT),