All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option
@ 2017-08-21  3:24 Pingfan Liu
  2017-08-21  3:24 ` [PATCH v2 1/2] makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64() Pingfan Liu
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Pingfan Liu @ 2017-08-21  3:24 UTC (permalink / raw)
  To: kexec; +Cc: Hari Bathini, Atsushi Kumagai

v1->v2:
    follow the scheme for arch dependent code

Pingfan Liu (2):
  makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64()
  makedumpfile/ppc64: get the info of mem reserved for crashkernel

 arch/ppc64.c   | 37 +++++++++++++++++++++++++++++++++++++
 makedumpfile.c |  3 +++
 makedumpfile.h | 11 +++++++++++
 3 files changed, 51 insertions(+)

-- 
2.7.4


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/2] makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64()
  2017-08-21  3:24 [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Pingfan Liu
@ 2017-08-21  3:24 ` Pingfan Liu
  2017-08-21  3:24 ` [PATCH v2 2/2] makedumpfile/ppc64: get the info of mem reserved for crashkernel Pingfan Liu
  2017-08-24  3:00 ` [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Atsushi Kumagai
  2 siblings, 0 replies; 4+ messages in thread
From: Pingfan Liu @ 2017-08-21  3:24 UTC (permalink / raw)
  To: kexec; +Cc: Hari Bathini, Atsushi Kumagai

Envalue info->page_offset in get_versiondep_info_ppc64() is a little
misleading. But since show_mem_usage->get_page_offset->get_versiondep_info
needs to get this info, so initialize it in get_versiondep_info_ppc64().

Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
 arch/ppc64.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/ppc64.c b/arch/ppc64.c
index 6aeab7e..3fd6002 100644
--- a/arch/ppc64.c
+++ b/arch/ppc64.c
@@ -576,6 +576,7 @@ get_versiondep_info_ppc64()
 		ERRMSG("Can't initialize for vmalloc translation\n");
 		return FALSE;
 	}
+	info->page_offset = __PAGE_OFFSET;
 
 	return TRUE;
 }
-- 
2.7.4


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] makedumpfile/ppc64: get the info of mem reserved for crashkernel
  2017-08-21  3:24 [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Pingfan Liu
  2017-08-21  3:24 ` [PATCH v2 1/2] makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64() Pingfan Liu
@ 2017-08-21  3:24 ` Pingfan Liu
  2017-08-24  3:00 ` [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Atsushi Kumagai
  2 siblings, 0 replies; 4+ messages in thread
From: Pingfan Liu @ 2017-08-21  3:24 UTC (permalink / raw)
  To: kexec; +Cc: Hari Bathini, Atsushi Kumagai

In kernel, ppc64 does not export the mem layout by ioresource. So we
need to get the mem info for crashkernel from device tree.

Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
 arch/ppc64.c   | 36 ++++++++++++++++++++++++++++++++++++
 makedumpfile.c |  3 +++
 makedumpfile.h | 11 +++++++++++
 3 files changed, 50 insertions(+)

diff --git a/arch/ppc64.c b/arch/ppc64.c
index 3fd6002..bacac77 100644
--- a/arch/ppc64.c
+++ b/arch/ppc64.c
@@ -617,4 +617,40 @@ vaddr_to_paddr_ppc64(unsigned long vaddr)
 	return ppc64_vtop_level4(vaddr);
 }
 
+int arch_crashkernel_mem_size_ppc64()
+{
+	const char f_crashsize[] = "/proc/device-tree/chosen/linux,crashkernel-size";
+	const char f_crashbase[] = "/proc/device-tree/chosen/linux,crashkernel-base";
+	unsigned long crashk_sz_be, crashk_sz;
+	unsigned long crashk_base_be, crashk_base;
+	uint swap;
+	FILE *fp, *fpb;
+
+	fp = fopen(f_crashsize, "r");
+	if (!fp) {
+		ERRMSG("Cannot open %s\n", f_crashsize);
+		return FALSE;
+	}
+	fpb = fopen(f_crashbase, "r");
+	if (!fp) {
+		ERRMSG("Cannot open %s\n", f_crashbase);
+		fclose(fp);
+		return FALSE;
+	}
+
+	fread(&crashk_sz_be, sizeof(crashk_sz_be), 1, fp);
+	fread(&crashk_base_be, sizeof(crashk_base_be), 1, fpb);
+	fclose(fp);
+	fclose(fpb);
+	/* dev tree is always big endian */
+	swap = !is_bigendian();
+	crashk_sz = swap64(crashk_sz_be, swap);
+	crashk_base = swap64(crashk_base_be, swap);
+	crash_reserved_mem_nr = 1;
+	crash_reserved_mem[0].start = crashk_base;
+	crash_reserved_mem[0].end   = crashk_base + crashk_sz - 1;
+
+	return TRUE;
+}
+
 #endif /* powerpc64 */
diff --git a/makedumpfile.c b/makedumpfile.c
index f85003a..4ed4936 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -10925,6 +10925,9 @@ int is_crashkernel_mem_reserved(void)
 {
 	int ret;
 
+	if (arch_crashkernel_mem_size())
+		return TRUE;
+
 	ret = iomem_for_each_line("Crash kernel\n",
 					crashkernel_mem_callback, NULL);
 	crash_reserved_mem_nr = ret;
diff --git a/makedumpfile.h b/makedumpfile.h
index 8a05794..d01d79a 100644
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -933,6 +933,7 @@ int get_xen_info_arm64(void);
 #define get_xen_basic_info_arch(X) get_xen_basic_info_arm64(X)
 #define get_xen_info_arch(X) get_xen_info_arm64(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif /* aarch64 */
 
 #ifdef __arm__
@@ -946,6 +947,7 @@ unsigned long long vaddr_to_paddr_arm(unsigned long vaddr);
 #define get_kaslr_offset(X)	stub_false()
 #define vaddr_to_paddr(X)	vaddr_to_paddr_arm(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif /* arm */
 
 #ifdef __x86__
@@ -959,6 +961,7 @@ unsigned long long vaddr_to_paddr_x86(unsigned long vaddr);
 #define get_kaslr_offset(X)	stub_false()
 #define vaddr_to_paddr(X)	vaddr_to_paddr_x86(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif /* x86 */
 
 #ifdef __x86_64__
@@ -974,12 +977,14 @@ unsigned long long vtop4_x86_64(unsigned long vaddr);
 #define get_kaslr_offset(X)	get_kaslr_offset_x86_64(X)
 #define vaddr_to_paddr(X)	vtop4_x86_64(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif /* x86_64 */
 
 #ifdef __powerpc64__ /* powerpc64 */
 int get_machdep_info_ppc64(void);
 int get_versiondep_info_ppc64(void);
 unsigned long long vaddr_to_paddr_ppc64(unsigned long vaddr);
+int arch_crashkernel_mem_size_ppc64(void);
 #define find_vmemmap()		stub_false()
 #define get_phys_base()		stub_true()
 #define get_machdep_info()	get_machdep_info_ppc64()
@@ -987,6 +992,7 @@ unsigned long long vaddr_to_paddr_ppc64(unsigned long vaddr);
 #define get_kaslr_offset(X)	stub_false()
 #define vaddr_to_paddr(X)	vaddr_to_paddr_ppc64(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	arch_crashkernel_mem_size_ppc64()
 #endif          /* powerpc64 */
 
 #ifdef __powerpc32__ /* powerpc32 */
@@ -999,6 +1005,7 @@ unsigned long long vaddr_to_paddr_ppc(unsigned long vaddr);
 #define get_kaslr_offset(X)	stub_false()
 #define vaddr_to_paddr(X)	vaddr_to_paddr_ppc(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif          /* powerpc32 */
 
 #ifdef __s390x__ /* s390x */
@@ -1012,6 +1019,7 @@ int is_iomem_phys_addr_s390x(unsigned long addr);
 #define get_kaslr_offset(X)	stub_false()
 #define vaddr_to_paddr(X)	vaddr_to_paddr_s390x(X)
 #define is_phys_addr(X)		is_iomem_phys_addr_s390x(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif          /* s390x */
 
 #ifdef __ia64__ /* ia64 */
@@ -1026,6 +1034,7 @@ unsigned long long vaddr_to_paddr_ia64(unsigned long vaddr);
 #define vaddr_to_paddr(X)	vaddr_to_paddr_ia64(X)
 #define VADDR_REGION(X)		(((unsigned long)(X)) >> REGION_SHIFT)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif          /* ia64 */
 
 #ifdef __sparc64__ /* sparc64 */
@@ -1038,6 +1047,7 @@ unsigned long long vaddr_to_paddr_sparc64(unsigned long vaddr);
 #define get_versiondep_info()   get_versiondep_info_sparc64()
 #define vaddr_to_paddr(X)       vaddr_to_paddr_sparc64(X)
 #define is_phys_addr(X)		stub_true_ul(X)
+#define arch_crashkernel_mem_size()	stub_false()
 #endif		/* sparc64 */
 
 typedef unsigned long long mdf_pfn_t;
@@ -1939,6 +1949,7 @@ int iomem_for_each_line(char *match, int (*callback)(void *data, int nr,
 						     unsigned long base,
 						     unsigned long length),
 			void *data);
+int is_bigendian(void);
 
 
 /*
-- 
2.7.4


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option
  2017-08-21  3:24 [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Pingfan Liu
  2017-08-21  3:24 ` [PATCH v2 1/2] makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64() Pingfan Liu
  2017-08-21  3:24 ` [PATCH v2 2/2] makedumpfile/ppc64: get the info of mem reserved for crashkernel Pingfan Liu
@ 2017-08-24  3:00 ` Atsushi Kumagai
  2 siblings, 0 replies; 4+ messages in thread
From: Atsushi Kumagai @ 2017-08-24  3:00 UTC (permalink / raw)
  To: Pingfan Liu; +Cc: Hari Bathini, kexec

Hello Pingfan,

>v1->v2:
>    follow the scheme for arch dependent code

This is what I expected, thanks!
I'll merge this into v1.6.3.

Regards,
Atsushi Kumagai

>Pingfan Liu (2):
>  makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64()
>  makedumpfile/ppc64: get the info of mem reserved for crashkernel
>
> arch/ppc64.c   | 37 +++++++++++++++++++++++++++++++++++++
> makedumpfile.c |  3 +++
> makedumpfile.h | 11 +++++++++++
> 3 files changed, 51 insertions(+)
>
>--
>2.7.4
>
>
>_______________________________________________
>kexec mailing list
>kexec@lists.infradead.org
>http://lists.infradead.org/mailman/listinfo/kexec



_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-08-24  3:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-21  3:24 [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Pingfan Liu
2017-08-21  3:24 ` [PATCH v2 1/2] makedumpfile/ppc64: set page_offset in get_versiondep_info_ppc64() Pingfan Liu
2017-08-21  3:24 ` [PATCH v2 2/2] makedumpfile/ppc64: get the info of mem reserved for crashkernel Pingfan Liu
2017-08-24  3:00 ` [PATCH v2 0/2] makedumpfile/ppc64: enable mem-usage option Atsushi Kumagai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.