Subject: port-i386/33291: pdcsata hang kernel on writing device timeout/retry
To: None <port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <abs@absd.org>
List: netbsd-bugs
Date: 04/19/2006 10:00:00
>Number:         33291
>Category:       port-i386
>Synopsis:       pdcsata hang kernel on writing device timeout/retry
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    port-i386-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 19 10:00:00 +0000 2006
>Originator:     David Brownlee
>Release:        NetBSD 3.0_STABLE
>Organization:
>Environment:
	
	
System: NetBSD gta.i 3.0_STABLE NetBSD 3.0_STABLE (_ACPI_) #1: Thu Mar 16 15:47:21 GMT 2006 root@tll.i:/var/obj/i386/files/netbsd/3/sys/arch/i386/compile/_ACPI_ i386
Architecture: i386
Machine: i386
>Description:
	Running an Asus A8V-Deluxe motherboard with two 300GB RAID1
	raidframe filesystems (four WD3200 disks). We occasionally
	see write retries on some of the disks. If this happens on the
	viaide SATA controller everything is fine:

viaide0:1:0: lost interrupt
	type: ata tc_bcount: 65536 tc_skip: 0
viaide0:1:0: bus-master DMA error: missing interrupt, status=0x21
viaide0:1:0: device timeout, c_bcount=65536, c_skip0
wd3e: device timeout writing fsbn 177628224 of 177628224-177628351 (wd3 bn 177628287; cn 176218 tn 8 sn 39), retrying
wd3: soft error (corrected)

	If it happens on the pdcsata the machine locks solid (unable to
	switch wscons virtual consoles), with the following:

pdcsata0:1:0: lost interrupt
        type: ata tc_bcount: 16384 tc_skip:0

	Currently running a kernel with ddb.fromconsole enabled, will try to
	capture more details if it happens again.

pdcsata0 at pci0 dev 8 function 0
pdcsata0: Promise PDC20378 SATA150 controller (rev. 0x02)
pdcsata0: interrupting at ioapic0 pin 18 (irq 10)
pdcsata0: bus-master DMA support present
atabus0 at pdcsata0 channel 0
atabus1 at pdcsata0 channel 1
atabus2 at pdcsata0 channel 2
[...]
viaide0 at pci0 dev 15 function 0
viaide0: VIA Technologies VT8237 SATA Controller (rev. 0x80)
viaide0: bus-master DMA support present
viaide0: primary channel wired to native-PCI mode
viaide0: using ioapic0 pin 20 (irq 11) for native-PCI interrupt
atabus5 at viaide0 channel 0
viaide0: secondary channel wired to native-PCI mode
atabus6 at viaide0 channel 1
[...]
wd0 at atabus0 drive 0: <WDC WD3200SD-01KNB0>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 298 GB, 620181 cyl, 16 head, 63 sec, 512 bytes/sect x 625142448 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd0(pdcsata0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
wd1 at atabus1 drive 0: <WDC WD3200SD-01KNB0>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 298 GB, 620181 cyl, 16 head, 63 sec, 512 bytes/sect x 625142448 sectors
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd1(pdcsata0:1:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
wd2 at atabus5 drive 0: <WDC WD3200JD-00KLB0>
wd2: drive supports 16-sector PIO transfers, LBA48 addressing
wd2: 298 GB, 620181 cyl, 16 head, 63 sec, 512 bytes/sect x 625142448 sectors
wd2: 32-bit data port
wd2: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd2(viaide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
wd3 at atabus6 drive 0: <WDC WD3200JD-00KLB0>
wd3: drive supports 16-sector PIO transfers, LBA48 addressing
wd3: 298 GB, 620181 cyl, 16 head, 63 sec, 512 bytes/sect x 625142448 sectors
wd3: 32-bit data port
wd3: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd3(viaide0:1:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)

>How-To-Repeat:

	Run a disk on a Promise PDC20378 SATA150 controller which gets
	a 'lost interrupt'
>Fix:

	Do not use pdcsata.

	

>Unformatted: