clock runs at double speed on x86_64 system w/ATI RS200 chipset

From: Christopher Allen Wing
Date: Fri Apr 01 2005 - 18:25:45 EST

I'm testing a system based on a ATI Radeon Xpress 200 motherboard.
(host bridge PCI device 1002:5950)

Something is causing the timer interrupt to be received twice as often as
desired; this makes the clock run at double normal speed.

I first noticed the problem when testing Red Hat 2.4 and 2.6 kernels;
however, I just reproduced it on the latest release (

While messing around with the 2.4 kernel, I managed to make the problem go
away by getting the timer interrupt to be delivered via the XT-PIC instead
of the APIC. I don't know enough about how the interrupt routing/ACPI
works to figure out what's wrong.

At first I thought the problem seemed similar to the one discussed in June
2004 on lkml under the subject "linux-2.6.7-bk2 runs faster than
linux-2.6.7 ;)"; see:

However the problem still exists in, as well as older Red Hat 2.4
and 2.6 kernels, so I'm guessing that it is an unrelated problem.

In short the timer interrupt gets received twice as many times as it

$ cat /proc/interrupts; sleep 10; cat /proc/interrupts
0: 2812271 IO-APIC-edge timer
LOC: 1405962

(only 5 seconds elapse; not 10)

0: 2822285 IO-APIC-edge timer
LOC: 1410969

Note that this corresponds to 1000 local APIC timer ints/sec, but 2000
'timer' ints/second.

Here's the dmesg log from booting:

I also see messages from the kernel like:

APIC error on CPU0: 00(40)
APIC error on CPU0: 40(40)

so I'd guess that something is wrong in the way that the machine is set
up. Perhaps the BIOS or ACPI tables are just defective.

I'd appreciate it if anyone familiar with how ACPI and the interrupt
routing could suggest a way to figure out what's going on.


Chris Wing
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at