Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753402AbbDGLCe (ORCPT ); Tue, 7 Apr 2015 07:02:34 -0400 Received: from mail-lb0-f176.google.com ([209.85.217.176]:35164 "EHLO mail-lb0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752661AbbDGLCd (ORCPT ); Tue, 7 Apr 2015 07:02:33 -0400 From: Alexander Kuleshov To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, Alexander Kuleshov Subject: [PATCH 1/2 v2] x86_64/earlyprintk: setup earlyprintk as early as possible Date: Tue, 7 Apr 2015 17:02:20 +0600 Message-Id: <1428404540-16601-1-git-send-email-kuleshovmail@gmail.com> X-Mailer: git-send-email 2.3.3.611.g09038fc.dirty Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2764 Lines: 78 As setup_early_printk passed to the early_param, it will be usable only after 'parse_early_param' function will be called from the 'setup_arch'. So we have earlyprintk during early boot and decompression. Next point after decompression of the kernel where we can use early_printk is after call of the 'parse_early_param'. This patch removes 'earlyprintk' from the early_param and setup it right after boot data copying. So 'early_printk' function will be usabable after decompression of the kernel and before parse_early_param will be called. Tested it with qemu, so early_printk() is usable and prints to serial console right after setup_early_printk function called from arch/x86/kerne/head64.c Changes v1->v2: * Comment added before the setup_early_printk call; * Added information about testing to the commit message. Signed-off-by: Alexander Kuleshov --- arch/x86/kernel/early_printk.c | 4 +--- arch/x86/kernel/head64.c | 3 +++ include/linux/printk.h | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c index a62536a..4b0577b 100644 --- a/arch/x86/kernel/early_printk.c +++ b/arch/x86/kernel/early_printk.c @@ -329,7 +329,7 @@ static inline void early_console_register(struct console *con, int keep_early) register_console(early_console); } -static int __init setup_early_printk(char *buf) +int __init setup_early_printk(char *buf) { int keep; @@ -390,5 +390,3 @@ static int __init setup_early_printk(char *buf) } return 0; } - -early_param("earlyprintk", setup_early_printk); diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index c4f8d46..4034ea6 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -172,6 +172,9 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) copy_bootdata(__va(real_mode_data)); + /* setup earlyprintk as early as possible */ + setup_early_printk(boot_command_line); + /* * Load microcode early on BSP. */ diff --git a/include/linux/printk.h b/include/linux/printk.h index baa3f97..47e3919 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -115,6 +115,7 @@ int no_printk(const char *fmt, ...) #ifdef CONFIG_EARLY_PRINTK extern asmlinkage __printf(1, 2) void early_printk(const char *fmt, ...); +int setup_early_printk(char *buf); #else static inline __printf(1, 2) __cold void early_printk(const char *s, ...) { } -- 2.3.3.611.g09038fc.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/