From: Patrick Finnegan <pat@computer-refuge.org>
To: linux-kernel@vger.kernel.org, sparclinux@vger.kernel.org
Cc: brylow@cs.purdue.edu
Subject: [PATCH] Re: BUG: 2.6.6-rc3 on SMP/SPARC64 (Sun E3000)?
Date: Tue, 11 May 2004 19:57:44 -0500 [thread overview]
Message-ID: <200405111957.44756.pat@computer-refuge.org> (raw)
In-Reply-To: <200405071049.14725.pat@computer-refuge.org>
On Friday 07 May 2004 10:49, you wrote:
> I've been trying to get 2.6.6-rc3 to work in SMP mode on my E3000
> without much success yet. It boots fine with a uniprocessor kernel,
> but trying to enable SMP gives me this as the last few lines of the
> kernel messages (booted with -p early printk option):
It appears that the problem is that on Sparc64, smp_processor_id() gives
the hardware ID, not a logical number (ie 0..n for the first n+1
processors). I had NR_CPUS set to 8, and the first (boot) CPU was
numbered by the hardware to be CPU 10.
The patch catches if the boot CPU is greater than NR_CPUS, since that is
possible with Sparc64. I see that the condition is explicitly checked
for in smp_tick_init(), but that must not get called soon enough to
catch the problem (which manifested in sched_init()s call to
wake_up_forked_process() ), so I moved it to smp_prepare_boot_cpu().
Comments?
Pat
--
Purdue University ITAP/RCS --- http://www.itap.purdue.edu/rcs/
The Computer Refuge --- http://computer-refuge.org
--- linux-2.6.6.orig/arch/sparc64/kernel/smp.c 2004-05-09 21:31:55.000000000 -0500
+++ linux-2.6.6/arch/sparc64/kernel/smp.c 2004-05-11 19:46:15.692007000 -0500
@@ -1108,11 +1108,6 @@
boot_cpu_id = hard_smp_processor_id();
current_tick_offset = timer_tick_offset;
- if (boot_cpu_id >= NR_CPUS) {
- prom_printf("Serious problem, boot cpu id >= NR_CPUS\n");
- prom_halt();
- }
-
cpu_set(boot_cpu_id, cpu_online_map);
prof_counter(boot_cpu_id) = prof_multiplier(boot_cpu_id) = 1;
}
@@ -1254,6 +1249,11 @@
void __devinit smp_prepare_boot_cpu(void)
{
+ if (hard_smp_processor_id() >= NR_CPUS) {
+ prom_printf("Serious problem, boot cpu id >= NR_CPUS\n");
+ prom_halt();
+ }
+
current_thread_info()->cpu = hard_smp_processor_id();
cpu_set(smp_processor_id(), cpu_online_map);
cpu_set(smp_processor_id(), phys_cpu_present_map);
next prev parent reply other threads:[~2004-05-12 1:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-07 15:49 BUG: 2.6.6-rc3 on SMP/SPARC64 (Sun E3000)? & MD Patrick Finnegan
2004-05-08 22:35 ` BUG: 2.6.6-rc3 on SMP/SPARC64 (Sun E3000) & MD / ksymoops output Patrick Finnegan
2004-05-12 0:57 ` Patrick Finnegan [this message]
2004-05-20 4:08 ` [PATCH] Re: BUG: 2.6.6-rc3 on SMP/SPARC64 (Sun E3000)? David S. Miller
2004-05-20 9:30 ` Paul Jackson
2004-05-20 15:44 ` Pete Zaitcev
2004-05-20 17:00 ` Paul Jackson
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=200405111957.44756.pat@computer-refuge.org \
--to=pat@computer-refuge.org \
--cc=brylow@cs.purdue.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=sparclinux@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