2003-05-27 13:41:42

by T. Weyergraf

[permalink] [raw]
Subject: 2.5.70 dies on alpha-SMP

Hi all,

the stock 2.5.70 dies early upon boot on my alpha UP2000
( dual EV67, DP264 vector ). It happens, after the kernel
tries to start the second CPU. The error happens regardless
of the compilers i tried ( gcc 3.2.3 and 2.95.4 ).

Unfortunately, I do not have a log handy. If that is crucial,
I can rewire my serial console and capture one.

Any Ideas ?


--
Thomas Weyergraf [email protected]
My Favorite IA64 Opcode-guess ( see arch/ia64/lib/memset.S )
"br.ret.spnt.few" - got back from getting beer, did not spend a lot.



2003-05-27 13:53:09

by Ivan Kokshaysky

[permalink] [raw]
Subject: Re: 2.5.70 dies on alpha-SMP

On Tue, May 27, 2003 at 03:12:58PM +0200, T. Weyergraf wrote:
> the stock 2.5.70 dies early upon boot on my alpha UP2000
> ( dual EV67, DP264 vector ). It happens, after the kernel
> tries to start the second CPU. The error happens regardless
> of the compilers i tried ( gcc 3.2.3 and 2.95.4 ).

Does this help?

Ivan.

--- 2.5/arch/alpha/kernel/smp.c Wed May 21 15:20:27 2003
+++ linux/arch/alpha/kernel/smp.c Wed May 21 15:27:23 2003
@@ -417,12 +417,7 @@ fork_by_hand(void)
/* Don't care about the contents of regs since we'll never
reschedule the forked task. */
struct pt_regs regs;
- int pid;
- pid = do_fork(CLONE_VM|CLONE_IDLETASK, 0, &regs, 0, NULL, NULL);
- if (pid < 0)
- return NULL;
-
- return find_task_by_pid (pid);
+ return copy_process(CLONE_VM|CLONE_IDLETASK, 0, &regs, 0, NULL, NULL);
}

/*
@@ -441,8 +436,10 @@ smp_boot_one_cpu(int cpuid)
wish. We can't use kernel_thread since we must avoid
rescheduling the child. */
idle = fork_by_hand();
- if (!idle)
+ if (IS_ERR(idle))
panic("failed fork for CPU %d", cpuid);
+
+ wake_up_forked_process(idle);

init_idle(idle, cpuid);
unhash_process(idle);

2003-05-27 14:35:02

by T. Weyergraf

[permalink] [raw]
Subject: Re: 2.5.70 dies on alpha-SMP



> Does this help?

[...]

yup, works. Thanks a lot.

> Ivan.

Regards,
Thomas Weyergraf


--
Thomas Weyergraf [email protected]
My Favorite IA64 Opcode-guess ( see arch/ia64/lib/memset.S )
"br.ret.spnt.few" - got back from getting beer, did not spend a lot.