Skip to contentSkip to conversation

fix timer interrupts getting lost

PATCH Applied Alex Williamson 4 participants 4 messages Apr 24, 2003 – May 9, 2003

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix timer interrupts getting lost

This patch fixes the issue of some CPUs not showing timer interrupts
going off. Seems during the process of sync'ing the itc, we jumped over the next timer value. This patch is against 2.5.67 + ia64. I haven't seen the problem on 2.4, but a quick looks seems like it's potentially an issue there too. Thanks,

Alex

--
Alex Williamson HP Linux and Open Source Lab

arch/ia64/kernel/smpboot.c +9 -0
@@ -311,6 +311,15 @@
 		 */
 		Dprintk("Going to syncup ITC with BP.\n");
 		ia64_sync_itc(0);
+
+		/*
+		 * Make sure we didn't sync the itc ahead of the next
+		 * timer interrupt, if so, just reset it.
+		 */
+		if (time_after(ia64_get_itc(),local_cpu_data->itm_next)) {
+			Dprintk("oops, jumped a timer.\n");
+			ia64_cpu_local_tick();
+		}
 	}
 
 	/*
#1 lore raw

Thanks Alex!

This patch fixed the problem I reported before. And I could observe some "oops jumped a timer." messages (with debug flag enabled).

Quoted 15 lines

This patch fixes the issue of some CPUs not showing timer interrupts
going off. Seems during the process of sync'ing the itc, we jumped over the next timer value. This patch is against 2.5.67 + ia64. I haven't seen the problem on 2.4, but a quick looks seems like it's potentially an issue there too. Thanks,

Quoted 9 lines

Hi,

Thanks to Alex's fixes for PCI segment support, we could boot 2.5.67 kernel on Tiger. But a strange thing is happening. Only cpu0 & 1 are getting timer interrupts and cpu 2 & 3 aren't. This problem is reproducible and we see this phenomenon after every boot. It seems that these cpus stop receiving timer interrupts after a very short while.
Has anyone seen this?

Thanks,
---
Takayoshi Kochi <[email protected]>

#2 lore raw
In reply to Alex Williamson
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Alex Williamson

Alex> This patch fixes the issue of some CPUs not showing timer Alex> interrupts going off. Seems during the process of sync'ing Alex> the itc, we jumped over the next timer value. This patch is Alex> against 2.5.67 + ia64. I haven't seen the problem on 2.4, but Alex> a quick looks seems like it's potentially an issue there too. Alex> Thanks,

Good catch. I applied this patch now.

The reason it started to show up on 2.5 now is mostly likely because I had to move the ITC syncing to a point where interrupts are enabled.

	--david
#3 lore raw
In reply to Alex Williamson
Quoted 6 lines · Alex Williamson

This patch fixes the issue of some CPUs not showing timer interrupts
going off. Seems during the process of sync'ing the itc, we jumped over the next timer value. This patch is against 2.5.67 + ia64. I haven't seen the problem on 2.4, but a quick looks seems like it's potentially an issue there too. Thanks,

I applied this for 2.4 also. Thanks!