[lug] Clock drifting - SOLVED

Zan Lynx zlynx at acm.org
Wed Mar 29 10:01:16 MST 2006


On Wed, 2006-03-29 at 08:19 -0700, John Hernandez wrote:
> I solved the problem by booting with the kernel option 'noapic'.  Thanks
> to the previous responders for helping get my investigation on track.
> 
> I'm curious:  What is apic, and what's the tradoff of running 'noapic'?
>  My processor is an Athlon XP 2700+, kernel 2.6.12, if it matters.

APICs are really great.  They're a programmable interrupt controller.
Originally only SMP systems had them.  They're a requirement for SMP,
because how else would you hook up and distribute interrupts from
hardware to multiple CPUs?

But now, most single CPU systems have them.  The two main benefits I am
aware of are enhanced interrupt priority handling and increasing the
number of interrupts to 255 instead of 16.

The reason that Linux needs to include "noapic" as a kernel option is
buggy BIOS.  Seems like many motherboard designers just ship it and fix
any problems in their Windows drivers later.  There are many BIOS/ACPI
data tables that need to be correct for proper interrupt routing and its
apparently just easier to override the BIOS tables with tables from the
drivers than it is to flash upgrade the BIOS.

Sometimes its a hardware problem, like in the nVidia nForce boards, they
apparently have some kind of badly connected IRQ timer line that has to
be ignored.  If you have one of those boards there's probably a less
drastic kernel option than noapic.

Maybe this one? 
        acpi_skip_timer_override [HW,ACPI]
        Recognize and ignore IRQ0/pin2 Interrupt Override.
        For broken nForce2 BIOS resulting in XT-PIC timer.
        
Or these:
        enable_timer_pin_1 [i386,x86-64]
        Enable PIN 1 of APIC timer
        Can be useful to work around chipset bugs
        (in particular on some ATI chipsets).
        The kernel tries to set a reasonable default.
        
        disable_timer_pin_1 [i386,x86-64]
        Disable PIN 1 of APIC timer
        Can be useful to work around chipset bugs.

    disable_8254_timer
    enable_8254_timer
    [IA32/X86_64] Disable/Enable interrupt 0 timer routing
    over the 8254 in addition to over the IO-APIC. The
    kernel tries to set a sensible default.

        
-- 
Zan Lynx <zlynx at acm.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 191 bytes
Desc: This is a digitally signed message part
URL: <http://lists.lug.boulder.co.us/pipermail/lug/attachments/20060329/b8fa5a7f/attachment.pgp>


More information about the LUG mailing list