[BUG] SMP, IRQ, USB, ksyms wiredness
Philipp Matthias Hahn
pmhahn en titan.lahn.de
Lun Ene 31 21:20:16 CST 2000
On Sat, 29 Jan 2000, Philipp Matthias Hahn wrote:
> Hello Kernel folks!
> Then I tried loading usb-uhci.o which slowed down my machine. A look at
> /proc/interrupts showed the problem:
> 11: 0 IO-APIC-edge usb-uhci
> 19: 3557778 IO-APIC-level eth0
I took a look at the source and found some answers:
During boot arch/i386/kernel/pci-pc.c:1134 calls
IO_APIC_get_PCI_irq_vector(dev->bus->number, PCI_SLOT(dev->devfn), pin);
pin=4 is read from pic_config_space. lspci confirms this.
$ /sbin/lspci -s 00:07.2 -vv
00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) (prog-if 00 [UHCI])
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 set
Interrupt: pin D routed to IRQ 11
Region 4: I/O ports at d000
In arch/i386/kernel/io_apic.c:240 this is checked against
(mp_irqs[i].mpc_srcbusirq & 3), which is 0. So PIC->APIC translation fails
an IRQ11 is assigned to usb.
I removed this comparison and usb works fine now.
Is this a bug with APIC, PCI or is my BIOS broken?
My board is a gigabyte 6BXD with 2.4ir with IDE disabled.
When I use MT1.1 the interrupts are mapped as shown during boot:
03 00 0f 00 02 0f 02 10 ISA 15 -> APIC 2 INT 10h
When I use MT1.4 APIC mapping fails for:
03 00 0f 00 00 1c 02 13 PCI 7.0 -> APIC 2 INT 13h
By the way: drivers/usb/usb-uhci.c:2309 calls pci_enable_device()
This call can fail (mentioned in drivers/pci/pci.c:186) but is not
checked!
> Those 35k NMIs are also strange.
Ok, i didn't disable the nmi watchdog.
Philipp
--
/ / (_)__ __ ____ __ Philipp Hahn
/ /__/ / _ \/ // /\ \/ /
/____/_/_//_/\_,_/ /_/\_\ pmhahn en titan.lahn.de
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo en vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
Más información sobre la lista de distribución Ayuda