Clock inaccuracy seen on NVIDIA nForce2 systems

From: Andy Currid
Date: Wed Oct 13 2004 - 15:33:19 EST




Various users on this and other Linux forums have reported inaccuracy
in the Linux system clock when running on NVIDIA nForce2 hardware. This
inaccuracy is often characterized as "clock drift" or "noisiness", such
that the clock gains as much as twenty minutes per week. The problem is
evident when running in IOAPIC mode, with the programmable interval
timer
(PIT) interrupt routed through the IOAPIC. The problem is not evident
when the PIT interrupt is routed through the legacy PIC hardware.

A possible cause of this behavior is a clock synchronization issue that
can arise on some nForce2 systems when interrupts are routed through the
IOAPIC, and Spread Spectrum (SS) clocking is enabled. Under certain
conditions, this can cause the IOAPIC to issue multiple interrupts to
the CPU when it should have issued only one.

If you are experiencing clock inaccuracy on nForce2 hardware, take the
following steps to determine if this issue may be the cause:

1. Determine if the hardware you are using may be affected by this
problem. The problem is limited to MCP2 and MCP2-T hardware; it does
not affect MCP2-S or any nForce3 hardware. MCP2 and MCP2-T hardware
may be identified by the PCI device ID of the ISA bridge, which is
0x0060 for these devices.

To read the bridge device ID, use 'lspci -n -s 0:1.0' . The output
should be of the form '0000:00:01.0 Class 0601: 10de:0060 (rev a3)'.
The device ID of the bridge in this example is "0060" following the
NVIDIA PCI vendor ID "10de".

If your ISA bridge device ID is not 0x0060, then this issue is not
the cause of any clock inaccuracy you are experiencing.

2. Otherwise, examine the output from 'cat /proc/interrupts'. If IRQ0
(the timer) is shown to be in PIC mode rather than IOAPIC mode, then
this issue is not the cause of any clock inaccuracy you are
experiencing.

3. Otherwise, reboot your system and enter BIOS SETUP. Check if your
BIOS has a Front Side Bus (FSB) Spread Spectrum (SS) clocking option.
On many systems, this option is located in the "Advanced Chipset
Features" menu. If the option is present and enabled, disable it.
Boot Linux and observe the system clock over several hours to verify
if this has improved its accuracy.

Regards

Andy
--
Andy Currid, NVIDIA Corporation
acurrid@xxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/