Re: [PATCH] 2.6.25+: Fix cpu hotplug in softirq code

Olof Johansson
2008-04-29T23:27:21Z

On Thu, Apr 24, 2008 at 09:13:11PM +0200, Christian Borntraeger wrote:
> Hello Olof,
>
> currently cpu hotplug (unplug) seems broken on s390 and likely others. On cpu
> unplug the system starts to behave very strange and hangs.
>
> I bisected the problem to the following commit:
>
> -----
> commit 48f20a9a9488c432fc86df1ff4b7f4fa895d1183
> Author: Olof Johansson <olof@lixom.net>
> Date: Tue Mar 4 15:23:25 2008 -0800
> tasklets: execute tasklets in the same order they were queued
> -----
>
> Reverting this patch seems to fix the problem. I looked into takeover_tasklet
> and it seems that there is a way to corrupt the tail pointer of the current
> cpu. If the tasklet list of the frozen cpu is empty, the tail pointer of the
> current cpu points to the address of the head pointer of the stopped cpu and
> not to the next pointer of a tasklet_struct.
>
> This patch avoids the list splice of the list is empty and cpu hotplug seems
> to work as the tail pointer is not corrupted.
> Olof, can you look into that patch and ACK/NACK it so Andrew can push this to
> Linus, if appropriate?
> Please note that some lines are longer than 80 chars, but line-wrapping looked
> worse that this version.
>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

I don't have a hotplug-capable system to test on, but the patch looks
good to me. Good catch.

Acked-by: Olof Johansson <olof@lixom.net>

-Olof