patch-2.4.3 linux/arch/ppc/kernel/time.c

Next file: linux/arch/ppc/kernel/traps.c
Previous file: linux/arch/ppc/kernel/syscalls.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.2/linux/arch/ppc/kernel/time.c linux/arch/ppc/kernel/time.c
@@ -67,6 +67,8 @@
 
 #include <asm/time.h>
 
+unsigned long disarm_decr[NR_CPUS];
+
 #ifdef CONFIG_SMP
 extern void smp_local_timer_interrupt(struct pt_regs *);
 extern int smp_tb_synchronized;
@@ -147,7 +149,6 @@
 	
 	if (!user_mode(regs))
 		ppc_do_profile(instruction_pointer(regs));
-
 	do { 
 		jiffy_stamp += tb_ticks_per_jiffy;
 	  	if (smp_processor_id()) continue;
@@ -184,7 +185,8 @@
 		}
 		write_unlock(&xtime_lock);
 	} while((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) < 0);
-	set_dec(next_dec);
+	if ( !disarm_decr[smp_processor_id()] )
+		set_dec(next_dec);
 	last_jiffy_stamp(cpu) = jiffy_stamp;
 
 #ifdef CONFIG_SMP

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)