File makedumpfile-Revert-kill-is_vmalloc_addr_x86_64.patch of Package makedumpfile.8642
From: Petr Tesarik <ptesarik@suse.com>
Date: Thu, 21 Dec 2017 13:38:33 +0100
Subject: Revert "x86_64: kill is_vmalloc_addr_x86_64()"
References: bsc#1068925, bsc#1099121
Upstream: never, upstream needs newer kernel
This reverts commit 8419f4d64fadc3015e3106eba95a8c2d71f259cb.
---
arch/x86_64.c | 14 +++++++++++++-
makedumpfile.h | 3 ++-
2 files changed, 15 insertions(+), 2 deletions(-)
--- a/arch/x86_64.c
+++ b/arch/x86_64.c
@@ -21,6 +21,17 @@
extern struct vmap_pfns *gvmem_pfns;
extern int nr_gvmem_pfns;
+int
+is_vmalloc_addr_x86_64(ulong vaddr)
+{
+ /*
+ * vmalloc, virtual memmap, and module space as VMALLOC space.
+ */
+ return ((vaddr >= VMALLOC_START && vaddr <= VMALLOC_END)
+ || (vaddr >= VMEMMAP_START && vaddr <= VMEMMAP_END)
+ || (vaddr >= MODULES_VADDR && vaddr <= MODULES_END));
+}
+
static unsigned long
get_xen_p2m_mfn(void)
{
@@ -76,7 +87,8 @@ get_phys_base_x86_64(void)
}
for (i = 0; get_pt_load(i, &phys_start, NULL, &virt_start, NULL); i++) {
- if (virt_start >= __START_KERNEL_map) {
+ if ((virt_start >= __START_KERNEL_map) &&
+ !(is_vmalloc_addr_x86_64(virt_start))) {
info->phys_base = phys_start -
(virt_start & ~(__START_KERNEL_map));
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -874,6 +874,7 @@ unsigned long long vaddr_to_paddr_x86(un
#endif /* x86 */
#ifdef __x86_64__
+int is_vmalloc_addr_x86_64(ulong vaddr);
int get_phys_base_x86_64(void);
int get_machdep_info_x86_64(void);
int get_versiondep_info_x86_64(void);
@@ -883,7 +884,7 @@ unsigned long long vtop4_x86_64(unsigned
#define get_machdep_info() get_machdep_info_x86_64()
#define get_versiondep_info() get_versiondep_info_x86_64()
#define vaddr_to_paddr(X) vtop4_x86_64(X)
-#define is_phys_addr(X) stub_true_ul(X)
+#define is_phys_addr(X) (!is_vmalloc_addr_x86_64(X))
#endif /* x86_64 */
#ifdef __powerpc64__ /* powerpc64 */