[PATCH 1/3] arm64: ptdump: use static initializers for vmemmap region boundaries

Mark Rutland mark.rutland at arm.com
Mon Feb 22 03:33:10 PST 2016


Hi,

On Mon, Feb 22, 2016 at 11:00:37AM +0100, Ard Biesheuvel wrote:
> There is no need to initialize the vmemmap region boundaries dynamically,
> since they are compile time constants. So just add these constants to the
> global struct initializer, and drop the dynamic assignment and related code.

This does look nicer.

I believe the intention here was to mark the end of the _populated_
vmemmap region rather than the static VA carveout, so this is a slight
change in behaviour.

However, I don't think we gained much by only handling the populated
region, and we didn't do the same for the linear map. So FWIW:

Acked-by: Mark Rutland <mark.rutland at arm.com>

Mark.

> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> ---
>  arch/arm64/mm/dump.c | 47 +++++---------------
>  1 file changed, 12 insertions(+), 35 deletions(-)
> 
> diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c
> index 6be918478f85..eadcb70e733c 100644
> --- a/arch/arm64/mm/dump.c
> +++ b/arch/arm64/mm/dump.c
> @@ -34,37 +34,21 @@ struct addr_marker {
>  	const char *name;
>  };
>  
> -enum address_markers_idx {
> -	MODULES_START_NR = 0,
> -	MODULES_END_NR,
> -	VMALLOC_START_NR,
> -	VMALLOC_END_NR,
> -#ifdef CONFIG_SPARSEMEM_VMEMMAP
> -	VMEMMAP_START_NR,
> -	VMEMMAP_END_NR,
> -#endif
> -	FIXADDR_START_NR,
> -	FIXADDR_END_NR,
> -	PCI_START_NR,
> -	PCI_END_NR,
> -	KERNEL_SPACE_NR,
> -};
> -
>  static struct addr_marker address_markers[] = {
> -	{ MODULES_VADDR,	"Modules start" },
> -	{ MODULES_END,		"Modules end" },
> -	{ VMALLOC_START,	"vmalloc() Area" },
> -	{ VMALLOC_END,		"vmalloc() End" },
> +	{ MODULES_VADDR,		"Modules start" },
> +	{ MODULES_END,			"Modules end" },
> +	{ VMALLOC_START,		"vmalloc() Area" },
> +	{ VMALLOC_END,			"vmalloc() End" },
>  #ifdef CONFIG_SPARSEMEM_VMEMMAP
> -	{ 0,			"vmemmap start" },
> -	{ 0,			"vmemmap end" },
> +	{ (u64)vmemmap,			"vmemmap start" },
> +	{ (u64)vmemmap + VMEMMAP_SIZE,	"vmemmap end" },
>  #endif
> -	{ FIXADDR_START,	"Fixmap start" },
> -	{ FIXADDR_TOP,		"Fixmap end" },
> -	{ PCI_IO_START,		"PCI I/O start" },
> -	{ PCI_IO_END,		"PCI I/O end" },
> -	{ PAGE_OFFSET,		"Linear Mapping" },
> -	{ -1,			NULL },
> +	{ FIXADDR_START,		"Fixmap start" },
> +	{ FIXADDR_TOP,			"Fixmap end" },
> +	{ PCI_IO_START,			"PCI I/O start" },
> +	{ PCI_IO_END,			"PCI I/O end" },
> +	{ PAGE_OFFSET,			"Linear Mapping" },
> +	{ -1,				NULL },
>  };
>  
>  /*
> @@ -349,13 +333,6 @@ static int ptdump_init(void)
>  			for (j = 0; j < pg_level[i].num; j++)
>  				pg_level[i].mask |= pg_level[i].bits[j].mask;
>  
> -#ifdef CONFIG_SPARSEMEM_VMEMMAP
> -	address_markers[VMEMMAP_START_NR].start_address =
> -				(unsigned long)virt_to_page(PAGE_OFFSET);
> -	address_markers[VMEMMAP_END_NR].start_address =
> -				(unsigned long)virt_to_page(high_memory);
> -#endif
> -
>  	pe = debugfs_create_file("kernel_page_tables", 0400, NULL, NULL,
>  				 &ptdump_fops);
>  	return pe ? 0 : -ENOMEM;
> -- 
> 2.5.0
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 



More information about the linux-arm-kernel mailing list