summaryrefslogtreecommitdiffstats
path: root/include/linux/crash_dump.h
diff options
context:
space:
mode:
authorChandru <chandru@in.ibm.com>2008-07-25 01:47:55 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-25 10:53:41 -0700
commit95b68dec0d52c7b8fea3698b3938cf3ab936436b (patch)
treef56e090e0b6831c1ba416189e9fc32bfeb3ebac9 /include/linux/crash_dump.h
parent8448502cfc915f70e3f8923849ade27d472044cb (diff)
downloadlinux-95b68dec0d52c7b8fea3698b3938cf3ab936436b.tar.gz
linux-95b68dec0d52c7b8fea3698b3938cf3ab936436b.tar.bz2
linux-95b68dec0d52c7b8fea3698b3938cf3ab936436b.zip
calgary iommu: use the first kernels TCE tables in kdump
kdump kernel fails to boot with calgary iommu and aacraid driver on a x366 box. The ongoing dma's of aacraid from the first kernel continue to exist until the driver is loaded in the kdump kernel. Calgary is initialized prior to aacraid and creation of new tce tables causes wrong dma's to occur. Here we try to get the tce tables of the first kernel in kdump kernel and use them. While in the kdump kernel we do not allocate new tce tables but instead read the base address register contents of calgary iommu and use the tables that the registers point to. With these changes the kdump kernel and hence aacraid now boots normally. Signed-off-by: Chandru Siddalingappa <chandru@in.ibm.com> Acked-by: Muli Ben-Yehuda <muli@il.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/crash_dump.h')
-rw-r--r--include/linux/crash_dump.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
index 22c7ac5cd80c..6cd39a927e1f 100644
--- a/include/linux/crash_dump.h
+++ b/include/linux/crash_dump.h
@@ -22,5 +22,13 @@ extern struct proc_dir_entry *proc_vmcore;
#define vmcore_elf_check_arch(x) (elf_check_arch(x) || vmcore_elf_check_arch_cross(x))
+static inline int is_kdump_kernel(void)
+{
+ return (elfcorehdr_addr != ELFCORE_ADDR_MAX) ? 1 : 0;
+}
+#else /* !CONFIG_CRASH_DUMP */
+static inline int is_kdump_kernel(void) { return 0; }
#endif /* CONFIG_CRASH_DUMP */
+
+extern unsigned long saved_max_pfn;
#endif /* LINUX_CRASHDUMP_H */