Agreed, though the output is indeed signalling an error... IMO the EH
should handle the error if the device is signalling an error, upon
timeout, rather than just going ahead and resetting the device.
Its similar to where ATA devices on PCI SFF controllers signal DMA error
via timeout, where EH must inspect BMDMA Status register to determine if
it's a DMA error signalled by hardware, or something that requires
additional autopsy.
EH for ATAPI is quite different from EH for ATA, so there may be some
areas where we don't handle things the right way for ATAPI.
Decoding the error message we have:
cdb 0x5a ==
MODE SENSE(10)
status 0x51 ==
DRDY
command-specific flag (aka SERV, in !overlap case)
CHK (check condition, aka error)
error 0x54 ==
ABRT (command aborted or command parameter invalid)
sense key 0x5 (illegal request)
ireason 0x3 ==
the hardcoded values (bits 0 and 1) remain hardcoded, all good
Since BSY is not set in the Status register, and given the other
information derived from the decoded values, it looks like the device is
otherwise happy and ready to accept additional commands.
It appears to have chewed on an ATAPI command, spit it out, but failed
to send a completion interrupt.
So its an open question whether it's a device not completing this
errored-out command, or whether its IRQ/ACPI stuff infecting libata.
Jeff
-