2.5.60 - Strange APIC errors

From: Ingo Oeser (ingo.oeser@informatik.tu-chemnitz.de)
Date: Thu Feb 13 2003 - 11:33:15 EST


Hi there,
hi Dave,

I'm running 2.5.60 and get a strange APIC error (dmesg appended).
These errors don't stop, so I tried to limit them with that
simple code below in arch/i386/kernel/apic.c to get the first
offender and to get sth. else as printk() done. It seems, that
somehow value 0x40 gets written there, which is not documented.
What effects that has for the machine - I don't know, so I didn't
test further.

I always ran 2.4.x with the "noapic" option, which is not
possible for 2.5.60.

Whats going on here?

Regards

Ingo Oeser

asmlinkage void smp_error_interrupt(void)
{
        unsigned long v, v1, t_cpu = 0;
        static unsigned long ov = ~0, ov1 = ~0;
        static unsigned int on_cpu = 0;

        irq_enter();
        /* First tickle the hardware, only then report what went on. -- REW */
        v = apic_read(APIC_ESR);
        apic_write(APIC_ESR, 0);
        v1 = apic_read(APIC_ESR);
        ack_APIC_irq();
        atomic_inc(&irq_err_count);

        /* Here is what the APIC error bits mean:
           0: Send CS error
           1: Receive CS error
           2: Send accept error
           3: Receive accept error
           4: Reserved
           5: Send illegal vector
           6: Received illegal vector
           7: Illegal register address
        */
        /* Print only, if the error changes */
        
        
        /* new value? */
        if (unlikely(v != ov) && unlikely(v1 != ov1))
                goto print_error;
        else t_cpu = 1 << smp_processor_id();

        /* No seen? */
        if (on_cpu & (~t_cpu)) goto print_error;

out:
        irq_exit();
        return;

print_error:
        printk (KERN_INFO "APIC error on CPU%d: %02lx(%02lx)\n",
                smp_processor_id(), v , v1);

        ov1=v1; ov=v; on_cpu|=t_cpu;
        mb();

        goto out;
}

-- 
Science is what we can tell a computer. Art is everything else. --- D.E.Knuth



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



This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:47 EST