Re: [PATCH/RFC] timer: fix deadlock on cpu hotplug

From: Heiko Carstens
Date: Mon Oct 11 2010 - 09:52:05 EST


On Mon, Oct 11, 2010 at 02:31:03PM +0200, Peter Zijlstra wrote:
> On Thu, 2010-09-23 at 15:31 +0200, Heiko Carstens wrote:
> > On Wed, Sep 22, 2010 at 04:29:36PM +0200, Peter Zijlstra wrote:
> > > On Wed, 2010-09-22 at 11:22 +0200, Peter Zijlstra wrote:
> > >
> > > > The idea was to move it to a class of its own above SCHED_FIFO.
> > > >
> > > > I'll try and get something done, but I'm heading out to LinuxCon.JP
> > > > soon.
> > >
> > > Something like the below, it seems to boot, build a kernel and hotplug.
> >
> > Thanks for the fast patch. Yes, it works. Sort of:
> >
> > ------------[ cut here ]------------
> > WARNING: at kernel/kthread.c:182
> > [...]
> > ..and crashes afterwards ;)
> >
> > Btw. I also tried to boot 2.6.35.5 with your patch and it hangs just at
> > the beginning. I also had to apply 5e3d20a68f63fc5a310687d81956c3b96e488b84
> > "init: Remove the BKL from startup code" to make the machine boot again,
> > which was a bit surprising.
>
> Does something like the below (on top of the previous patch) work?

Yes, it works. Just survived a git clone a complete kernel build while cpu
hotplug stress was running. Thanks!

Tested-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx>

> Can I have your hotplug script (cpukill2.sh?) to test, a simply while(1)
> loop offlining and onlining cpu1 doesn't seem to impress my machine
> (with the below folded in)..

That's one of the scripts our testers are using:

#! /bin/bash
RANDOM=`date '+%s'`
let "NUMBER = $RANDOM % 2 + 0"
CPUS=`ls /sys/devices/system/cpu/ | grep cpu`
count=`echo $CPUS | wc -w`
echo You have $count no. of CPUs
echo You have the following CPUs: $CPUS
while [ 1 ] ; do
for ((i=0 ; i<=$count ; i++)) ; do
rnd=$[($RANDOM % $count) ] # RND between 0..max_no_of_cpu
let "NUMBER = $RANDOM % 2 + 0"
echo "echo $NUMBER > /sys/devices/system/cpu/cpu$rnd/online"
echo $NUMBER > /sys/devices/system/cpu/cpu$rnd/online
done
done
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/