From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754245AbbBJVUY (ORCPT ); Tue, 10 Feb 2015 16:20:24 -0500 Received: from mga11.intel.com ([192.55.52.93]:13148 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752845AbbBJVUW (ORCPT ); Tue, 10 Feb 2015 16:20:22 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,553,1418112000"; d="scan'208";a="452783398" Subject: [RFC][PATCH] x86: nit: wrong page size in init_memory_mapping() printks To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Dave Hansen , dave.hansen@linux.intel.com From: Dave Hansen Date: Tue, 10 Feb 2015 13:20:30 -0800 Message-Id: <20150210212030.665EC267@viggo.jf.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Hansen With 32-bit non-PAE kernels, we have 2 page sizes available (at most): 4k and 4M. Enabling PAE replaces that 4M size with a 2M one (which 64-bit systems use too). But, when booting a 32-bit non-PAE kernel, in one of our early-boot printouts, we say: [ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff] [ 0.000000] [mem 0x00000000-0x000fffff] page 4k [ 0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff] [ 0.000000] [mem 0x37000000-0x373fffff] page 2M [ 0.000000] init_memory_mapping: [mem 0x00100000-0x36ffffff] [ 0.000000] [mem 0x00100000-0x003fffff] page 4k [ 0.000000] [mem 0x00400000-0x36ffffff] page 2M [ 0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff] [ 0.000000] [mem 0x37400000-0x377fdfff] page 4k Which is obviously wrong. There is no 2M page available. This is probably because of a badly-named variable: in the map_range code: PG_LEVEL_2M. Instead of renaming all the PG_LEVEL_2M's. This patch just fixes the printout: [ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff] [ 0.000000] [mem 0x00000000-0x000fffff] page 4k [ 0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff] [ 0.000000] [mem 0x37000000-0x373fffff] page 4M [ 0.000000] init_memory_mapping: [mem 0x00100000-0x36ffffff] [ 0.000000] [mem 0x00100000-0x003fffff] page 4k [ 0.000000] [mem 0x00400000-0x36ffffff] page 4M [ 0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff] [ 0.000000] [mem 0x37400000-0x377fdfff] page 4k [ 0.000000] BRK [0x03206000, 0x03206fff] PGTABLE Signed-off-by: Dave Hansen --- b/arch/x86/mm/init.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff -puN arch/x86/mm/init.c~spitting-out-bad-page-size arch/x86/mm/init.c --- a/arch/x86/mm/init.c~spitting-out-bad-page-size 2015-02-10 11:19:21.839208023 -0800 +++ b/arch/x86/mm/init.c 2015-02-10 11:19:21.848208428 -0800 @@ -238,6 +238,31 @@ static void __init_refok adjust_range_pa } } +static const char *page_size_string(struct map_range *mr) +{ + static const char str_1g[] = "1G"; + static const char str_2m[] = "2M"; + static const char str_4m[] = "4M"; + static const char str_4k[] = "4k"; + + if (mr->page_size_mask & (1<page_size_mask & (1<page_size_mask & (1<