Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753645AbbDGJwf (ORCPT ); Tue, 7 Apr 2015 05:52:35 -0400 Received: from mail-wi0-f169.google.com ([209.85.212.169]:36712 "EHLO mail-wi0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752835AbbDGJwd (ORCPT ); Tue, 7 Apr 2015 05:52:33 -0400 Date: Tue, 7 Apr 2015 11:52:28 +0200 From: Ingo Molnar To: Alexander Kuleshov Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Subject: Re: [PATCH] x86/earlyprintk: setup earlyprintk as early as possible Message-ID: <20150407095228.GA13093@gmail.com> References: <1428326234-10067-1-git-send-email-kuleshovmail@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1428326234-10067-1-git-send-email-kuleshovmail@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2887 Lines: 79 * Alexander Kuleshov wrote: > As setup_earlyprintk 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 kernel and before parse_early_param will be called. > > Signed-off-by: Alexander Kuleshov > --- > arch/x86/kernel/early_printk.c | 4 +--- > arch/x86/kernel/head64.c | 1 + > include/linux/printk.h | 1 + > 3 files changed, 3 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..0141de7 100644 > --- a/arch/x86/kernel/head64.c > +++ b/arch/x86/kernel/head64.c > @@ -171,6 +171,7 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) > load_idt((const struct desc_ptr *)&idt_descr); > > copy_bootdata(__va(real_mode_data)); > + 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, ...) { } This looks useful. It would be nice to test it via a well placed printk() and check that before the patch the message doesn't go to the serial console and after the patch the message indeed arrives on the early serial console - or something like that. Thanks, Ingo -- 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/