From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753556AbbBSLfK (ORCPT ); Thu, 19 Feb 2015 06:35:10 -0500 Received: from terminus.zytor.com ([198.137.202.10]:53130 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753095AbbBSLfF (ORCPT ); Thu, 19 Feb 2015 06:35:05 -0500 Date: Thu, 19 Feb 2015 03:34:45 -0800 From: tip-bot for Dave Hansen Message-ID: Cc: tglx@linutronix.de, yinghai@kernel.org, bp@suse.de, dave.hansen@linux.intel.com, linux-kernel@vger.kernel.org, hpa@zytor.com, penberg@cs.helsinki.fi, mingo@kernel.org Reply-To: linux-kernel@vger.kernel.org, hpa@zytor.com, penberg@cs.helsinki.fi, mingo@kernel.org, tglx@linutronix.de, bp@suse.de, yinghai@kernel.org, dave.hansen@linux.intel.com In-Reply-To: <20150210212030.665EC267@viggo.jf.intel.com> References: <20150210212030.665EC267@viggo.jf.intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] x86/mm/init: Fix incorrect page size in init_memory_mapping() printks Git-Commit-ID: f15e05186c3244e9195378a0a568283a8ccc60b0 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: f15e05186c3244e9195378a0a568283a8ccc60b0 Gitweb: http://git.kernel.org/tip/f15e05186c3244e9195378a0a568283a8ccc60b0 Author: Dave Hansen AuthorDate: Tue, 10 Feb 2015 13:20:30 -0800 Committer: Borislav Petkov CommitDate: Thu, 19 Feb 2015 11:45:27 +0100 x86/mm/init: Fix incorrect page size in init_memory_mapping() printks 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: init_memory_mapping: [mem 0x00000000-0x000fffff] [mem 0x00000000-0x000fffff] page 4k init_memory_mapping: [mem 0x37000000-0x373fffff] [mem 0x37000000-0x373fffff] page 2M init_memory_mapping: [mem 0x00100000-0x36ffffff] [mem 0x00100000-0x003fffff] page 4k [mem 0x00400000-0x36ffffff] page 2M init_memory_mapping: [mem 0x37400000-0x377fdfff] [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: init_memory_mapping: [mem 0x00000000-0x000fffff] [mem 0x00000000-0x000fffff] page 4k init_memory_mapping: [mem 0x37000000-0x373fffff] [mem 0x37000000-0x373fffff] page 4M init_memory_mapping: [mem 0x00100000-0x36ffffff] [mem 0x00100000-0x003fffff] page 4k [mem 0x00400000-0x36ffffff] page 4M init_memory_mapping: [mem 0x37400000-0x377fdfff] [mem 0x37400000-0x377fdfff] page 4k BRK [0x03206000, 0x03206fff] PGTABLE Signed-off-by: Dave Hansen Cc: Pekka Enberg Cc: Yinghai Lu Link: http://lkml.kernel.org/r/20150210212030.665EC267@viggo.jf.intel.com Signed-off-by: Borislav Petkov --- arch/x86/mm/init.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 079c3b6..7ff2424 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -238,6 +238,31 @@ static void __init_refok adjust_range_page_size_mask(struct map_range *mr, } } +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<