]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: Greg Kroah-Hartman <gregkh@suse.de> |
2 | Subject: Upstream 2.6.27.26 release from kernel.org | |
3 | ||
4 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | |
5 | ||
6 | Automatically created from "patches.kernel.org/patch-2.6.27.25-26" by xen-port-patches.py | |
7 | ||
8 | --- sle11-2009-07-31.orig/arch/x86/kernel/setup-xen.c 2009-06-29 15:38:34.000000000 +0200 | |
9 | +++ sle11-2009-07-31/arch/x86/kernel/setup-xen.c 2009-07-31 15:08:11.000000000 +0200 | |
10 | @@ -290,15 +290,13 @@ static inline void copy_edd(void) | |
11 | ||
12 | #ifdef CONFIG_BLK_DEV_INITRD | |
13 | ||
14 | -#if defined(CONFIG_X86_32) && !defined(CONFIG_XEN) | |
15 | - | |
16 | #define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT) | |
17 | static void __init relocate_initrd(void) | |
18 | { | |
19 | - | |
20 | +#ifndef CONFIG_XEN | |
21 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | |
22 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | |
23 | - u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT; | |
24 | + u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT; | |
25 | u64 ramdisk_here; | |
26 | unsigned long slop, clen, mapaddr; | |
27 | char *p, *q; | |
28 | @@ -353,8 +351,14 @@ static void __init relocate_initrd(void) | |
29 | " %08llx - %08llx\n", | |
30 | ramdisk_image, ramdisk_image + ramdisk_size - 1, | |
31 | ramdisk_here, ramdisk_here + ramdisk_size - 1); | |
32 | -} | |
33 | +#else | |
34 | + printk(KERN_ERR "initrd extends beyond end of memory " | |
35 | + "(0x%08lx > 0x%08lx)\ndisabling initrd\n", | |
36 | + __pa(xen_start_info->mod_start) + xen_start_info->mod_len, | |
37 | + max_low_pfn_mapped << PAGE_SHIFT); | |
38 | + initrd_start = 0; | |
39 | #endif | |
40 | +} | |
41 | ||
42 | static void __init reserve_initrd(void) | |
43 | { | |
44 | @@ -362,7 +366,7 @@ static void __init reserve_initrd(void) | |
45 | u64 ramdisk_image = boot_params.hdr.ramdisk_image; | |
46 | u64 ramdisk_size = boot_params.hdr.ramdisk_size; | |
47 | u64 ramdisk_end = ramdisk_image + ramdisk_size; | |
48 | - u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT; | |
49 | + u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT; | |
50 | ||
51 | if (!boot_params.hdr.type_of_loader || | |
52 | !ramdisk_image || !ramdisk_size) | |
53 | @@ -371,7 +375,7 @@ static void __init reserve_initrd(void) | |
54 | unsigned long ramdisk_image = __pa(xen_start_info->mod_start); | |
55 | unsigned long ramdisk_size = xen_start_info->mod_len; | |
56 | unsigned long ramdisk_end = ramdisk_image + ramdisk_size; | |
57 | - unsigned long end_of_lowmem = max_low_pfn << PAGE_SHIFT; | |
58 | + unsigned long end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT; | |
59 | ||
60 | if (!xen_start_info->mod_start || !ramdisk_size) | |
61 | return; /* No initrd provided by bootloader */ | |
62 | @@ -404,14 +408,8 @@ static void __init reserve_initrd(void) | |
63 | return; | |
64 | } | |
65 | ||
66 | -#if defined(CONFIG_X86_32) && !defined(CONFIG_XEN) | |
67 | relocate_initrd(); | |
68 | -#else | |
69 | - printk(KERN_ERR "initrd extends beyond end of memory " | |
70 | - "(0x%08lx > 0x%08lx)\ndisabling initrd\n", | |
71 | - ramdisk_end, end_of_lowmem); | |
72 | - initrd_start = 0; | |
73 | -#endif | |
74 | + | |
75 | free_early(ramdisk_image, ramdisk_end); | |
76 | } | |
77 | #else |