Re: K410 SCSI 53c700 issue with PLEXTOR PX-R820T
Guy Martin <gmsoft <at> tuxicoman.be>
2006-11-30 09:18:05 GMT
Hi Matthew,
I've been doing some more troubleshooting to find out what was going wrong.
I've found out that the SCSI driver detects a phase mismatch for READ_CAPACITY and READ_TOC as it should.
But the main difference between the working driver and the non working one is the fact that it doesn't handle
this mismatch as an expected one.
Working READ_TOC command :
[42949512.830000] 53c700: scsi2, command sr 2:0:2:0:
[42949512.890000] command: cdb[0]=0x43: 43 00 00 00 00 00 00 00 0c 40
[42949512.970000] scatter block 0: move 12[0900000c] from 0xf38e00
[42949513.040000] SETTING 001c0528 to 90080000
[42949513.090000] script, patching short field MessageCount at 30 to 0xe000001
[42949513.180000] script, patching ID field Device_ID at 0 to 0x41040000
[42949513.250000] script, patching CommandAddress at 121 to 0xf407a4
[42949513.330000] script, patching short field CommandCount at 120 to 0xa00000a
[42949513.410000] script, patching SGScriptStartAddress at 191 to 0x1c0520
[42949513.490000] script, patching SGScriptStartAddress at 207 to 0x1c0520
[42949513.570000] scsi2: istat 01 sstat0 00 dstat 84 dsp 012a[001c04a8] dsps 0x401
[42949513.570000] scsi2: (2:0) ====>SCRIPT INTERRUPT<====
[42949513.570000] COMMAND COMPLETE, status=02
[42949513.570000] script, patching short field MessageCount at 30 to 0xe000006
[42949513.570000] script, patching ID field Device_ID at 0 to 0x41040000
[42949513.570000] script, patching CommandAddress at 121 to 0xf407a4
[42949513.570000] script, patching short field CommandCount at 120 to 0xa000006
[42949513.570000] script, patching SGScriptStartAddress at 191 to 0x1c0520
[42949513.570000] script, patching SGScriptStartAddress at 207 to 0x1c0520
[42949513.570000] scsi2: Issuing saved command slot 4fd40520, cmd 4f995760
[42949514.350000] scsi2: istat 09 sstat0 00 dstat 84 dsp 00ba[001c02e8] dsps 0x250
[42949514.350000] scsi2: (2:0) ====>SCRIPT INTERRUPT<====
[42949514.350000] scsi2 (2:0): message before command phase: 01 03 01 3b 08
[42949514.350000] Attempting to resume at 1c02e8
[42949514.630000] scsi2: istat 0a sstat0 c0 dstat 00 dsp 014a[001c0528] dsps 0xf48808
[42949514.630000] scsi2: (2:0) Expected phase mismatch in slot->SG[1], transferred 0x4e
[42949514.630000] sr 2:0:2:0:
[42949514.630000] command: cdb[0]=0x3: 03 00 00 00 60 00
[42949514.630000] DATA TRANSFER MISMATCH, count = 96, transferred 18
[42949514.630000] Attempting to resume at 1c0218
[42949515.040000] scsi2: istat 01 sstat0 00 dstat 84 dsp 012a[001c04a8] dsps 0x401
[42949515.040000] scsi2: (2:0) ====>SCRIPT INTERRUPT<====
[42949515.040000] COMMAND COMPLETE, status=00
[42949515.040000] ORIGINAL CMD 4f995760 RETURNED 2, new return is 0 sense is
[42949515.040000] 53c700: Current: sense key=0x2
[42949515.040000] ASC=0x3a ASCQ=0x0
Broken READ_TOC command :
[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
[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
[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
[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
[42949427.330000] scsi2: istat 02 sstat0 06 dstat 00 dsp 007a[001c01e8] dsps 0x1d58c20
[42949427.330000] scsi2: Bus Reset detected, executing command 4f23b8c0, slot 4f6b8520, dsp 001c01e8[01e8]
[42949427.330000] failing command because of reset, slot 4f6b8520, cmnd 4f23b8c0
[42949427.330000] 53c700: sync 1 async 2
[42949427.340000] sr0: Hmm, seems the drive doesn't support multisession CD's
As far as I can see in the source code, those two lines decide if the phase mismatch is expected or not :
} else if(dsp >= to32bit(&slot->pSG[0].ins) &&
dsp <= to32bit(&slot->pSG[NCR_700_SG_SEGMENTS].ins)) {
This part of the code is really cryptic to me. If you have some doc or explaination for me, I'll be glad to
continue to troubleshoot this.
The working verbose dmesg can be found here :
https://www.tuxicoman.be/temp/dmesg-2.6.17-53c700-verbose
And the non working one here :
https://www.tuxicoman.be/temp/dmesg-2.6.18-53c700-verbose
Regards,
Guy
On Mon, 27 Nov 2006 08:37:14 -0700
Matthew Wilcox <matthew <at> wil.cx> wrote:
> On Mon, Nov 27, 2006 at 11:58:32AM +0100, Guy Martin wrote:
> > Some more detail on this issue.
> > This burner still works at commit 6391a11375de5e2bb1eb8481e54619761dc65d9f but breaks at commit 0f13fc09db68de92585558984bff1c51b87db72f.
>
> Thanks for narrowing it down so much!
>
> > commit 0f13fc09db68de92585558984bff1c51b87db72f
> > Author: James Bottomley <James.Bottomley <at> steeleye.com>
> > Date: Thu Jun 29 13:02:11 2006 -0400
> >
> > [SCSI] 53c700: fix breakage caused by the autosense update
> >
> > A bit of a brown paper bag issue. The previous patch to remove the soon
> > to be ripped out fields that were used in autosense actually broke the
> > driver. This patch fixes it and has been tested (honestly).
>
> If James says he tested it, I believe him. I *think* we're in the
> situation where it works on machines without an IOMMU and breaks on
> machines with an IOMMU. Joel, Guy, do I have that right?
> _______________________________________________
> parisc-linux mailing list
> parisc-linux <at> lists.parisc-linux.org
> http://lists.parisc-linux.org/mailman/listinfo/parisc-linux