[PATCH] makedumpfile: Support ARM64

sgoel at codeaurora.org sgoel at codeaurora.org
Thu Aug 20 09:11:24 PDT 2015


Hi Pratush,
I have made the change now.

The reason for changing the KVBASE was to get non zero value for mem_map
as seen from the crash tool. If KVBASE stays at page offset we do not get
into the function that looks for the free pages.

After looking at the page usage using the crash tool it seems that ~80% of
the pages are free.

Maybe there is something else that I am missing here. The page look up
fails when writing the crashdump file.
Thanks,
Sameer

> Hi Sameer,
>
> On 19/08/2015:11:16:07 PM, sgoel at codeaurora.org wrote:
>> Hi Pratyush,
>>
>> I made the following changes to the code:
>>
>> KVBASE was being mapped to page_offset, so the mem_map that I saw using
>> the kmem command in crash did not seem to audit with the data generated
>> by
>> make dumpfile. I changed this to vmalloc_start.
>
> I am not sure if KVBASE should be VMALLOC_START. May be Atsushi can
> comment on
> that. But if so, did you correct info->page_offset definition in
> get_machdep_info_arm64? Something like following...
>
> diff --git a/arch/arm64.c b/arch/arm64.c
> index 4d50012529c3..a94a4ba16dd5 100644
> --- a/arch/arm64.c
> +++ b/arch/arm64.c
> @@ -199,7 +199,8 @@ get_machdep_info_arm64(void)
>  {
>  	info->max_physmem_bits = PHYS_MASK_SHIFT;
>  	info->section_size_bits = SECTIONS_SIZE_BITS;
> -	info->page_offset = KVBASE;
> +	info->page_offset = SYMBOL(_stext)
> +		& (0xffffffffffffffffUL << (VA_BITS - 1));
>  	info->vmalloc_start = 0xffffffffffffffffUL << VA_BITS;
>  	info->vmalloc_end = PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - 0x10000;
>  	info->vmemmap_start = VMALLOC_END + 0x10000;
> diff --git a/makedumpfile.h b/makedumpfile.h
> index c33b5f321d9a..f7d6fbefe98e 100644
> --- a/makedumpfile.h
> +++ b/makedumpfile.h
> @@ -488,8 +488,7 @@ int get_va_bits_arm64(void);
>  #define ARM64_PGTABLE_LEVELS	get_pgtable_level_arm64()
>  #define VA_BITS			get_va_bits_arm64()
>  #define PAGE_SHIFT		get_page_shift_arm64()
> -#define KVBASE_MASK		(0xffffffffffffffffUL << (VA_BITS - 1))
> -#define KVBASE			(SYMBOL(_stext) & KVBASE_MASK)
> +#define KVBASE			VMALLOC_START
>  #endif /* aarch64 */
>
>  #ifdef __arm__
>
> ~Pratyush
>





More information about the kexec mailing list