public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Alexander Kuleshov <kuleshovmail@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Borislav Petkov <bp@suse.de>,
	Mark Rustad <mark.d.rustad@intel.com>,
	Yinghai Lu <yinghai@kernel.org>
Subject: Re: [PATCH v11 3/5] x86/earlyprintk: Allocate early log_buf as early as possible
Date: Tue, 09 Jun 2015 18:58:52 +0300	[thread overview]
Message-ID: <1433865532.26331.108.camel@linux.intel.com> (raw)
In-Reply-To: <1433848293-5228-1-git-send-email-kuleshovmail@gmail.com>

On Tue, 2015-06-09 at 17:11 +0600, Alexander Kuleshov wrote:
> This patch moves call of the early setup_log_buf from the
> arch/x86/kernel/setup.c to the arch/x86/kernel/head{32,64}.c
> and updates log_buf with the earlyprintk messages.
> 

Didn't mention lockdep_init() change. Regarding to what Borislav told
you how do you handle double call of lockdep_init()?


> We need to do it because without it we will not see earlyprintk
> messages in the kernel log.
> 
> Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
> ---
>  arch/x86/kernel/head32.c | 6 ++++++
>  arch/x86/kernel/head64.c | 5 +++++
>  arch/x86/kernel/setup.c  | 3 ---
>  kernel/printk/printk.c   | 5 +++++
>  4 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
> index 92e8b5f..f28d10f 100644
> --- a/arch/x86/kernel/head32.c
> +++ b/arch/x86/kernel/head32.c
> @@ -32,2 +32,2 @@ static void __init i386_default_early_setup(void)
>  asmlinkage __visible void __init i386_start_kernel(void)
>  {
> 	setup_builtin_cmdline();
> +
> +	lockdep_init();
> +
> +	/* Allocate early log buffer */
> +	setup_log_buf(1);
> +
>  	cr4_init_shadow();
>  	sanitize_boot_params(&boot_params);
>  
> diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
> index 1e5f064..53662d2 100644
> --- a/arch/x86/kernel/head64.c
> +++ b/arch/x86/kernel/head64.c
> @@ -174,0 +174,0 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
> 
>  	setup_builtin_cmdline();
>  
> +	lockdep_init();
> +
> +	/* Allocate early log buffer */
> +	setup_log_buf(1);
> +
>  	/*
>  	 * Load microcode early on BSP.
>  	 */
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 0aeee0a..edfdb6a 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1146,9 +1146,6 @@ void __init setup_arch(char **cmdline_p)
>  	if (init_ohci1394_dma_early)
>  		init_ohci1394_dma_on_all_controllers();
>  #endif
> -	/* Allocate bigger log buffer */
> -	setup_log_buf(1);
> -
>  	reserve_initrd();
>  
>  #if defined(CONFIG_ACPI) && defined(CONFIG_BLK_DEV_INITRD)
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index c099b08..d76a032 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1913,6 +1913,7 @@ asmlinkage __visible void early_printk(const char *fmt, ...)
>  	va_list ap;
>  	char buf[512];
>  	int n;
> +	printk_func_t vprintk_func;

Rearrange this to be upper a bit, for example before char buf[].

>  
>  	if (!early_console)
>  		return;
> @@ -1922,7 +1923,10 @@ asmlinkage __visible void early_printk(const char *fmt, ...)
>  	va_end(ap);
>  
>  	early_console->write(early_console, buf, n);
> +
> +	/* Store earlyprintk messages in the log_buf */
> +	vprintk_func = this_cpu_read(printk_func);
> +	vprintk_func(fmt, ap);

Shouldn't be 

va_start(ap, fmt);
…
vprintk_func(…);
va_end(ap);

?

Also, when you print the same message to the serial and to kernel
buffer, do you avoid duplication? Your early_printk messages needs flag
LOG_NOCONS if I understand correctly.

>  }
>  #endif
>  


-- 
Andy Shevchenko <andriy.shevchenko@intel.com>
Intel Finland Oy


  reply	other threads:[~2015-06-09 16:11 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-09 11:10 [PATCH v11 0/5] x86/earlyprintk: setup serial earlyprintk as early as possible Alexander Kuleshov
2015-06-09 11:11 ` [PATCH v11 1/5] x86/setup: introduce setup_bultin_cmdline Alexander Kuleshov
2015-06-09 15:32   ` Andy Shevchenko
2015-06-09 11:11 ` [PATCH v11 2/5] x86/setup: handle builtin command line as early as possible Alexander Kuleshov
2015-06-09 11:11 ` [PATCH v11 3/5] x86/earlyprintk: Allocate early log_buf " Alexander Kuleshov
2015-06-09 15:58   ` Andy Shevchenko [this message]
2015-06-09 16:07     ` Borislav Petkov
2015-06-09 17:37       ` Alexander Kuleshov
2015-06-10  9:04         ` Borislav Petkov
2015-06-10  9:25           ` Alexander Kuleshov
2015-06-09 11:11 ` [PATCH v11 4/5] x86/earlyprintk: setup earlyprintk " Alexander Kuleshov
2015-06-09 17:00   ` Andy Shevchenko
2015-06-09 18:00     ` Alexander Kuleshov
2015-06-10  9:44       ` Andy Shevchenko
2015-06-10 10:36         ` Alexander Kuleshov
2015-06-10 10:41           ` Alexander Kuleshov
2015-06-09 11:11 ` [PATCH v11 5/5] x86/earlyprintk: Patch for testing earlyprintk Alexander Kuleshov
2015-06-09 15:30   ` Andy Shevchenko
2015-06-09 16:11     ` Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1433865532.26331.108.camel@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=bp@suse.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=kuleshovmail@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.d.rustad@intel.com \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox