658db69940
Since in Fedora 25 kernel kaslr is enabled (x86) but makedumpfile can not save a correct vmcore, so it means kdump default setup will not work. Pratyush posted a patch series to upstream which can fix the issue. Let's merge them in F25, will get the normal fixes after it being merged in upstream, we hopefully can rebase soon in rawhide. This is an urgent fix for F25 since F25 freeze is this week. Signed-off-by: Dave Young <dyoung@redhat.com> Acked-by: Pratyush Anand <panand@redhat.com> Acked-by: Baoquan He <bhe@redhat.com>
70 lines
1.9 KiB
Diff
70 lines
1.9 KiB
Diff
From: Pratyush Anand <panand@redhat.com>
|
|
To: ats-kumagai@wm.jp.nec.com
|
|
Subject: [PATCH Makedumpfile 1/4] x86_64: Calculate page_offset from pt_load
|
|
Date: Mon, 24 Oct 2016 22:18:43 +0530
|
|
Cc: Pratyush Anand <panand@redhat.com>, dyoung@redhat.com,
|
|
kexec@lists.infradead.org, bhe@redhat.com
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 8bit
|
|
Content-Type: text/plain; charset=utf-8
|
|
|
|
page_offset can always be calculated as 'virtual - physical' for a direct
|
|
mapping area on x86. Therefore, remove the version dependent calculation
|
|
and use this method.
|
|
|
|
Signed-off-by: Pratyush Anand <panand@redhat.com>
|
|
---
|
|
arch/x86_64.c | 24 ++++++++++++++++++++----
|
|
1 file changed, 20 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/arch/x86_64.c b/arch/x86_64.c
|
|
index ddf7be6bc57b..a96fd8ae00a1 100644
|
|
--- a/makedumpfile-1.6.0/arch/x86_64.c
|
|
+++ b/makedumpfile-1.6.0/arch/x86_64.c
|
|
@@ -44,6 +44,24 @@ get_xen_p2m_mfn(void)
|
|
return NOT_FOUND_LONG_VALUE;
|
|
}
|
|
|
|
+static int
|
|
+get_page_offset_x86_64(void)
|
|
+{
|
|
+ int i;
|
|
+ unsigned long long phys_start;
|
|
+ unsigned long long virt_start;
|
|
+
|
|
+ for (i = 0; get_pt_load(i, &phys_start, NULL, &virt_start, NULL); i++) {
|
|
+ if (virt_start >= __START_KERNEL_map) {
|
|
+ info->page_offset = virt_start - phys_start;
|
|
+ return TRUE;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ ERRMSG("Can't get any pt_load to calculate page offset.\n");
|
|
+ return FALSE;
|
|
+}
|
|
+
|
|
int
|
|
get_phys_base_x86_64(void)
|
|
{
|
|
@@ -159,10 +177,8 @@ get_versiondep_info_x86_64(void)
|
|
else
|
|
info->max_physmem_bits = _MAX_PHYSMEM_BITS_2_6_31;
|
|
|
|
- if (info->kernel_version < KERNEL_VERSION(2, 6, 27))
|
|
- info->page_offset = __PAGE_OFFSET_ORIG;
|
|
- else
|
|
- info->page_offset = __PAGE_OFFSET_2_6_27;
|
|
+ if (!get_page_offset_x86_64())
|
|
+ return FALSE;
|
|
|
|
if (info->kernel_version < KERNEL_VERSION(2, 6, 31)) {
|
|
info->vmalloc_start = VMALLOC_START_ORIG;
|
|
--
|
|
2.7.4
|
|
|
|
|
|
_______________________________________________
|
|
kexec mailing list
|
|
kexec@lists.infradead.org
|
|
http://lists.infradead.org/mailman/listinfo/kexec
|