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>
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),