Re: [PATCH 19/21] MIPS memblock: Add print out method of kernel virtual memory layout
From: Serge Semin <hidden>
Date: 2016-12-19 13:15:39
Also in:
linux-mips, lkml
On Mon, Dec 19, 2016 at 01:02:37PM +0000, James Hogan [off-list ref] wrote:
Hi Matt, On Mon, Dec 19, 2016 at 12:04:54PM +0000, Matt Redfearn wrote:quoted
On 19/12/16 02:07, Serge Semin wrote:quoted
It's useful to have some printed map of the kernel virtual memory, at least for debugging purpose. Signed-off-by: Serge Semin <redacted> ---quoted
quoted
@@ -106,6 +107,49 @@ static void __init zone_sizes_init(void) } /* + * Print out kernel memory layout + */ +#define MLK(b, t) b, t, ((t) - (b)) >> 10 +#define MLM(b, t) b, t, ((t) - (b)) >> 20 +#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K) +static void __init mem_print_kmap_info(void) +{ + pr_notice("Virtual kernel memory layout:\n" + " lowmem : 0x%08lx - 0x%08lx (%4ld MB)\n" + " vmalloc : 0x%08lx - 0x%08lx (%4ld MB)\n" +#ifdef CONFIG_HIGHMEM + " pkmap : 0x%08lx - 0x%08lx (%4ld MB)\n" +#endif + " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n" + " .text : 0x%p" " - 0x%p" " (%4td kB)\n" + " .data : 0x%p" " - 0x%p" " (%4td kB)\n" + " .init : 0x%p" " - 0x%p" " (%4td kB)\n", + MLM(PAGE_OFFSET, (unsigned long)high_memory), + MLM(VMALLOC_START, VMALLOC_END), +#ifdef CONFIG_HIGHMEM + MLM(PKMAP_BASE, (PKMAP_BASE) + (LAST_PKMAP)*(PAGE_SIZE)), +#endif + MLK(FIXADDR_START, FIXADDR_TOP), + MLK_ROUNDUP(_text, _etext), + MLK_ROUNDUP(_sdata, _edata), + MLK_ROUNDUP(__init_begin, __init_end));Please drop printing the kernel addresses, or at least only do it if KASLR is not turned on, otherwise you're removing the advantage of KASLR, that critical kernel addresses cannot be determined easily from userspace.According to Documentation/printk-formats.txt, this is what %pK is for. Better to use that instead? Cheers James
The function is called from the kernel directly, which is privileged enough to do the printing. So I suppose Matt is right, to hide this prints out unless debug is enabled. Thanks, -Sergey
quoted
It may be better to merge the functionality of show_kernel_relocation http://lxr.free-electrons.com/source/arch/mips/kernel/relocate.c#L354 into this function, but only print it under the same conditions as currently, i.e. #if defined(CONFIG_DEBUG_KERNEL) && defined(CONFIG_DEBUG_INFO) http://lxr.free-electrons.com/source/arch/mips/kernel/setup.c#L530 Thanks, Matt