Linux v2.6.18-rc5

Nathan Lynch ntl at pobox.com
Tue Aug 29 23:06:29 EST 2006


Hi Olaf-

Olaf Hering wrote:
> On Sun, Aug 27, Linus Torvalds wrote:
> 
> > Pls test it out, and please remind all the appropriate people about any 
> > regressions you find (including any found earlier if they haven't been 
> > addressed yet).
> 
> > Nathan Lynch:
> >       [POWERPC] Fix gettimeofday inaccuracies
> 
> Tested on B&W G3, iBook1 and a G4/466.
> This patch causes deadlocks on ppc32, but not on ppc64. Have to verify
> it on a vanilla kernel, but I'm sure there are no funky patches in
> openSuSE.
> 
> https://bugzilla.novell.com/show_bug.cgi?id=202146

Sorry about that, does this (a partial revert of the change) fix it
for you?


diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 18e59e4..fe9b1d9 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -655,7 +655,6 @@ void timer_interrupt(struct pt_regs * re
 	int next_dec;
 	int cpu = smp_processor_id();
 	unsigned long ticks;
-	u64 tb_next_jiffy;
 
 #ifdef CONFIG_PPC32
 	if (atomic_read(&ppc_n_lost_interrupts) != 0)
@@ -697,14 +696,11 @@ void timer_interrupt(struct pt_regs * re
 			continue;
 
 		write_seqlock(&xtime_lock);
-		tb_next_jiffy = tb_last_jiffy + tb_ticks_per_jiffy;
-		if (per_cpu(last_jiffy, cpu) >= tb_next_jiffy) {
-			tb_last_jiffy = tb_next_jiffy;
-			tb_last_stamp = per_cpu(last_jiffy, cpu);
-			do_timer(regs);
-			timer_recalc_offset(tb_last_jiffy);
-			timer_check_rtc();
-		}
+		tb_last_jiffy += tb_ticks_per_jiffy;
+		tb_last_stamp = per_cpu(last_jiffy, cpu);
+		do_timer(regs);
+		timer_recalc_offset(tb_last_jiffy);
+		timer_check_rtc();
 		write_sequnlock(&xtime_lock);
 	}
 	



More information about the Linuxppc-dev mailing list