From: "J.E.J. Bottomley" <James.Bottomley@steeleye.com>
To: "Martin J. Bligh" <Martin.Bligh@us.ibm.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
jejb@SteelEye.com, Andrew Morton <akpm@zip.com.au>,
dipankar@in.ibm.com
Subject: Re: Strange panic as soon as timer interrupts are enabled (recent 2.5)
Date: Wed, 06 Nov 2002 14:32:20 -0500 [thread overview]
Message-ID: <200211061932.gA6JWKa03782@localhost.localdomain> (raw)
In-Reply-To: Message from "Martin J. Bligh" <Martin.Bligh@us.ibm.com> of "Wed, 06 Nov 2002 12:11:09 PST." <116630000.1036613469@flay>
Martin.Bligh@us.ibm.com said:
> Conversations on IRC revealed that jejb has hit the same thing on
> voyager ... as I understood him, he felt the cause was the CPU was
> taking an interrupt before cpu_up was called, and the interrupt was
> going back through a non existent tasklet structure (tasklets now
> have per_cpu areas which are allocated as the cpu comes up) I'll let
> him discuss what he did to fix that, but the ensuing discussion made
> me think that taking this out to a wider audience for an appropriate
> long-term solution would be prudent.
Yes, this caused for me, a completely reliable boot time panic with 2.5.46.
The problem is that per_cpu areas aren't initiallised until cpu_up is called,
so a cpu cannot now take an interrupt before cpu_up is called. My hack was
this:
# --------------------------------------------
# 02/11/04 jejb@mulgrave.(none) 1.819
# [VOYAGER] CPU bring up changes for new per_cpu softirqs
# --------------------------------------------
#
diff -Nru a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyag
er_smp.c
--- a/arch/i386/mach-voyager/voyager_smp.c Wed Nov 6 14:27:11 2002
+++ b/arch/i386/mach-voyager/voyager_smp.c Wed Nov 6 14:27:11 2002
@@ -507,6 +508,11 @@
/* if we're a quad, we may need to bootstrap other CPUs */
do_quad_bootstrap();
+ /* FIXME: this is rather a poor hack to prevent the CPU
+ * activating softirqs while it's supposed to be waiting for
+ * permission to proceed. Without this, the new per CPU stuff
+ * in the softirqs will fail */
+ local_irq_disable();
set_bit(cpuid, &cpu_callin_map);
/* signal that we're done */
@@ -514,6 +520,7 @@
while (!test_bit(cpuid, &smp_commenced_mask))
rep_nop();
+ local_irq_enable();
local_flush_tlb();
All it's really doing is disabling the interrupts before the booting secondary
cpu waits on the smp_commenced_mask.
It's a hack because on voyager (and APIC) any interrupt will remain
permanently pending at the CPU. If the interrupt were vital to the boot
sequence, we could be in trouble. The correct way to fix this is probably to
raise the CPUs external interrupt mask so any pending interrupt is pushed off
onto the boot CPU.
James
next prev parent reply other threads:[~2002-11-06 19:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Martin.Bligh@us.ibm.com>
2002-11-06 20:11 ` Martin J. Bligh
2002-11-06 19:32 ` J.E.J. Bottomley [this message]
2002-11-06 19:46 ` Andrew Morton
2002-11-06 20:45 ` Martin J. Bligh
2002-11-06 20:04 ` Andrew Morton
2002-11-06 22:48 ` Martin J. Bligh
2002-11-06 22:32 ` Andrew Morton
2002-11-07 0:27 ` Martin J. Bligh
2002-11-07 15:18 ` J.E.J. Bottomley
2002-11-07 15:23 ` Martin J. Bligh
2002-11-07 18:41 ` Dipankar Sarma
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=200211061932.gA6JWKa03782@localhost.localdomain \
--to=james.bottomley@steeleye.com \
--cc=Martin.Bligh@us.ibm.com \
--cc=akpm@zip.com.au \
--cc=dipankar@in.ibm.com \
--cc=jejb@SteelEye.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
all inboxes | Powered by JetHome®