[Patch] Fix PA() in purgatory-ia64.c

Akio Takebe takebe_akio at jp.fujitsu.com
Fri Nov 9 04:34:11 EST 2007


Hi,

I met the issue that kdump didn't work on Xen/HVM guest.
I investigated the cause, found that PA() in purgatory-ia64.c
is used in Physical mode.

The PA() currently use PAGE_OFFSET fixed size(0xe000000000000000UL).
So the PA() don't work properly if it is called in Physcal mode.

 inline unsigned long PA(unsigned long addr)
 {
        return addr - PAGE_OFFSET;
 }

I make the patch to fix this issue.
How about this?

Signed-off-by: Akio Takebe <takebe_akio at jp.fujitsu.com>

Best Regards,

Akio Takebe

---
--- kexec-tools-testing-20071030.orig/purgatory/arch/ia64/purgatory-ia64.c	2007-10-17 12:16:16.000000000 +0900
+++ kexec-tools-testing-20071030/purgatory/arch/ia64/purgatory-ia64.c	2007-11-09 18:20:27.000000000 +0900
@@ -21,7 +21,7 @@
 #include <string.h>
 #include "purgatory-ia64.h"
 
-#define PAGE_OFFSET             0xe000000000000000UL
+#define RGN_MASK                0xf000000000000000UL
 
 #define EFI_PAGE_SHIFT          12
 #define EFI_PAGE_SIZE		(1UL<<EFI_PAGE_SHIFT)
@@ -147,7 +147,7 @@ setup_arch(void)
 
 inline unsigned long PA(unsigned long addr)
 {
-	return addr - PAGE_OFFSET;
+	return addr|~RGN_MASK;
 }
 
 void




More information about the kexec mailing list