The boot params region needs to be placed using the machine
address not the physical address. This is because it represents
an area of memory that is reserved in the hypervisor and it is
critical that the same area of machine memory is not trampled
over during kexec.

Signed-off-by: Simon Horman <[EMAIL PROTECTED]>

--- 
Date: Tue, 25 Sep 2007 18:05:03 +0900
From: Horms <[EMAIL PROTECTED]>

Note that in the case of CONFIG_XEN, kexec_virt_to_phys is defined in
include/asm-ia64/kexec.h, otherwise it will fall back to
the definition on include/linux/kexec.h (which is already merged).

Index: x/arch/ia64/kernel/setup.c
===================================================================
--- x/arch/ia64/kernel/setup.c  2007-05-16 18:26:30.000000000 +0900
+++ x/arch/ia64/kernel/setup.c  2007-05-16 18:26:37.000000000 +0900
@@ -340,7 +340,7 @@ reserve_memory (void)
                efi_memmap_res.start = ia64_boot_param->efi_memmap;
                 efi_memmap_res.end = efi_memmap_res.start +
                         ia64_boot_param->efi_memmap_size;
-                boot_param_res.start = __pa(ia64_boot_param);
+                boot_param_res.start = kexec_virt_to_phys(ia64_boot_param);
                 boot_param_res.end = boot_param_res.start +
                         sizeof(*ia64_boot_param);
        }

-- 

-- 
Horms
  H: http://www.vergenet.net/~horms/
  W: http://www.valinux.co.jp/en/


_______________________________________________
Xen-ia64-devel mailing list
[email protected]
http://lists.xensource.com/xen-ia64-devel

Reply via email to