From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756754Ab2LMWDD (ORCPT ); Thu, 13 Dec 2012 17:03:03 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:26713 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756704Ab2LMWC5 (ORCPT ); Thu, 13 Dec 2012 17:02:57 -0500 From: Yinghai Lu To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" Cc: "Eric W. Biederman" , Andrew Morton , linux-kernel@vger.kernel.org, Yinghai Lu Subject: [PATCH v6 20/27] x86, 64bit: Print init kernel lowmap correctly Date: Thu, 13 Dec 2012 14:02:14 -0800 Message-Id: <1355436141-8668-21-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1355436141-8668-1-git-send-email-yinghai@kernel.org> References: <1355436141-8668-1-git-send-email-yinghai@kernel.org> X-Source-IP: ucsinet21.oracle.com [156.151.31.93] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When we get x86_64_start_kernel from arch/x86/kernel/head_64.S, We have 1. kernel highmap 512M (KERNEL_IMAGE_SIZE) from kernel loaded address. 2. kernel lowmap: [0, 1024M), and size (_end - _text) from kernel loaded address. for example, if the kernel bzImage is loaded high from 8G, will get: 1. kernel highmap: [8G, 8G+512M) 2. kernel lowmap: [0, 1024M), and [8G, 8G +_end - _text) So max_pfn_mapped that is for low map pfn recording is not that simple to 512M for 64 bit. Try to print out two ranges, when kernel is loaded high. Also need to use KERNEL_IMAGE_SIZE directly for highmap cleanup. Signed-off-by: Yinghai Lu --- arch/x86/kernel/head64.c | 2 -- arch/x86/kernel/setup.c | 23 +++++++++++++++++++++-- arch/x86/mm/init_64.c | 6 +++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index b8b6ad9..17978b2 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -110,8 +110,6 @@ void __init x86_64_start_kernel(char * real_mode_data) /* Make NULL pointers segfault */ zap_identity_mappings(); - max_pfn_mapped = KERNEL_IMAGE_SIZE >> PAGE_SHIFT; - for (i = 0; i < NUM_EXCEPTION_VECTORS; i++) { #ifdef CONFIG_EARLY_PRINTK set_intr_gate(i, &early_idt_handlers[i]); diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index efb33dd..c4e7aaa 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -675,6 +675,26 @@ static int __init parse_reservelow(char *p) early_param("reservelow", parse_reservelow); +static __init void print_init_mem_mapped(void) +{ +#ifdef CONFIG_X86_32 + printk(KERN_DEBUG "initial memory mapped: [mem 0x00000000-%#010lx]\n", + (max_pfn_mapped<