[parisc-linux] K410 SCSI 53c700 issue with PLEXTOR PX-R820T
James Bottomley
James.Bottomley at SteelEye.com
Thu Nov 30 10:17:43 MST 2006
Actually, your analysis isn't quite correct. This is the real problem
On Thu, 2006-11-30 at 10:18 +0100, Guy Martin wrote:
> [42949427.280000] 53c700: scsi2, command sr 2:0:2:0:
> [42949427.280000] command: cdb[0]=0x43: 43 00 00 00 00 00 00 00 0c 40
READ_TOC(10) command (i.e. 10 byte command)
> [42949427.280000] scatter block 0: move 12[0900000c] from 0x1d48e00
> [42949427.280000] SETTING 001c0528 to 90080000
> [42949427.280000] script, patching short field MessageCount at 30 to 0xe000001
> [42949427.280000] script, patching ID field Device_ID at 0 to 0x41040000
> [42949427.280000] script, patching CommandAddress at 121 to 0x1d508f8
> [42949427.280000] script, patching short field CommandCount at 120 to 0xa00000a
> [42949427.280000] script, patching SGScriptStartAddress at 191 to 0x1c0520
> [42949427.280000] script, patching SGScriptStartAddress at 207 to 0x1c0520
> [42949427.290000] scsi2: istat 01 sstat0 00 dstat 84 dsp 012a[001c04a8] dsps 0x401
> [42949427.290000] scsi2: (2:0) ====>SCRIPT INTERRUPT<====
> [42949427.290000] COMMAND COMPLETE, status=02
Returns Check Condition, causing the driver to send out a REQUEST_SENSE
command, which it begins here using the same slot:
> [42949427.290000] script, patching short field MessageCount at 30 to 0xe000006
> [42949427.290000] script, patching ID field Device_ID at 0 to 0x41040000
> [42949427.290000] script, patching CommandAddress at 121 to 0x1d58c20
> [42949427.290000] script, patching short field CommandCount at 120 to 0xa00000a
This patches the command length to ten bytes, but REQUEST_SENSE is only
a 6 byte command ... it's clearly inherited the length parameter from
the previous command.
> [42949427.290000] script, patching SGScriptStartAddress at 191 to 0x1c0520
> [42949427.290000] script, patching SGScriptStartAddress at 207 to 0x1c0520
> [42949427.290000] scsi2: Issuing saved command slot 4f6b8520, cmd 4f23b8c0
> [42949427.300000] scsi2: istat 09 sstat0 00 dstat 84 dsp 00ba[001c02e8] dsps 0x250
> [42949427.300000] scsi2: (2:0) ====>SCRIPT INTERRUPT<====
> [42949427.300000] scsi2 (2:0): message before command phase: 01 03 01 3b 08
> [42949427.300000] Attempting to resume at 1c02e8
> [42949427.320000] scsi2: istat 0a sstat0 c0 dstat 00 dsp 007a[001c01e8] dsps 0x1d58c20
> [42949427.320000] scsi2: (2:0) phase mismatch at 01e8, phase IO BSY DATA_IN
And here we get a phase mismatch in the command phase because the drive
transitions to data phase after six bytes and the driver still thinks it
has another four to send.
I'd have the maintainer shot ... he clearly forgot to set up the command
length for auto request sense.
James
More information about the parisc-linux
mailing list