Skip to contentSkip to conversation

HSM violations from ATA PACKET cmd ABRT errors in initial comms with LG GH22 SATA DVDRW

DISCUSSION thomas schorpp 4 participants 13 messages Dec 27, 2009 – Jan 20, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in

        res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in

        res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in

        res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in

        res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
Buffer I/O error on device sr0, logical block 0
Buffer I/O error on device sr0, logical block 1
ata6: EH complete

#1 lore raw
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

What were the errors you were seeing on the VIA controller?

#2 lore raw
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

Quoted 1 line

What were the errors you were seeing on the VIA controller?

I'd like to see that too.

/Mikael

#3 lore raw
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 6 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

Quoted 1 line

What were the errors you were seeing on the VIA controller?

I'd like to see that too.

Many thanks for the fast service ;-) , but all VIA HBA SATA ports are in use now by 2 hdd's, I will connect the LG GH22 this evening (> 1800 UTC) and report.

If of any worth for You here is a dmesg from kernel version 2.6.29.3 using the

(00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]) 00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80):

dmesg |grep ata6 (Sorry, forgot -A, didn't noticed not all messages are printk'd with 'ata' in the line)
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100
ata6.00: configured for UDMA/100
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t4
ata6: hotplug_status 0x10
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata6.00: configured for UDMA/100
ata6: limiting SATA link speed to 1.5 Gbps
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t3
ata6: hotplug_status 0x10
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for UDMA/100
ata6.00: limiting speed to UDMA/66:PIO4
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t2
ata6: hotplug_status 0x11
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for UDMA/66
ata6.00: limiting speed to UDMA/33:PIO4
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t1
ata6: hotplug_status 0x11
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for UDMA/33
ata6: EH pending after 5 tries, giving up
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
ata6.00: port_status 0x20280000
ata6.00: cmd a0/01:00:00:00:08/00:00:00:00:00/a0 tag 0 dma 2048 in
ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for UDMA/33
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
ata6.00: port_status 0x20280000
ata6.00: cmd a0/01:00:00:00:08/00:00:00:00:00/a0 tag 0 dma 2048 in
ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for UDMA/33
ata6.00: limiting speed to PIO4
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t4
ata6: hotplug_status 0x11
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for PIO4
ata6.00: limiting speed to PIO3
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t3
ata6: hotplug_status 0x11
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for PIO3
ata6.00: limiting speed to PIO0
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t2
ata6: hotplug_status 0x11
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for PIO0
ata6: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t1
ata6: hotplug_status 0x10
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata6.00: configured for PIO0
ata6: EH pending after 5 tries, giving up
ata6: EH complete
ata6.00: disabled

#4 lore raw
In reply to Mikael Pettersson
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 6 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

Quoted 1 line

What were the errors you were seeing on the VIA controller?

I'd like to see that too.

No such HSM error messages or any EH invocation with the sata-via on 2.6.32.2 :-) Nor on growisofs startup or dvdrw drive servo failure like it occured with sata-promise.

Hot-swapped drives:
...
ata2: link is slow to respond, please be patient (ready=0)
ata2: soft resetting link
ata2: link is slow to respond, please be patient (ready=0)
ata2: SRST failed (errno=-16)
ata2: soft resetting link
ata2: link is slow to respond, please be patient (ready=0)
ata3: exception Emask 0x10 SAct 0x0 SErr 0x180000 action 0xe frozen
ata3: hotplug_status 0x1
ata3: SError: { 10B8B Dispar }
ata3: hard resetting link
ata2: SRST failed (errno=-16)
ata2: soft resetting link
ata3: SATA link down (SStatus 0 SControl 300)
ata2: link is slow to respond, please be patient (ready=0)
ata3: hard resetting link
ata3: SATA link down (SStatus 0 SControl 300)
ata3: limiting SATA link speed to 1.5 Gbps
ata3: hard resetting link
ata3: SATA link down (SStatus 0 SControl 310)
ata3.00: disabled
ata3: EH complete
ata3.00: detaching (SCSI 2:0:0:0)
ata2.00: class mismatch 1 != 3
ata2.00: revalidation failed (errno=-19)
ata2: soft resetting link
ata2.00: class mismatch 1 != 3
ata2.00: revalidation failed (errno=-19)
ata2.00: disabled
ata2: soft resetting link
ata2.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata2.00: configured for UDMA/100
ata2: EH complete
ata2.00: detaching (SCSI 1:0:0:0)
sd 1:0:0:0: [sdb] Synchronizing SCSI cache
sd 1:0:0:0: [sdb] Stopping disk
scsi 1:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 1:0:0:0: Attached scsi CD-ROM sr0
sr 1:0:0:0: Attached scsi generic sg1 type 5
...

#5 lore raw
In reply to Mikael Pettersson
Quoted 89 lines · Mikael Pettersson
Quoted 88 lines · Robert Hancock
Quoted 86 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0
sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Quoted 2 lines
Quoted 2 lines

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Yes.

Quoted 8 lines
Quoted 7 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 4 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

Quoted 1 line

What were the errors you were seeing on the VIA controller?

See previous mails in thread.

Quoted 2 lines

I'd like to see that too.

See previous mails in thread.

Quoted 3 lines

/Mikael

#6 lore raw
In reply to Mikael Pettersson
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 2 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 		ac_err_mask |= AC_ERR_ATA_BUS;
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR
#7 lore raw
Quoted 116 lines · Mikael Pettersson
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 2 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

drivers/ata/sata_promise.c static void pdc_error_intr(struct ata_po · line 868

Quoted 8 lines
drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 		ac_err_mask |= AC_ERR_ATA_BUS;
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR

FIXED with AC_ERR_OTHER.
TESTED Drive reads and writes media fine.

Many Thanks :-)

y
tom

#8 lore raw
Quoted 129 lines · thomas schorpp
Quoted 116 lines · Mikael Pettersson
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 2 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

drivers/ata/sata_promise.c static void pdc_error_intr(struct ata_po · line 868

Quoted 8 lines
drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 		ac_err_mask |= AC_ERR_ATA_BUS;
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR

FIXED with AC_ERR_OTHER.
TESTED Drive reads and writes media fine.

Quoted 1 line

Many Thanks :-)

Great. Can you show me the kernel messages from the patched driver, including driver initialization, device enumeration, and your accesses to the ATAPI device? I want to make sure everything looks ok before pushing this upstream.

/Mikael

#9 lore raw
Quoted 130 lines · Mikael Pettersson
Quoted 129 lines · thomas schorpp
Quoted 116 lines · Mikael Pettersson
Quoted 99 lines · Mikael Pettersson
Quoted 91 lines · Robert Hancock
Quoted 78 lines · thomas schorpp

LG GH22NS40 NL01 (possibly Renesas chipset)
VIA8237 SATA (produces basically same errors), Promise SATA II 150 20579 HBAs.

Linux 2.6.32.2
hal polling
devkit polling
wodim
growisofs

port_status 0x20280000 (Data Transfer Overrun Error & Target Device Fault)?

Looks like a hardware combination incompatibility. Most applicable ATA_HORKAGES in sourcecode already tried.

Not found the sense code yet since FEATURE specific according to T13/1410D revision 3b.

Comments?

y
tom

dmesg |grep -A 10 ata

sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi5 : sata_promise
scsi6 : sata_promise
scsi7 : sata_promise
ata6: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata7: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata8: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata6.00: configured for UDMA/100
scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 5:0:0:0: Attached scsi CD-ROM sr0
sr 5:0:0:0: Attached scsi generic sg2 type 5
ata7: SATA link down (SStatus 0 SControl 300)
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00 ata6.00: cmd a0/01:00:00:00:fc/00:00:00:00:00/a0 tag 0 dma 131072 in res 51/54:03:00:00:fc/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
...
<period, ~10 times in series>
...
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
ata6: EH complete
ata6.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 ata6.00: port_status 0x20280000
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00 ata6.00: cmd a0/01:00:00:00:10/00:00:00:00:00/a0 tag 0 dma 4096 in res 51/54:03:00:00:10/00:00:00:00:00/e0 Emask 0x2 (HSM violation)

Quoted 8 lines

ata6.00: status: { DRDY ERR }
ata6: hard resetting link
ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata6.00: configured for UDMA/100
sr 5:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08 sr 5:0:0:0: [sr0] Sense Key : 0x5 [current] Info fld=0x0 sr 5:0:0:0: [sr0] ASC=0x21 ASCQ=0x0
sr 5:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00

Well, it's a READ command, and the response is "LOGICAL BLOCK ADDRESS OUT OF RANGE". Seems reasonable if it's a blank disc in the drive (is it?)

Quoted 6 lines

According to the code comments in sata_promise, "overrun error" means the S/G byte count was larger than the drive requires. Which I suppose would happen here, because the drive didn't actually transfer any data. sata_promise raises an HSM error on that though which triggers resets and such. Seems like an overreaction, for ATAPI commands anyway, as that can happen normally. CCing Mikael.

Quoted 2 lines

Thanks for the report. I'll try to come up with a patch to reduce the severity of overruns to something less than HSM.

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

drivers/ata/sata_promise.c static void pdc_error_intr(struct ata_po · line 868

Quoted 8 lines
drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 		ac_err_mask |= AC_ERR_ATA_BUS;
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR

FIXED with AC_ERR_OTHER.
TESTED Drive reads and writes media fine.

Quoted 6 lines
Quoted 1 line

Many Thanks :-)

Great. Can you show me the kernel messages from the patched driver, including driver initialization, device enumeration, and your accesses to the ATAPI device? I want to make sure everything looks ok before pushing this upstream.

sata_promise 0000:00:0d.0: version 2.12
sata_promise 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 scsi2 : sata_promise
scsi3 : sata_promise
scsi4 : sata_promise
ata3: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe200 irq 17
ata4: SATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe280 irq 17
ata5: PATA max UDMA/133 mmio m4096@0xfbefe000 ata 0xfbefe300 irq 17

ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata3.00: ATAPI: HL-DT-ST DVDRAM GH22NS40, NL01, max UDMA/100 ata3.00: configured for UDMA/100
scsi 2:0:0:0: CD-ROM HL-DT-ST DVDRAM GH22NS40 NL01 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray sr 2:0:0:0: Attached scsi CD-ROM sr0
sr 2:0:0:0: Attached scsi generic sg2 type 5
--
ata4: SATA link down (SStatus 0 SControl 300)

hal+devkit polling on raw dvd+r media:

sr 2:0:0:0: Attached scsi CD-ROM sr0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00
end_request: I/O error, dev sr0, sector 0
Buffer I/O error on device sr0, logical block 0
Buffer I/O error on device sr0, logical block 1
Buffer I/O error on device sr0, logical block 2
Buffer I/O error on device sr0, logical block 3
Buffer I/O error on device sr0, logical block 4
Buffer I/O error on device sr0, logical block 5
Buffer I/O error on device sr0, logical block 6
Buffer I/O error on device sr0, logical block 7
Buffer I/O error on device sr0, logical block 8
Buffer I/O error on device sr0, logical block 9
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 08 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 08 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 40 00
end_request: I/O error, dev sr0, sector 0
Buffer I/O error on device sr0, logical block 0
Buffer I/O error on device sr0, logical block 1
Buffer I/O error on device sr0, logical block 2
Buffer I/O error on device sr0, logical block 3
Buffer I/O error on device sr0, logical block 4
Buffer I/O error on device sr0, logical block 5
Buffer I/O error on device sr0, logical block 6
Buffer I/O error on device sr0, logical block 7
Buffer I/O error on device sr0, logical block 8
Buffer I/O error on device sr0, logical block 9
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0
sr 2:0:0:0: [sr0] Result: hostbyte=0x00 driverbyte=0x08
sr 2:0:0:0: [sr0] Sense Key : 0x5 [current] sr 2:0:0:0: [sr0] ASC=0x21 ASCQ=0x0 sr 2:0:0:0: [sr0] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 02 00
end_request: I/O error, dev sr0, sector 0

No messages for R/W of data media.

y
tom

#10 lore raw
In reply to Mikael Pettersson

Hello, Mikael.

Quoted 12 lines · Mikael Pettersson

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

drivers/ata/sata_promise.c static void pdc_error_intr(struct ata_po · line 865

Quoted 5 lines
drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */

I think AC_ERR_OTHER can still be too much. AC_ERR_* bits should only be set when the command failed for that reason. Here, underrun is expected, so not really an error condition. But, for example, under or overrun for an ATA R/W command should trigger HSM failure. I think the above error detection logic needs to be improved a bit.

Thanks.

Signature · 1 line
tejun
#11 lore raw
Quoted 12 lines · Tejun Heo

Hello, Mikael.

Quoted 9 lines · Mikael Pettersson

I've looked at the available AC_ERR_ values and how they're treated by libata-eh, and to avoid resets but allow for retries it seems that one should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_ at all (i.e., zero). So please first try the patch below. If it doesn't eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try again. And if that one still causes reset loops, try a plain 0.

/Mikael

Quoted 11 lines

drivers/ata/sata_promise.c static void pdc_error_intr(struct ata_po · line 865

Quoted 8 lines
drivers/ata/sata_promise.c renamed from drivers/ata/sata_promise.c.~1~ +1 -1
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */

I think AC_ERR_OTHER can still be too much. AC_ERR_* bits should only be set when the command failed for that reason. Here, underrun is

Overruns from my port status log, not underruns?
port_status 0x20280000, 0x2020, (Data Transfer Overrun Error & Target Device Fault)?

Quoted 3 lines

expected, so not really an error condition. But, for example, under or overrun for an ATA R/W command should trigger HSM failure. I think the above error detection logic needs to be improved a bit.

Well I generally don't feel comfortable with any unknown state output EHs, too, but if ata spec conformant, we're fine, aren't we?

y
tom

#12 lore raw

Hello,

Quoted 6 lines · thomas schorpp
Quoted 2 lines

I think AC_ERR_OTHER can still be too much. AC_ERR_* bits should only be set when the command failed for that reason. Here, underrun is

Overruns from my port status log, not underruns? port_status 0x20280000, 0x2020, (Data Transfer Overrun Error & Target Device Fault)?

Well, it depends on which way you look from. It's data underrun from the device and overrun from the sglist. Apparently sata_promise likes to see it from the sglist. :-)

Quoted 6 lines
Quoted 3 lines

expected, so not really an error condition. But, for example, under or overrun for an ATA R/W command should trigger HSM failure. I think the above error detection logic needs to be improved a bit.

Well I generally don't feel comfortable with any unknown state output EHs, too, but if ata spec conformant, we're fine, aren't we?

Yeap, I was just saying that the condition here wasn't really an error condition and as such shouldn't set AC_ERR_* bit.

Thanks.

Signature · 1 line
tejun