kern/130726: DMA errors accessing multiple SATA channels

Dylan Simon dylan at dylex.net
Sun Jan 18 18:50:04 PST 2009


>Number:         130726
>Category:       kern
>Synopsis:       DMA errors accessing multiple SATA channels
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 19 02:50:03 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Dylan Simon
>Release:        8.0-CURRENT 20090114
>Organization:
NYU
>Environment:
FreeBSD lust.cns.nyu.edu 8.0-CURRENT FreeBSD 8.0-CURRENT #0: Wed Jan 14 19:58:58 EST 2009     dylan at lust.cns.nyu.edu:/usr/obj/usr/src/sys/SIN  amd64
>Description:
kernel: ad8: FAILURE - load data
kernel: ad8: setting up DMA failed
kernel: g_vfs_done():ad8s1e[WRITE(offset=1881014272, length=131072)]error = 5
kernel: ad6: FAILURE - load data
kernel: ad6: setting up DMA failed
kernel: g_vfs_done():ad6s1e[READ(offset=4117364736, length=32768)]error = 5
kernel: vnode_pager_getpages: I/O read error

Disk errors of this form occur after a few minutes of disk load.  It seems to occur only when operations are attempting to write to SATA disks on different channels at roughly the same time.  Eventually results in panics or hangs.

Occurs with GENERIC 200812 snapshot kernel too.  Occurs regardless of legacy/enhanced BIOS setting.  Seen with gmirror, ufs, and zfs under both nfs and local access.  Does not occur at all when accessed disks are on the same channel (e.g., ad6+ad7 or ad8 alone in this case).  Does not occur on same hardware with linux under similar conditions.

Hardware: Supermicro C2SEA with 6 SATA ports on ICH10, four identical disks under various configurations.

Symptoms matching this have also been seen on an ICH7 with two disks on different channels on hardware that works fine with 7.1, triggered by daily periodic scripts.

atacontrol list:
ATA channel 2:
    Master: acd0 <ATAPI DVD D DH16D3P/1P52> ATA/ATAPI revision 7
    Slave:       no device present
ATA channel 3:
    Master:  ad6 <ST31000333AS/CC1F> Serial ATA II
    Slave:   ad7 <ST31000333AS/CC1F> Serial ATA II
ATA channel 4:
    Master:  ad8 <ST31000333AS/CC1F> Serial ATA II
    Slave:   ad9 <ST31000333AS/CC1F> Serial ATA II
ATA channel 5:
    Master:      no device present
    Slave:       no device present
ATA channel 6:
    Master:      no device present
    Slave:       no device present

pciconf -lv (partial):
pcib3 at pci0:0:30:0:      class=0x060401 card=0xb88015d9 chip=0x244e8086 rev=0x90 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '82801 Family (ICH2/3/4/4/5/5/6/7/8/9,63xxESB) Hub Interface to PCI Bridge'
    class      = bridge
    subclass   = PCI-PCI
isab0 at pci0:0:31:0:      class=0x060100 card=0xb88015d9 chip=0x3a188086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-ISA
atapci1 at pci0:0:31:2:    class=0x01018f card=0xb88015d9 chip=0x3a208086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = mass storage
    subclass   = ATA
atapci2 at pci0:0:31:5:    class=0x010185 card=0xb88015d9 chip=0x3a268086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = mass storage
    subclass   = ATA

verbose dmesg (partial):
lust kernel: atapci0: <ITE IT8213F UDMA133 controller> port 0xec00-0xec07,0xe880-0xe883,0xe800-0xe807,0xe480-0xe483,0xe400-0xe40f irq 22 at device 4.0 on pci3
lust kernel: atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0xe400
lust kernel: ioapic0: routing intpin 22 (PCI IRQ 22) to vector 53
lust kernel: atapci0: [MPSAFE]
lust kernel: atapci0: [ITHREAD]
lust kernel: ata2: <ATA channel 0> on atapci0
lust kernel: atapci0: Reserved 0x8 bytes for rid 0x10 type 4 at 0xec00
lust kernel: atapci0: Reserved 0x4 bytes for rid 0x14 type 4 at 0xe880
lust kernel: ata2: reset tp1 mask=03 ostat0=50 ostat1=00
lust kernel: ata2: stat0=0x00 err=0x01 lsb=0x14 msb=0xeb
lust kernel: ata2: stat1=0x00 err=0x00 lsb=0x00 msb=0x00
lust kernel: ata2: reset tp2 stat0=00 stat1=00 devices=0x10000
lust kernel: ata2: [MPSAFE]
lust kernel: ata2: [ITHREAD]
lust kernel: pci3: <serial bus, FireWire> at device 8.0 (no driver attached)
lust kernel: isab0: <PCI-ISA bridge> at device 31.0 on pci0
lust kernel: isa0: <ISA bus> on isab0
lust kernel: atapci1: <Intel ICH10 SATA300 controller> port 0xc400-0xc407,0xc080-0xc083,0xc000-0xc007,0xbc00-0xbc03,0xb880-0xb88f,0xb800-0xb80f irq 19 at device 31.2 on pci0
lust kernel: atapci1: Reserved 0x10 bytes for rid 0x20 type 4 at 0xb880
lust kernel: atapci1: [MPSAFE]
lust kernel: atapci1: [ITHREAD]
lust kernel: atapci1: Reserved 0x10 bytes for rid 0x24 type 4 at 0xb800
lust kernel: ata3: <ATA channel 0> on atapci1
lust kernel: atapci1: Reserved 0x8 bytes for rid 0x10 type 4 at 0xc400
lust kernel: atapci1: Reserved 0x4 bytes for rid 0x14 type 4 at 0xc080
lust kernel: ata3: reset tp1 mask=03 ostat0=50 ostat1=50
lust kernel: ata3: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
lust kernel: ata3: stat1=0x50 err=0x01 lsb=0x00 msb=0x00
lust kernel: ata3: reset tp2 stat0=50 stat1=50 devices=0x3
lust kernel: ata3: [MPSAFE]
lust kernel: ata3: [ITHREAD]
lust kernel: ata4: <ATA channel 1> on atapci1
lust kernel: atapci1: Reserved 0x8 bytes for rid 0x18 type 4 at 0xc000
lust kernel: atapci1: Reserved 0x4 bytes for rid 0x1c type 4 at 0xbc00
lust kernel: ata4: reset tp1 mask=03 ostat0=50 ostat1=50
lust kernel: ata4: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
lust kernel: ata4: stat1=0x50 err=0x01 lsb=0x00 msb=0x00
lust kernel: ata4: reset tp2 stat0=50 stat1=50 devices=0x3
lust kernel: ata4: [MPSAFE]
lust kernel: ata4: [ITHREAD]
lust kernel: pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
lust kernel: atapci2: <Intel ICH10 SATA300 controller> port 0xb400-0xb407,0xb080-0xb083,0xb000-0xb007,0xac00-0xac03,0xa880-0xa88f,0xa800-0xa80f irq 19 at device 31.5 on pci0
lust kernel: atapci2: Reserved 0x10 bytes for rid 0x20 type 4 at 0xa880
lust kernel: atapci2: [MPSAFE]
lust kernel: atapci2: [ITHREAD]
lust kernel: atapci2: Reserved 0x10 bytes for rid 0x24 type 4 at 0xa800
lust kernel: ata5: <ATA channel 0> on atapci2
lust kernel: atapci2: Reserved 0x8 bytes for rid 0x10 type 4 at 0xb400
lust kernel: atapci2: Reserved 0x4 bytes for rid 0x14 type 4 at 0xb080
lust kernel: ata5: reset tp1 mask=03 ostat0=7f ostat1=7f
lust kernel: ata5: stat0=0x7f err=0xff lsb=0xff msb=0xff
lust kernel: ata5: stat1=0x7f err=0xff lsb=0xff msb=0xff
lust kernel: ata5: reset tp2 stat0=ff stat1=ff devices=0x0
lust kernel: ata5: [MPSAFE]
lust kernel: ata5: [ITHREAD]
lust kernel: ata6: <ATA channel 1> on atapci2
lust kernel: atapci2: Reserved 0x8 bytes for rid 0x18 type 4 at 0xb000
lust kernel: atapci2: Reserved 0x4 bytes for rid 0x1c type 4 at 0xac00
lust kernel: ata6: reset tp1 mask=03 ostat0=7f ostat1=7f
lust kernel: ata6: stat0=0x7f err=0xff lsb=0xff msb=0xff
lust kernel: ata6: stat1=0x7f err=0xff lsb=0xff msb=0xff
lust kernel: ata6: reset tp2 stat0=ff stat1=ff devices=0x0
lust kernel: ata6: [MPSAFE]
lust kernel: ata6: [ITHREAD]
lust kernel: ata2: identify ch->devices=00010000
lust kernel: ata2-master: pio=PIO4 wdma=WDMA2 udma=UDMA33 cable=40 wire
lust kernel: acd0: setting PIO4 on IT8213F chip
lust kernel: acd0: setting UDMA33 on IT8213F chip
lust kernel: acd0: <ATAPI DVD D DH16D3P/1P52> DVDROM drive at ata2 as master
lust kernel: acd0: read 8268KB/s (8268KB/s), 198KB buffer, UDMA33
lust kernel: acd0: Reads: CDR, CDRW, CDDA stream, DVDROM, DVDR, DVDRAM, packet
lust kernel: acd0: Writes:
lust kernel: acd0: Audio: play, 256 volume levels
lust kernel: acd0: Mechanism: ejectable tray, unlocked
lust kernel: acd0: Medium: no/blank disc
lust kernel: ata3: identify ch->devices=00000003
lust kernel: ata3-master: pio=PIO4 wdma=WDMA2 udma=UDMA133 cable=40 wire
lust kernel: ata3-slave: pio=PIO4 wdma=WDMA2 udma=UDMA133 cable=40 wire
lust kernel: ad6: 953869MB <Seagate ST31000333AS CC1F> at ata3-master SATA300
lust kernel: ad6: 1953525168 sectors [1938021C/16H/63S] 16 sectors/interrupt 1 depth queue
lust kernel: GEOM: new disk ad6
lust kernel: ad7: 953869MB <Seagate ST31000333AS CC1F> at ata3-slave SATA300
lust kernel: ad7: 1953525168 sectors [1938021C/16H/63S] 16 sectors/interrupt 1 depth queue
lust kernel: ata4: identify ch->devices=00000003
lust kernel: ata4-master: pio=PIO4 wdma=WDMA2 udma=UDMA133 cable=40 wire
lust kernel: GEOM: new disk ad7
lust kernel: ata4-slave: pio=PIO4 wdma=WDMA2 udma=UDMA133 cable=40 wire
lust kernel: ad8: 953869MB <Seagate ST31000333AS CC1F> at ata4-master SATA300
lust kernel: ad8: 1953525168 sectors [1938021C/16H/63S] 16 sectors/interrupt 1 depth queue
lust kernel: GEOM: new disk ad8
lust kernel: ad9: 953869MB <Seagate ST31000333AS CC1F> at ata4-slave SATA300
lust kernel: ad9: 1953525168 sectors [1938021C/16H/63S] 16 sectors/interrupt 1 depth queue
lust kernel: ata5: identify ch->devices=00000000
lust kernel: ata6: identify ch->devices=00000000
lust kernel: ioapic0: Assigning ISA IRQ 1 to local APIC 0
lust kernel: ioapic0: Assigning ISA IRQ 9 to local APIC 1
lust kernel: ioapic0: Assigning PCI IRQ 17 to local APIC 0
lust kernel: ioapic0: Assigning PCI IRQ 18 to local APIC 1
lust kernel: ioapic0: Assigning PCI IRQ 19 to local APIC 0
lust kernel: ioapic0: Assigning PCI IRQ 22 to local APIC 1
lust kernel: ioapic0: Assigning PCI IRQ 23 to local APIC 0
lust kernel: GEOM: new disk ad9
>How-To-Repeat:
Perform access involving writes to SATA disks on different channels of an ICH controller.
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list