On Wed, Dec 08, 2004 at 10:43:26AM -0800, Ashok Raj wrote: > On Wed, Dec 08, 2004 at 11:52:53AM -0600, Joel Schopp wrote: > > This is the test i use for regression testing on IPF. I havent read > all the test senarious, but its important to test if irq will migrate to this new > cpu, and also when the cpu will go away, we can handle without loss of work > transparently. > > Attached is a simple shell script. The only one that is hard coded is the irq numbers > which can be obtained from /proc/interrupts as well. > > SInce IPF we dont support boot cpu removal, (due to restriction with CPEI, btw > this will go away when platforms support ACPI 3.0) the script doesnt really try > removing cpu0. > > The script is a little flaky, i.e we dont check if current state is offline/online > etc, it might be better to build those in if we need some robustness. > > In addition, i leave some time after an online, before i offline (in parallel > there are ltptest and some make -j running for load) so we let some work be handled > on this cpu as well before offlining. > > > hope this helps. > > Cheers, > ashok > Hi Ashok, Is doing something horrendous like this ok? Mark --- do_cpu.orig 2004-12-08 13:43:37.000000000 -0800 +++ do_cpu 2004-12-08 14:58:14.000000000 -0800 @@ -5,6 +5,8 @@ TM_ONLINE=10 # Time delay after an online of cpu TM_OFFLINE=10 # Time delay after offline of cpu TM_DLY=30 # Time delay before start of entire new cycle. +CPUS=`grep processor /proc/cpuinfo | grep -v " 0$" | awk '{print $3}' | xargs` +IRQS=`grep -e [[:digit:]+]: /proc/interrupts | awk '{print $1}' | sed -e 's/://' | xargs` do_clean() { @@ -25,7 +27,7 @@ migrate_irq() { MASK=$((1<<$1)) - for irq in 45 48 49 + for irq in $IRQS do echo $MASK > /proc/irq/$irq/smp_affinity done @@ -53,13 +55,13 @@ do CNT=$(($CNT+1)) echo "Loop Count $CNT" - for cpu in 1 2 3 + for cpu in $CPUS do do_offline $cpu sleep $TM_OFFLINE done - for cpu in 1 2 3 + for cpu in $CPUS do do_online $cpu sleep $TM_ONLINE