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