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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.