Thread (26 messages) flat view 26 messages, 4 authors, 2016-06-30
STALE3721d

[PATCH v19 10/13] arm64: kdump: add VMCOREINFO's for user-space coredump tools

From: AKASHI Takahiro <hidden>
Date: 2016-06-22 05:59:41
Also in: kexec

On Mon, Jun 20, 2016 at 11:02:22AM +0530, Pratyush Anand wrote:
+Atsushi

Hi Takahiro,

On 16/06/2016:11:48:28 PM, Geoff Levand wrote:
quoted
From: AKASHI Takahiro <redacted>

For the current crash utility, we need to know, at least,
  - kimage_voffset
  - PHYS_OFFSET
to handle the contents of core dump file (/proc/vmcore) correctly due to
the introduction of KASLR (CONFIG_RANDOMIZE_BASE) in v4.6.
This patch puts them as VMCOREINFO's into the file.

  - VA_BITS
is also added for makedumpfile command.
Thanks for adding them. They are quite helpful for makedumpfile as well.
quoted
More VMCOREINFO's may be added later.
Yes, we will need to pass VMCOREINFO_SYMBOL(_text) and VMCOREINFO_SYMBOL(_end)
in order to work with makedumpfile.
I know that adding those symbols is the easiest way, but
theoretically, if we know the physical address of "swapper_pg_dir",
instead of its virtual address, we can access all the memory pointed to
by any kernel virtual address.
How do you rationalize that we need to know "_text" and "_end"?

Thanks,
-Takahiro AKASHI
I already have makedumpfile patches [1]  which uses _text and _end, but not
sending them to makedumpfile upstream, until you will be agreeing to take [2] in
future. Please let me know your opinion about it. If it would be acceptable then
I may send aarch64 makedumpfile improvements to upstream.

[1] https://github.com/pratyushanand/makedumpfile/commit/d9590fec049976b8fee0d6b4e66e6f3e99ff1113
[2] https://github.com/pratyushanand/linux/commit/1d94df20c575c725910c9c29a129b9f14e7e900b

~Pratyush
quoted
Signed-off-by: AKASHI Takahiro <redacted>
---
 arch/arm64/kernel/machine_kexec.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
diff --git a/arch/arm64/kernel/machine_kexec.c b/arch/arm64/kernel/machine_kexec.c
index f270967..57a30fb 100644
--- a/arch/arm64/kernel/machine_kexec.c
+++ b/arch/arm64/kernel/machine_kexec.c
@@ -18,6 +18,7 @@
 
 #include <asm/cacheflush.h>
 #include <asm/cpu_ops.h>
+#include <asm/memory.h>
 #include <asm/mmu_context.h>
 
 #include "cpu-reset.h"
@@ -278,3 +279,13 @@ void machine_crash_shutdown(struct pt_regs *regs)
 
 	pr_info("Starting crashdump kernel...\n");
 }
+
+void arch_crash_save_vmcoreinfo(void)
+{
+	VMCOREINFO_NUMBER(VA_BITS);
+	/* Please note VMCOREINFO_NUMBER() uses "%d", not "%x" */
+	vmcoreinfo_append_str("NUMBER(kimage_voffset)=0x%llx\n",
+						kimage_voffset);
+	vmcoreinfo_append_str("NUMBER(PHYS_OFFSET)=0x%llx\n",
+						PHYS_OFFSET);
+}
-- 
2.5.0



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help