From: Andrew Morton <akpm@zip.com.au>
To: j-nomura@ce.jp.nec.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] 2.4.16 kernel/printk.c (per processor initialization check)
Date: Mon, 03 Dec 2001 01:20:28 -0800 [thread overview]
Message-ID: <3C0B43DC.7A8F582A@zip.com.au> (raw)
In-Reply-To: <20011203144615C.nomura@hpc.bs1.fc.nec.co.jp>
j-nomura@ce.jp.nec.com wrote:
>
> Hello,
>
> I experienced system hang on my SMP machine and it turned out to be due to
> console write before mmu initialization completes.
>
> To be more specific, even if secondary processors are not in status enough
> to do actual console I/O (e.g. mmu is not initialized), call_console_drivers()
> tries to do it.
> This leads to unpredictable result. For me, for example, it cause machine
> check abort and hang up system.
>
> Attached is a patch for it.
>
> --- kernel/printk.c 2001/11/27 04:41:49 1.1.1.8
> +++ kernel/printk.c 2001/12/03 05:25:26
> @@ -491,20 +491,22 @@
> */
> void release_console_sem(void)
> {
> unsigned long flags;
> unsigned long _con_start, _log_end;
> unsigned long must_wake_klogd = 0;
>
> for ( ; ; ) {
> spin_lock_irqsave(&logbuf_lock, flags);
> must_wake_klogd |= log_start - log_end;
> + if (!(cpu_online_map & 1UL << smp_processor_id()))
> + break;
> if (con_start == log_end)
> break; /* Nothing to print */
> _con_start = con_start;
> _log_end = log_end;
> con_start = log_end; /* Flush */
> spin_unlock_irqrestore(&logbuf_lock, flags);
> call_console_drivers(_con_start, _log_end);
> }
> console_may_schedule = 0;
> up(&console_sem);
>
Seems that there is some sort of ordering problem here - someone
is calling printk before the MMU is initialised, but after some
console drivers have been installed.
I suspect the real fix is elsewhere, but I'm not sure where.
Probably a clearer place to put this test would be within
printk itself, immediately before the down_trylock. Does that
work?
-
next prev parent reply other threads:[~2001-12-04 1:45 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-12-03 5:46 [PATCH] 2.4.16 kernel/printk.c (per processor initialization check) j-nomura
2001-12-03 9:20 ` Andrew Morton [this message]
2001-12-03 10:32 ` j-nomura
2001-12-04 1:45 ` [PATCH] 2.4.16 kernel/printk.c (per processor initializationcheck) Andrew Morton
2001-12-06 5:01 ` j-nomura
2001-12-07 3:40 ` [PATCH] 2.4.16 kernel/printk.c (per processorinitializationcheck) Andrew Morton
2001-12-07 18:52 ` Marcelo Tosatti
2001-12-07 20:52 ` William Lee Irwin III
2001-12-07 21:37 ` David Mosberger
2001-12-07 20:47 ` Marcelo Tosatti
2001-12-07 22:17 ` David Mosberger
2001-12-07 21:09 ` Marcelo Tosatti
2001-12-08 1:10 ` David Mosberger
2001-12-08 11:27 ` Alan Cox
2001-12-08 16:41 ` David Mosberger
2001-12-08 20:45 ` Alan Cox
2001-12-09 0:32 ` David Mosberger
2001-12-09 0:55 ` Alan Cox
2001-12-09 0:58 ` David Mosberger
2001-12-09 1:15 ` Alan Cox
2001-12-09 1:14 ` David Mosberger
2001-12-09 1:32 ` Alan Cox
2001-12-07 22:08 ` Alan Cox
2001-12-07 22:14 ` Christopher Friesen
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=3C0B43DC.7A8F582A@zip.com.au \
--to=akpm@zip.com.au \
--cc=j-nomura@ce.jp.nec.com \
--cc=linux-kernel@vger.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