I've got a problem with a Gigabyte 686DL2 motherboard. I've tried 
kernels 2.1.121 and kernel 2.1.126.

When I run a SMP kernel the IRQ for my SCSI card (A Tekram DC390) 
is incorrectly mapped to 16 (0x10) by IO_APIC_get_PCI_irq_vector().
Of cause the SCSI doesn't work from then on.... On a uniprocessor 
kernel the kernel uses IRQ 9 and the hardware works fine. 

The same thing also happens a network card on IRQ 11. It gets mapped to 16
too.

Other than those two cards the system runs fine.

Digging a little deeper, both IO_APIC_get_PCI_irq_vector(bus = 0, 
slot = 8, pci_pin = 0) and IO_APIC_get_PCI_irq_vector(bus = 0, 
slot = 10, pci_pin = 0) return 0x10. Does this make sense?

As I was able to get the card working by commenting out "dev->irq = irq"
from IO_APIC_get_PCI_irq_vector in pcibios_fixup_devices() in
arch/i386/kernel/bios32.c, I don't beleive it to be a hardware problem.

I've dumped out mp_irqs[] and there are mappings in there for 
IRQ 9 -> 9 and IRQ 11 -> 11, but the are skipped over by 
IO_APIC_get_PCI_irq_vector.

I've come up with 3 possible conclusions:

1 - My bios is buggy - the values in the mpc_config_intsrc structures
    are somehow incorrect.

2 - The values passed to IO_APIC_get_PCI_irq_vector() are not what
    they should be. (being called with slot=10 appears a little 
    strange to me - but what would I know?).

3 - (The least likely) IO_APIC_get_PCI_irq_vector() isn't doing 
    what it should.

Can anybody give me any assistance? and is any documentation for the 
definition of values stored in mpc_config_intsrc available on the web?

Cheers

Mike





------------------------------------------------------------
            The world really isn't any worse. 
    It's just that the news coverage is so much better.
------------------------------------------------------------
Mike Field                                 ph  64 4 471-2112
Technical Support Consultant               fax 64 4 471-1300
CPS Systems                              

Reply via email to