Bug 4092 - Double timer interrupts -- IOAPIC mode -- ATI RX480
Summary: Double timer interrupts -- IOAPIC mode -- ATI RX480
Status: REJECTED DUPLICATE of bug 3927
Alias: None
Product: ACPI
Classification: Unclassified
Component: Config-Interrupts (show other bugs)
Hardware: i386 Linux
: P2 normal
Assignee: Shaohua
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-01-24 05:50 UTC by Bertro Simul
Modified: 2005-08-16 15:04 UTC (History)
4 users (show)

See Also:
Kernel Version: 2.6.10
Tree: Mainline
Regression: ---


Attachments
dmesg (14.40 KB, text/plain)
2005-01-24 05:51 UTC, Bertro Simul
Details
dmidecode (14.37 KB, text/plain)
2005-01-24 05:59 UTC, Bertro Simul
Details
acpidmp (105.98 KB, text/plain)
2005-01-24 06:01 UTC, Bertro Simul
Details

Description Bertro Simul 2005-01-24 05:50:03 UTC
Distribution: Gentoo

Hardware Environment: AMD64 3500+ (UP) running in 32-bit mode, chipset: ATI RX480

Problem Description:
In the default configuration, i.e., without any kernel parameters, Linux uses
ACPI to set up an APIC to do the interrupt routing. However, in this mode the
system clock (using either tsc or pmtmr) runs exactly twice as fast as it
should; this can be easily checked by comparing the system clock with the RTC.

Looking at /proc/interrupts I can see that there are still 1000 timer interrupts
per second, so it looks as if for each timer interrupt the system clock would be
 updated twice.

This problem does not occur with 2.6.9.

The problem does not occur with kernel parameters acpi=noirq (but then no APIC
is used).

Steps to reproduce: start the computer ;-)
Comment 1 Bertro Simul 2005-01-24 05:51:41 UTC
Created attachment 4446 [details]
dmesg
Comment 2 Bertro Simul 2005-01-24 05:59:15 UTC
Created attachment 4447 [details]
dmidecode
Comment 3 Bertro Simul 2005-01-24 06:01:03 UTC
Created attachment 4448 [details]
acpidmp
Comment 4 Shaohua 2005-01-24 16:46:44 UTC
Quite interesting, could you please attach the /proc/interrupts output?
Comment 5 Bertro Simul 2005-01-24 23:04:25 UTC
Here you are:

           CPU0       
  0:     775827    IO-APIC-edge  timer
  1:       1769    IO-APIC-edge  i8042
  8:          2    IO-APIC-edge  rtc
 12:         67    IO-APIC-edge  i8042
 14:        631    IO-APIC-edge  ide2
 15:      46795    IO-APIC-edge  ide3
 17:          1   IO-APIC-level  ATI IXP
 21:         47   IO-APIC-level  acpi, HiSax
 23:        539   IO-APIC-level  ide0
NMI:          0 
LOC:     387896 
ERR:          1
MIS:          0

(ATI IXP above is the sound card, HiSax is an ISDN/BRI card)

PS: Thank you for your interest :)
Comment 6 Shaohua 2005-01-25 00:43:00 UTC
Ok, did you try unload acpi processor driver or load the driver with parameter 
nocst=1? 
Comment 7 Bertro Simul 2005-01-25 03:58:49 UTC
Is this a question or a suggestion? I did not since I have never heard of this
before. I can try processor.nocst although it seems I have to apply a patch for
this (http://sourceforge.net/mailarchive/forum.php?thread_id=6217873&forum_id=6102)?
Comment 8 Shaohua 2005-01-25 16:59:28 UTC
Ok, just remove the processor driver, let's look at the result.
Comment 9 Bertro Simul 2005-01-25 22:47:16 UTC
OK, so I started Linux with only a minimal set of modules loaded (serio, i8042,
rtc), and it didn
Comment 10 Bertro Simul 2005-02-06 23:28:49 UTC
FWIIW, this also happens with a 64 bit kernel (same sources).
Comment 11 Shaohua 2005-02-20 23:55:33 UTC
Hmm, could you please indicate how do you compare the time? It appears I can't 
reproduce the issue in all systems at hand.
Comment 12 Bertro Simul 2005-02-21 07:46:21 UTC
Well, I run 
Comment 13 Venkatesh Pallipadi 2005-02-21 10:16:58 UTC
  0:     775827    IO-APIC-edge  timer
LOC:     387896 

Something is wrong here. Typically you should see LOC (mostly local APIC timer 
interrupts) match with external timer interrupt. In this case, external timer 
interrupt seems to be delivering double the number of interrupts. 
Are you sure you are only seeing 1000 interrupts per sec on IRQ0?
Comment 14 Bertro Simul 2005-02-23 00:41:15 UTC
Apparently I was a bit imprecise with my statement about the 1000 interrupts per
sec. So here is the output of 
Comment 15 Shaohua 2005-02-23 00:47:20 UTC
Looks like the LAPIC timer is right. How about with boot option 'noapic'?
Comment 16 Bertro Simul 2005-02-23 03:12:07 UTC
With kernel parameters 
Comment 17 Bertro Simul 2005-03-06 11:10:09 UTC
Just a status update: happens also with 2.6.11 (vanilla).
Comment 18 Shaohua 2005-03-07 19:09:22 UTC
You possibly can narrow down this problem by revert some patches between 2.6.9 
and 2.6.10, since you said 2.6.9 is ok. This is very trival, but we have no 
idea otherwise, :(.
Comment 19 Christopher Allen Wing 2005-04-04 12:22:20 UTC
I have the same or similar problem, on similar hardware: Athlon64 on ATI chipset
(Radeon Xpress 200; host bridge PCI ID 1002:5950).


However, 2.6.9 is NOT good for me: the clock runs at double speed on 2.6.9,
2.6.11.6, as well as various Red Hat kernels (both 2.4 and 2.6).

My BIOS has an option to disable the APIC. When the APIC is disabled in the
BIOS, the clock works properly. When the APIC is enabled, I get double the
number of timer interrupts per second as should be.



Example:

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

(5 seconds elapse, not 10)

  0:    1194092    IO-APIC-edge  timer
LOC:     596903


which corresponds to 1000 local APIC timer interrupts/second, but 2000 'timer'
ints/second. (which causes the clock to run twice as fast)
Comment 20 Bertro Simul 2005-04-06 04:07:03 UTC
I have to apologize for causing confusion about the 2.6.9, but when I tried
recently 2.6.9 again to follow David
Comment 21 Len Brown 2005-08-16 15:04:49 UTC

*** This bug has been marked as a duplicate of 3927 ***

Note You need to log in before you can comment on or make changes to this bug.