From d955779f2aec43e9926866f2c9d2b1ba5b989c79 Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Wed, 9 May 2007 19:26:16 +0900 Subject: Set alternate location for /proc/iomem on ia64 xen Use /proc/iomem_machine for ia64 xen where pysical and machine efi maps differ. Without this kexec gets a very jaded view of the world, and /proc/vmcore after a kdump will only have a partial memory dump. Requires a companion patch to kexec-tools. Signed-off-by: Simon Horman kexec/arch/ia64/Makefile | 1 + kexec/arch/ia64/kexec-iomem.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) 1e7eca377b0b84a638c49eae614103b5e6fa7b42 --- kexec/arch/ia64/Makefile | 1 + kexec/arch/ia64/kexec-iomem.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 kexec/arch/ia64/kexec-iomem.c (limited to 'kexec') diff --git a/kexec/arch/ia64/Makefile b/kexec/arch/ia64/Makefile index 9aacb4b..a8a94fe 100644 --- a/kexec/arch/ia64/Makefile +++ b/kexec/arch/ia64/Makefile @@ -1,6 +1,7 @@ # # kexec ia64 (linux booting linux) # +KEXEC_C_SRCS+= kexec/arch/ia64/kexec-iomem.c KEXEC_C_SRCS+= kexec/arch/ia64/kexec-ia64.c KEXEC_C_SRCS+= kexec/arch/ia64/kexec-elf-ia64.c KEXEC_C_SRCS+= kexec/arch/ia64/kexec-elf-rel-ia64.c diff --git a/kexec/arch/ia64/kexec-iomem.c b/kexec/arch/ia64/kexec-iomem.c new file mode 100644 index 0000000..97f7730 --- /dev/null +++ b/kexec/arch/ia64/kexec-iomem.c @@ -0,0 +1,23 @@ +#include +#include +#include "../../kexec.h" +#include "../../crashdump.h" + +static const char proc_iomem_str[]= "/proc/iomem"; +static const char proc_iomem_machine_str[]= "/proc/iomem_machine"; + +/* + * On IA64 XEN the EFI tables are virtualised. + * For this reason on such systems /proc/iomem_machine is provided, + * which is based on the hypervisor's (machine's) EFI tables. + * If Xen is in use, then /proc/iomem is used for memory regions relating + * to the currently running dom0 kernel, and /proc/iomem_machine is used + * for regions relating to the machine itself or the hypervisor. + * If Xen is not in used, then /proc/iomem is always used. + */ +const char *proc_iomem(int machine) +{ + if (machine && xen_present()) + return proc_iomem_machine_str; + return proc_iomem_str; +} -- cgit