machine check exception

Anton Blanchard anton at samba.org
Wed Feb 12 10:26:06 EST 2003


Hi,

> Thanks...these things are next to impossible to test.  Nice you have a
> test case (I think :)).

Not so nice from my perspective :)

> BTW, I pulled your bk today (2.5.60) and noticed that I get a
> decrementer before time_init.  Some init order change?  I haven't had
> time to look just yet.  Easy enough to hack around at the moment....

Yep, known bug. Hopefully Linus merged the fix.

--

Date: Tue, 11 Feb 2003 01:19:05 -0800
From: Andrew Morton <akpm at digeo.com>
To: Linus Torvalds <torvalds at transmeta.com>,
	Anton Blanchard <anton at samba.org>
Subject: sched_init enables interrupts too early

wake_up_forked_process() unconditionally enables interrupts.  It is called
from sched_init().  Enabling interrupts that early makes Anton's ppc64
machine lock up.

I tried going back to just wake_up_process() but the kernel didn't start.



diff -puN kernel/sched.c~sched_init-fix kernel/sched.c
--- 25/kernel/sched.c~sched_init-fix	2003-02-11 01:09:51.000000000 -0800
+++ 25-akpm/kernel/sched.c	2003-02-11 01:12:44.000000000 -0800
@@ -519,7 +519,8 @@ int wake_up_state(task_t *p, unsigned in
  */
 void wake_up_forked_process(task_t * p)
 {
-	runqueue_t *rq = this_rq_lock();
+	unsigned long flags;
+	runqueue_t *rq = task_rq_lock(current, &flags);

 	p->state = TASK_RUNNING;
 	if (!rt_task(p)) {
@@ -535,7 +536,7 @@ void wake_up_forked_process(task_t * p)
 	set_task_cpu(p, smp_processor_id());
 	activate_task(p, rq);

-	rq_unlock(rq);
+	task_rq_unlock(rq, &flags);
 }

 /*


** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc64-dev mailing list