Port-i386 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

NetBSD/current: viaide0:0:0: lost interrupt when using multifunction USB/Firewire controller



Hello,

I am a long-time FreeBSD user and I have recently installed NetBSD 4.0 (then upgraded to -current as of few days ago) on an old Pentium-166MMX PC w/256MB RAM based on FIC PA-2005 motherboard (Apollo VP VT82C580 chipset). Running the newest BIOS available.

The machine runs fine with just an ISA soundcard (there are 3 ISA slots) and a PCI video card (occupying 1 of 4 slots). video card IRQs are off.

Today I have installed a brand new 5xUSB, 3x Firewire controller and problems started to appear. I cannot use firewire with some USB devices connected. Without USB devices sometimes I am able to establish firewire connection via fwip0. The problem is there is something happening with internal IDE controller IRQs. When I plug firewire device (my FreeBSD laptop) usually this happens:

Apr 11 23:38:03 poniatowski /netbsd: fwohci0: BUS reset
Apr 11 23:38:03 poniatowski /netbsd: fwohci0: node_id=0xc800ffc1, gen=2, CYCLEMA
STER mode
Apr 11 23:38:03 poniatowski /netbsd: ieee1394if0: 2 nodes, maxhop <= 1, cable IR
M = 1 (me)
Apr 11 23:38:03 poniatowski /netbsd: ieee1394if0: bus manager 1 (me)
Apr 11 23:38:03 poniatowski /netbsd: Unknown service addr 0x0000:0x00000000 WREQ
Q(0) src=0x0 data=f064a032
Apr 11 23:38:03 poniatowski /netbsd: ieee1394if0: split transaction timeout: tl=
0x3 flag=0x04
Apr 11 23:38:03 poniatowski /netbsd: send: dst=0x00 tl=0x03 rt=0 tcode=0x4 pri=0
x0 src=0x000
Apr 11 23:38:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
[24;1H[K:[24;1H[24;1H[KApr 11 23:38:24 poniatowski /netbsd: type: ata tc_bcount: 3072 tc_skip: 0
Apr 11 23:38:34 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 8192 tc_skip: 0
Apr 11 23:39:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 2048 tc_skip: 0
Apr 11 23:39:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 1024 tc_skip: 0
Apr 11 23:39:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 8192 tc_skip: 0
Apr 11 23:39:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 1024 tc_skip: 0
Apr 11 23:39:24 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:24 poniatowski /netbsd: type: ata tc_bcount: 8192 tc_skip: 0
Apr 11 23:39:34 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:34 poniatowski /netbsd: type: ata tc_bcount: 5120 tc_skip: 0
Apr 11 23:39:44 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:44 poniatowski /netbsd: type: ata tc_bcount: 8192 tc_skip: 0
Apr 11 23:39:54 poniatowski /netbsd: viaide0:0:0: lost interrupt
Apr 11 23:39:54 poniatowski /netbsd: type: ata tc_bcount: 5120 tc_skip: 0

When I unplug the firewire cable sometimes machine is able to continue with disk operations and cleanly reboot, but in most cases I need to do a hard reset because the box is unresponsive when it needs to access the disk (i.e keyboard and tty work).

I presume poor PCI interrupt wiring is at fault:
PIR Entry 0:
        Bus: 0  Device: 8     <--- This is the usb/firewire controller
                INTA: link 0x01 bitmap 0x4eb8
                INTB: link 0x02 bitmap 0x4eb8
                INTC: link 0x03 bitmap 0x4eb8
                INTD: link 0x04 bitmap 0x4eb8
PIR Entry 1:
        Bus: 0  Device: 9     <--- empty
                INTA: link 0x02 bitmap 0x4eb8
                INTB: link 0x03 bitmap 0x4eb8
                INTC: link 0x04 bitmap 0x4eb8
                INTD: link 0x01 bitmap 0x4eb8
PIR Entry 2:
        Bus: 0  Device: 10    <--- empty
                INTA: link 0x03 bitmap 0x4eb8
                INTB: link 0x04 bitmap 0x4eb8
                INTC: link 0x01 bitmap 0x4eb8
                INTD: link 0x02 bitmap 0x4eb8
PIR Entry 3:
        Bus: 0  Device: 11    <--- video card
                INTA: link 0x04 bitmap 0x4eb8
                INTB: link 0x01 bitmap 0x4eb8
                INTC: link 0x02 bitmap 0x4eb8
                INTD: link 0x03 bitmap 0x4eb8
PIR Entry 4:
        Bus: 0  Device: 0
                INTA: link 0x00 bitmap 0x0000
                INTB: link 0x00 bitmap 0x0000
                INTC: link 0x00 bitmap 0x0000
                INTD: link 0x00 bitmap 0x0000

Internal IDE:

viaide0 at pci0 dev 7 function 1
viaide0: VIA Technologies VT82C586 (Apollo VP) ATA33 controller
viaide0: bus-master DMA support present
viaide0: primary channel configured to compatibility mode
viaide0: primary channel interrupting at irq 14
atabus0 at viaide0 channel 0
viaide0: secondary channel configured to compatibility mode
viaide0: secondary channel ignored (disabled)
uhci0 at pci0 dev 8 function 0: VIA Technologies VT83C572 USB Controller (rev. 0x62)
uhci0: interrupting at irq 11
usb0 at uhci0: USB revision 1.0
uhci1 at pci0 dev 8 function 1: VIA Technologies VT83C572 USB Controller (rev. 0x62)
uhci1: interrupting at irq 10
usb1 at uhci1: USB revision 1.0
ehci0 at pci0 dev 8 function 2: VIA Technologies VT8237 EHCI USB Controller (rev. 0x65)
ehci0: interrupting at irq 9
ehci0: dropped intr workaround enabled
ehci0: EHCI version 1.0
ehci0: companion controllers, 2 ports each: uhci0 uhci1
usb2 at ehci0: USB revision 2.0
fwohci0 at pci0 dev 8 function 3: VIA Technologies VT6306 IEEE 1394 Host Controller (rev. 0x80)
fwohci0: interrupting at irq 11

I have tried to change numerous BIOS settings, but nothing really helped. Moving PCI card to another slot also didn't change much.

I suppose that there are only 4 IRQ wires that are shared by all PCI cards. But the machine runs under zero load so this should more or less work, I think.

I have posted configuration details on
http://akson.sgh.waw.pl/~saper/NetBSD/pci/

GENERIC - include'd GENERIC (unchanged)
KERNELCONFIG - kernel configuration
dmesg - full dmesg output on boot of the above
fwreset - viaide0 messages
PCI_INTR_FIXUP - messages with PCI_INTR_FIXUP uncommented.

I have originally discovered this running kernel with

options         PCIBIOS                 # PCI BIOS support
options         PCIBIOSVERBOSE          # PCI BIOS verbose info
options         PCIBIOS_INTR_GUESS      # see pcibios(4)

options         PCI_ADDR_FIXUP          # fixup PCI I/O addresses
options         PCI_BUS_FIXUP           # fixup PCI bus numbering
options         PCI_INTR_FIXUP          

(without HINT, _FORCE or _DEBUG).

Any ideas how to proceed with this?
I plan to add another PCI card (802.11b/g NIC).

Is there any chance that adding a PCI IDE/SATA controller and shutting down internal IDE might help?

I know some C and I can do some debugging even via serial interface if necessary.

Thanks in advance,

--Marcin

Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index