On 09/29/14 at 03:14pm, Michael Holzheu wrote: > Implement is_vmalloc_addr() using /proc/iommem parsing to enable the new > makedumpfile option "--mem-usage". > > Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com> Hi Michael, This idea looks good to me. One question, should it be put in arch/s390.c since this is only for s390? Then iomem_for_each_line() need be declared in makedumpfile.h . If later it's needed by other arch, can be taken out to makedumpfile.c, that should be better. Surely this is only my personal concern, if Atsushi like to accept it, I am fine too. Thanks Baoquan > --- > makedumpfile.c | 26 ++++++++++++++++++++++++++ > makedumpfile.h | 3 ++- > 2 files changed, 28 insertions(+), 1 deletion(-) > > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -9227,6 +9227,32 @@ int is_crashkernel_mem_reserved(void) > return !!crash_reserved_mem_nr; > } > > +struct addr_check { > + unsigned long addr; > + int found; > +}; > + > +static int phys_addr_callback(void *data, int nr, char *str, > + unsigned long base, unsigned long length) > +{ > + struct addr_check *addr_check = data; > + unsigned long addr = addr_check->addr; > + > + if (addr >= base && addr < base + length) { > + addr_check->found = 1; > + return -1; > + } > + return 0; > +} > + > +int is_iomem_phys_addr(unsigned long addr) > +{ > + struct addr_check addr_check = {addr, 0}; > + > + iomem_for_each_line("System RAM\n", phys_addr_callback, &addr_check); > + return addr_check.found; > +} > + > static int get_page_offset(void) > { > struct utsname utsname; > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -820,7 +820,7 @@ unsigned long long vaddr_to_paddr_s390x( > #define get_machdep_info() get_machdep_info_s390x() > #define get_versiondep_info() TRUE > #define vaddr_to_paddr(X) vaddr_to_paddr_s390x(X) > -#define is_vmalloc_addr(X) TRUE > +#define is_vmalloc_addr(X) (!is_iomem_phys_addr(X)) > #endif /* s390x */ > > #ifdef __ia64__ /* ia64 */ > @@ -1567,6 +1567,7 @@ int read_disk_dump_header(struct disk_du > int read_kdump_sub_header(struct kdump_sub_header *kh, char *filename); > void close_vmcoreinfo(void); > int close_files_for_creating_dumpfile(void); > +int is_iomem_phys_addr(unsigned long addr); > > > /* > > > _______________________________________________ > kexec mailing list > kexec at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec