Date: Thu, 12 Jul 2007 15:50:37 +0900
Subkect: [IA64] Kexec: machine addresss macros
From: Simon Horman <horms@verge.net.au>

Define IA64-specific macros for kexec to find the machine address
of a virtual address etc... This abstraction was hammered out
during the merge of the x86 code.

Signed-off-by: Simon Horman <horms@verge.net.au>

Index: x/include/asm-ia64/kexec.h
===================================================================
--- x/include/asm-ia64/kexec.h	2007-04-17 11:36:15.000000000 +0900
+++ x/include/asm-ia64/kexec.h	2007-04-17 11:44:03.000000000 +0900
@@ -44,4 +44,15 @@ extern int kdump_status[];
 extern atomic_t kdump_cpu_freezed;
 extern atomic_t kdump_in_progress;
 
+/* Kexec needs to know about the actual physical addresss.
+ * But in xen, on some architectures, a physical address is a
+ * pseudo-physical addresss. */
+#ifdef CONFIG_XEN
+#define KEXEC_ARCH_HAS_PAGE_MACROS
+#define kexec_page_to_pfn(page)  pfn_to_mfn_for_dma(page_to_pfn(page))
+#define kexec_pfn_to_page(pfn)   pfn_to_page(mfn_to_pfn_for_dma(pfn))
+#define kexec_virt_to_phys(addr) phys_to_machine_for_dma(__pa(addr))
+#define kexec_phys_to_virt(addr) phys_to_virt(machine_to_phys_for_dma(addr))
+#endif
+
 #endif /* _ASM_IA64_KEXEC_H */
