Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-25 Thread Ondrej Zary
On Wednesday 25 November 2015 10:04:10 Ondrej Zary wrote:
> I think that PDMA should work with 53C400A too but seems that the driver was
> never able to do it.
> 
> Although there is code for port-mapped transfer in NCR5380_pread(),
> NCR53C400_register_offset is defined to 0 in the port-mapped case. The C400_
> register offsets are thus defined with negative offset:
> 
> #define C400_CONTROL_STATUS_REG NCR53C400_register_offset-8
> #define C400_BLOCK_COUNTER_REG   NCR53C400_register_offset-7
> #define C400_RESUME_TRANSFER_REG NCR53C400_register_offset-6
> #define C400_HOST_BUFFER NCR53C400_register_offset-4
> 
> This is probably OK for a port-mapped 53C400 (such card must have some glue
> decoding logic as the 53C400 chip itself can do memory-mapping only) because:
> 
> /*
>  * On NCR53C400 boards, NCR5380 registers are mapped 8 past
>  * the base address.
>  */
> if (overrides[current_override].board == BOARD_NCR53C400)
> instance->io_port += 8;
> 
> This means that on a 53C400, first 5380 register will be at base+8 and first
> C400_ register at base.
> 
> But on a 53C400A, the 5380 registers are mapped on the base address so the
> C400_ registers would be below the base, which is obviously wrong. I hope that
> PDMA will work if I fix the C400_ registers mapping.

A quick hack (breaks other chips, needs more work for proper mapping on all
chips):

--- a/drivers/scsi/NCR5380.h
+++ b/drivers/scsi/NCR5380.h
@@ -163,7 +163,7 @@
 /* Write any value to this register to start an ini mode DMA receive */
 #define START_DMA_INITIATOR_RECEIVE_REG 7  /* wo */

-#define C400_CONTROL_STATUS_REG NCR53C400_register_offset-8/* rw */
+#define C400_CONTROL_STATUS_REG 9  /* rw */

 #define CSR_RESET  0x80/* wo  Resets 53c400 */
 #define CSR_53C80_REG  0x80/* ro  5380 registers busy */
@@ -182,13 +182,13 @@
 #endif

 /* Number of 128-byte blocks to be transferred */
-#define C400_BLOCK_COUNTER_REG   NCR53C400_register_offset-7   /* rw */
+#define C400_BLOCK_COUNTER_REG   10/* rw */

 /* Resume transfer after disconnect */
-#define C400_RESUME_TRANSFER_REG NCR53C400_register_offset-6   /* wo */
+#define C400_RESUME_TRANSFER_REG 11/* wo */

 /* Access to host buffer stack */
-#define C400_HOST_BUFFER NCR53C400_register_offset-4   /* rw */
+#define C400_HOST_BUFFER 8 /* rw */


 /* Note : PHASE_* macros are based on the values of the STATUS register */
--- a/drivers/scsi/g_NCR5380.c
+++ b/drivers/scsi/g_NCR5380.c
@@ -323,7 +323,10 @@ static int __init generic_NCR5380_detect(struct 
scsi_host_template *tpnt)
 #endif
break;
case BOARD_NCR53C400A:
+   flags = FLAG_NO_DMA_FIXUP;
+#ifndef PSEUDO_DMA
flags = FLAG_NO_PSEUDO_DMA;
+#endif
ports = ncr_53c400a_ports;
break;
case BOARD_DTC3181E:
@@ -414,7 +417,8 @@ static int __init generic_NCR5380_detect(struct 
scsi_host_template *tpnt)
if (NCR5380_init(instance, flags))
goto out_unregister;

-   if (overrides[current_override].board == BOARD_NCR53C400)
+   if (overrides[current_override].board == BOARD_NCR53C400 ||
+   overrides[current_override].board == BOARD_NCR53C400A)
NCR5380_write(C400_CONTROL_STATUS_REG, CSR_BASE);

NCR5380_maybe_reset_bus(instance);


And PDMA works on I/O mapped 53C400A (HP C2502)!

# modprobe g_NCR5380 ncr_irq=7 ncr_addr=0x280 ncr_53c400a=1
[ 1799.939856] scsi host4: Generic NCR5380/NCR53C400 SCSI, io_port 0x280, 
n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, 
this_id 7, flags { NO_DMA_FIXUP }, options { AUTOPROBE_IRQ PSEUDO_DMA }
[ 1816.277018] scsi 4:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
PQ: 0 ANSI: 2 CCS
[ 1897.899648] sd 4:0:1:0: Attached scsi generic sg1 type 0
[ 1897.917842] sd 4:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
MiB)
[ 1897.920872] sd 4:0:1:0: [sdb] Write Protect is off
[ 1897.924744] sd 4:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
doesn't support DPO or FUA
[ 1897.967857]  sdb: sdb1
[ 1897.993822] sd 4:0:1:0: [sdb] Attached SCSI disk


Nice performance improvement (although it's slower than the memory-mapped
53C400):
# hdparm -t --direct /dev/sdb

/dev/sdb:
 Timing O_DIRECT disk reads:   2 MB in  3.99 seconds = 513.57 kB/sec


And it even fixed the IRQ:
# head /proc/interrupts
   CPU0
  0: 151228XT-PIC  timer
  1:  9XT-PIC  i8042
  2:  0XT-PIC  cascade
  7:115XT-PIC  NCR5380
  8:  1XT-PIC  rtc0
  9:  0XT-PIC  uhci_hcd:usb1, uhci_hcd:usb2
 10:   3256XT-PIC  eth0
 12:136XT-PIC  i8042
 14:   3833XT-PIC  pata_via


-- 
Ondrej Z

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-25 Thread Finn Thain

On Wed, 25 Nov 2015, Ondrej Zary wrote:

> On Wednesday 25 November 2015, Finn Thain wrote:
> > 
> > On Tue, 24 Nov 2015, Ondrej Zary wrote:
> > 
> > > Instead of fixing split transfers, simply forced everything 
> > > non-modulo-128 to PIO:
> > 
> > [...]
> > I don't have any reason to think that your card will allow part of 
> > a transfer to be performed with PDMA and the rest with PIO. So I don't 
> > really object to the patch.
> > 

>From looking at the datasheet, I think your patch is correct.

Your patch needs to be applied after mine, so if you will sign-off, I'll 
include it in the series with your Signed-off-by and "From:" header.

> > But I don't understand the need for it either: I have no idea what 
> > state the driver, chip and scsi bus were in when the 126-byte PIO 
> > transfer failed. If the PIO transfer didn't succeed then the entire 
> > command should have failed.
> 
> The patch was just a quick hack to confirm that PDMA is not completely 
> broken.
> Now we know that it mostly works so I can investigate the partial PIO 
> problem.
> 

There may not be any problem to investigate. Because this 53C80 core is 
embedded in other logic, it's hard to say whether or not the partial PIO 
algorithm could be expected to work at all.

Besides, the DMA errata don't apply to this core. And large transfers will 
always be divisible by 128 bytes so there's very little to be gained.

> [...]
> 
> 53C400A datasheet would be great too but haven't found any.

I don't have one either.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-25 Thread Ondrej Zary
On Wednesday 25 November 2015, Finn Thain wrote:
> 
> On Tue, 24 Nov 2015, Ondrej Zary wrote:
> 
> > On Tuesday 24 November 2015 10:13:17 Finn Thain wrote:
> > > 
> > > On Tue, 24 Nov 2015, Ondrej Zary wrote:
> > > 
> > > > On Tuesday 24 November 2015, Finn Thain wrote:
> > > > > 
> > > > > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > > > > 
> > > > > > 
> > > > > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > > > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > > > > it's HW limitation: non-modulo-128-byte transfers should use 
> > > > > > PIO.
> > > > > > 
> > > > > > Adding
> > > > > > transfersize = round_down(transfersize, 128);
> > > > > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > > > > 
> > > > > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are 
> > > > > > done using PIO, then eight 512-byte reads using PDMA and then it 
> > > > > > fails on a 254-byte read. First 128 bytes are read using PDMA 
> > > > > > and the next PDMA operation hangs waiting forever for the host 
> > > > > > buffer to be ready.
> > > > > > 
> > > > > 
> > > > > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't 
> > > > > see how that is possible given round_down(126, 128) == 0. Was this 
> > > > > the actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> > > > 
> > > > No 126-byte PDMA. The 126 bytes were probably lost (or mixed with 
> > > > the next read?).
> > > [...]
> > > > The next read was also 254 bytes so another 128-byte PDMA transfer.
> > > > 
> > > > Then modified NCR5380_information_transfer() to transfer the 
> > > > remaining data (126 bytes in this case) using PIO. It did not help, 
> > > > the next PDMA transfer failed too.
> > > > 
> > > 
> > > AFAICT, no change to NCR5380_information_transfer() should be needed. 
> > > It was always meant to cope with the need to split a transfer between 
> > > (P)DMA and PIO.
> > 
> > Instead of fixing split transfers, simply forced everything 
> > non-modulo-128 to PIO:
> 
> The need to split a transfer arises from early chip errata relating to DMA 
> and the workarounds for them (see the comments in the source). That's why 
> I believe that the driver was meant to be cope with this. But I don't have 
> any experimental evidence for it.
> 
> I'm almost certain that these errata aren't applicable to your hardware. 
> So I don't have any reason to think that your card will allow part of a 
> transfer to be performed with PDMA and the rest with PIO. So I don't 
> really object to the patch.
> 
> But I don't understand the need for it either: I have no idea what state 
> the driver, chip and scsi bus were in when the 126-byte PIO transfer 
> failed. If the PIO transfer didn't succeed then the entire command should 
> have failed.

The patch was just a quick hack to confirm that PDMA is not completely broken.
Now we know that it mostly works so I can investigate the partial PIO problem.

> > --- a/drivers/scsi/g_NCR5380.c
> > +++ b/drivers/scsi/g_NCR5380.c
> > @@ -703,6 +703,10 @@ static int generic_NCR5380_dma_xfer_len(struct 
> > scsi_cmnd *cmd)
> > !(cmd->SCp.this_residual % transfersize))
> > transfersize = 32 * 1024;
> > 
> > +   /* 53C400 datasheet: non-modulo-128-byte transfers should use PIO */
> 
> Do you have a download link for this datasheet?

http://bitsavers.trailing-edge.com/pdf/ncr/scsi/NCR_53C400.pdf

53C400A datasheet would be great too but haven't found any.
I think that PDMA should work with 53C400A too but seems that the driver was
never able to do it.

Although there is code for port-mapped transfer in NCR5380_pread(),
NCR53C400_register_offset is defined to 0 in the port-mapped case. The C400_
register offsets are thus defined with negative offset:

#define C400_CONTROL_STATUS_REG NCR53C400_register_offset-8
#define C400_BLOCK_COUNTER_REG   NCR53C400_register_offset-7
#define C400_RESUME_TRANSFER_REG NCR53C400_register_offset-6
#define C400_HOST_BUFFER NCR53C400_register_offset-4

This is probably OK for a port-mapped 53C400 (such card must have some glue
decoding logic as the 53C400 chip itself can do memory-mapping only) because:

/*
 * On NCR53C400 boards, NCR5380 registers are mapped 8 past
 * the base address.
 */
if (overrides[current_override].board == BOARD_NCR53C400)
instance->io_port += 8;

This means that on a 53C400, first 5380 register will be at base+8 and first
C400_ register at base.

But on a 53C400A, the 5380 registers are mapped on the base address so the
C400_ registers would be below the base, which is obviously wrong. I hope that
PDMA will work if I fix the C400_ registers mapping.

> > +   if (transfersize % 128)
> > +   transfersize = 0;
> > +
> > return transfersize;
> >  }
> > 
> > It seems to work and greatly improves performance:
> > # hdparm -t --direct /dev/sdb
> >

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Finn Thain

On Tue, 24 Nov 2015, Ondrej Zary wrote:

> On Tuesday 24 November 2015 10:13:17 Finn Thain wrote:
> > 
> > On Tue, 24 Nov 2015, Ondrej Zary wrote:
> > 
> > > On Tuesday 24 November 2015, Finn Thain wrote:
> > > > 
> > > > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > > > 
> > > > > 
> > > > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > > > it's HW limitation: non-modulo-128-byte transfers should use 
> > > > > PIO.
> > > > > 
> > > > > Adding
> > > > > transfersize = round_down(transfersize, 128);
> > > > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > > > 
> > > > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are 
> > > > > done using PIO, then eight 512-byte reads using PDMA and then it 
> > > > > fails on a 254-byte read. First 128 bytes are read using PDMA 
> > > > > and the next PDMA operation hangs waiting forever for the host 
> > > > > buffer to be ready.
> > > > > 
> > > > 
> > > > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't 
> > > > see how that is possible given round_down(126, 128) == 0. Was this 
> > > > the actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> > > 
> > > No 126-byte PDMA. The 126 bytes were probably lost (or mixed with 
> > > the next read?).
> > [...]
> > > The next read was also 254 bytes so another 128-byte PDMA transfer.
> > > 
> > > Then modified NCR5380_information_transfer() to transfer the 
> > > remaining data (126 bytes in this case) using PIO. It did not help, 
> > > the next PDMA transfer failed too.
> > > 
> > 
> > AFAICT, no change to NCR5380_information_transfer() should be needed. 
> > It was always meant to cope with the need to split a transfer between 
> > (P)DMA and PIO.
> 
> Instead of fixing split transfers, simply forced everything 
> non-modulo-128 to PIO:

The need to split a transfer arises from early chip errata relating to DMA 
and the workarounds for them (see the comments in the source). That's why 
I believe that the driver was meant to be cope with this. But I don't have 
any experimental evidence for it.

I'm almost certain that these errata aren't applicable to your hardware. 
So I don't have any reason to think that your card will allow part of a 
transfer to be performed with PDMA and the rest with PIO. So I don't 
really object to the patch.

But I don't understand the need for it either: I have no idea what state 
the driver, chip and scsi bus were in when the 126-byte PIO transfer 
failed. If the PIO transfer didn't succeed then the entire command should 
have failed.

> --- a/drivers/scsi/g_NCR5380.c
> +++ b/drivers/scsi/g_NCR5380.c
> @@ -703,6 +703,10 @@ static int generic_NCR5380_dma_xfer_len(struct scsi_cmnd 
> *cmd)
>   !(cmd->SCp.this_residual % transfersize))
>   transfersize = 32 * 1024;
> 
> + /* 53C400 datasheet: non-modulo-128-byte transfers should use PIO */

Do you have a download link for this datasheet?

> + if (transfersize % 128)
> + transfersize = 0;
> +
>   return transfersize;
>  }
> 
> It seems to work and greatly improves performance:
> # hdparm -t --direct /dev/sdb
> 
> /dev/sdb:
>  Timing O_DIRECT disk reads:   4 MB in  4.84 seconds = 846.15 kB/sec
> 

Sounds about right...

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Ondrej Zary
On Tuesday 24 November 2015 10:13:17 Finn Thain wrote:
> 
> On Tue, 24 Nov 2015, Ondrej Zary wrote:
> 
> > On Tuesday 24 November 2015, Finn Thain wrote:
> > > 
> > > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > > 
> > > > 
> > > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > > it's HW limitation: non-modulo-128-byte transfers should use PIO.
> > > > 
> > > > Adding
> > > > transfersize = round_down(transfersize, 128);
> > > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > > 
> > > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are done 
> > > > using PIO, then eight 512-byte reads using PDMA and then it fails on 
> > > > a 254-byte read. First 128 bytes are read using PDMA and the next 
> > > > PDMA operation hangs waiting forever for the host buffer to be 
> > > > ready.
> > > > 
> > > 
> > > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see 
> > > how that is possible given round_down(126, 128) == 0. Was this the 
> > > actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> > 
> > No 126-byte PDMA. The 126 bytes were probably lost (or mixed with the 
> > next read?).
> 
> When you said, the "PDMA operation hangs waiting forever", I figured that 
> you had hit an infinite loop in NCR5380_pread()... but now I'm lost.
> 
> My main concern here is to confirm that I didn't break anything e.g. with 
> patch 24 or 41. It would be nice to know that this hang is not the result 
> of a new bug.
> 
> > The next read was also 254 bytes so another 128-byte PDMA transfer.
> > 
> > Then modified NCR5380_information_transfer() to transfer the remaining 
> > data (126 bytes in this case) using PIO. It did not help, the next PDMA 
> > transfer failed too.
> > 
> 
> AFAICT, no change to NCR5380_information_transfer() should be needed. It 
> was always meant to cope with the need to split a transfer between (P)DMA 
> and PIO.

Instead of fixing split transfers, simply forced everything non-modulo-128 to
PIO:
--- a/drivers/scsi/g_NCR5380.c
+++ b/drivers/scsi/g_NCR5380.c
@@ -703,6 +703,10 @@ static int generic_NCR5380_dma_xfer_len(struct scsi_cmnd 
*cmd)
!(cmd->SCp.this_residual % transfersize))
transfersize = 32 * 1024;

+   /* 53C400 datasheet: non-modulo-128-byte transfers should use PIO */
+   if (transfersize % 128)
+   transfersize = 0;
+
return transfersize;
 }

It seems to work and greatly improves performance:
# hdparm -t --direct /dev/sdb

/dev/sdb:
 Timing O_DIRECT disk reads:   4 MB in  4.84 seconds = 846.15 kB/sec

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Ondrej Zary
On Tuesday 24 November 2015 13:03:17 Ondrej Zary wrote:
> On Tuesday 24 November 2015, Finn Thain wrote:
> > 
> > On Tue, 24 Nov 2015, Ondrej Zary wrote:
> > 
> > > On Tuesday 24 November 2015, Finn Thain wrote:
> > > > 
> > > > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > > > 
> > > > > 
> > > > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > > > it's HW limitation: non-modulo-128-byte transfers should use PIO.
> > > > > 
> > > > > Adding
> > > > > transfersize = round_down(transfersize, 128);
> > > > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > > > 
> > > > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are done 
> > > > > using PIO, then eight 512-byte reads using PDMA and then it fails on 
> > > > > a 254-byte read. First 128 bytes are read using PDMA and the next 
> > > > > PDMA operation hangs waiting forever for the host buffer to be 
> > > > > ready.
> > > > > 
> > > > 
> > > > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see 
> > > > how that is possible given round_down(126, 128) == 0. Was this the 
> > > > actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> > > 
> > > No 126-byte PDMA. The 126 bytes were probably lost (or mixed with the 
> > > next read?).
> > 
> > When you said, the "PDMA operation hangs waiting forever", I figured that 
> > you had hit an infinite loop in NCR5380_pread()... but now I'm lost.
> 
> The first 128-byte PDMA ended successfully (ignoring what happened to the
> remaining 126 bytes), then a next request for 254 bytes came. This resulted
> in a new 128-byte PDMA and that hanged (in one of its possibly infinite loops
> without a timeout).
> 
> > My main concern here is to confirm that I didn't break anything e.g. with 
> > patch 24 or 41. It would be nice to know that this hang is not the result 
> > of a new bug.
> 
> PDMA was already broken before so it's hard to tell. I can try to modify
> the unpatched driver to see if PDMA is broken the same way.

Just tested the driver without your patches and it's broken exactly the same
way.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Ondrej Zary
On Tuesday 24 November 2015, Finn Thain wrote:
> 
> On Tue, 24 Nov 2015, Ondrej Zary wrote:
> 
> > On Tuesday 24 November 2015, Finn Thain wrote:
> > > 
> > > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > > 
> > > > 
> > > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > > it's HW limitation: non-modulo-128-byte transfers should use PIO.
> > > > 
> > > > Adding
> > > > transfersize = round_down(transfersize, 128);
> > > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > > 
> > > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are done 
> > > > using PIO, then eight 512-byte reads using PDMA and then it fails on 
> > > > a 254-byte read. First 128 bytes are read using PDMA and the next 
> > > > PDMA operation hangs waiting forever for the host buffer to be 
> > > > ready.
> > > > 
> > > 
> > > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see 
> > > how that is possible given round_down(126, 128) == 0. Was this the 
> > > actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> > 
> > No 126-byte PDMA. The 126 bytes were probably lost (or mixed with the 
> > next read?).
> 
> When you said, the "PDMA operation hangs waiting forever", I figured that 
> you had hit an infinite loop in NCR5380_pread()... but now I'm lost.

The first 128-byte PDMA ended successfully (ignoring what happened to the
remaining 126 bytes), then a next request for 254 bytes came. This resulted
in a new 128-byte PDMA and that hanged (in one of its possibly infinite loops
without a timeout).

> My main concern here is to confirm that I didn't break anything e.g. with 
> patch 24 or 41. It would be nice to know that this hang is not the result 
> of a new bug.

PDMA was already broken before so it's hard to tell. I can try to modify
the unpatched driver to see if PDMA is broken the same way.

> > The next read was also 254 bytes so another 128-byte PDMA transfer.
> > 
> > Then modified NCR5380_information_transfer() to transfer the remaining 
> > data (126 bytes in this case) using PIO. It did not help, the next PDMA 
> > transfer failed too.
> > 
> 
> AFAICT, no change to NCR5380_information_transfer() should be needed. It 
> was always meant to cope with the need to split a transfer between (P)DMA 
> and PIO.
> 
> If the target is expecting the remaining 126 bytes, it will keep the bus 
> in DATA OUT phase, and the next iteration of the loop
>   while ((cmd = hostdata->connected)) { }
> will call NCR5380_transfer_pio() for the remaining bytes. If the target 
> never asserts REQ, that transfer will never happen, but then the command 
> should timeout and get aborted, to handle the possibility that a "PDMA 
> operation hangs waiting forever".

Thanks for explanation.

> A protocol analyzer would be useful to debug this. I get a lot of value 
> from a bus terminator block that has LEDs for the various control signals.
> Failing that, you might need to place,
> #define NDEBUG (NDEBUG_INFORMATION | NDEBUG_HANDSHAKE | NDEBUG_PIO | 
> NDEBUG_DMA | NDEBUG_MAIN)
> at the top of g_NCR5380.c.


-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Finn Thain

On Tue, 24 Nov 2015, Ondrej Zary wrote:

> On Tuesday 24 November 2015, Finn Thain wrote:
> > 
> > On Mon, 23 Nov 2015, Ondrej Zary wrote:
> > 
> > > 
> > > PDMA seems to be broken in multiple ways. NCR5380_pread cannot 
> > > process less than 128 bytes. In fact, 53C400 datasheet says that 
> > > it's HW limitation: non-modulo-128-byte transfers should use PIO.
> > > 
> > > Adding
> > > transfersize = round_down(transfersize, 128);
> > > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > > 
> > > After modprobe, some small reads (8, 4, 24 and 64 bytes) are done 
> > > using PIO, then eight 512-byte reads using PDMA and then it fails on 
> > > a 254-byte read. First 128 bytes are read using PDMA and the next 
> > > PDMA operation hangs waiting forever for the host buffer to be 
> > > ready.
> > > 
> > 
> > A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see 
> > how that is possible given round_down(126, 128) == 0. Was this the 
> > actual 'len' argument to NCR5380_pread() in g_NCR5380.c?
> 
> No 126-byte PDMA. The 126 bytes were probably lost (or mixed with the 
> next read?).

When you said, the "PDMA operation hangs waiting forever", I figured that 
you had hit an infinite loop in NCR5380_pread()... but now I'm lost.

My main concern here is to confirm that I didn't break anything e.g. with 
patch 24 or 41. It would be nice to know that this hang is not the result 
of a new bug.

> The next read was also 254 bytes so another 128-byte PDMA transfer.
> 
> Then modified NCR5380_information_transfer() to transfer the remaining 
> data (126 bytes in this case) using PIO. It did not help, the next PDMA 
> transfer failed too.
> 

AFAICT, no change to NCR5380_information_transfer() should be needed. It 
was always meant to cope with the need to split a transfer between (P)DMA 
and PIO.

If the target is expecting the remaining 126 bytes, it will keep the bus 
in DATA OUT phase, and the next iteration of the loop
while ((cmd = hostdata->connected)) { }
will call NCR5380_transfer_pio() for the remaining bytes. If the target 
never asserts REQ, that transfer will never happen, but then the command 
should timeout and get aborted, to handle the possibility that a "PDMA 
operation hangs waiting forever".

A protocol analyzer would be useful to debug this. I get a lot of value 
from a bus terminator block that has LEDs for the various control signals.
Failing that, you might need to place,
#define NDEBUG (NDEBUG_INFORMATION | NDEBUG_HANDSHAKE | NDEBUG_PIO | NDEBUG_DMA 
| NDEBUG_MAIN)
at the top of g_NCR5380.c.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-24 Thread Ondrej Zary
On Tuesday 24 November 2015, Finn Thain wrote:
> 
> On Mon, 23 Nov 2015, Ondrej Zary wrote:
> 
> > 
> > PDMA seems to be broken in multiple ways. NCR5380_pread cannot process 
> > less than 128 bytes. In fact, 53C400 datasheet says that it's HW 
> > limitation: non-modulo-128-byte transfers should use PIO.
> > 
> > Adding
> > transfersize = round_down(transfersize, 128);
> > to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> > 
> > After modprobe, some small reads (8, 4, 24 and 64 bytes) are done using 
> > PIO, then eight 512-byte reads using PDMA and then it fails on a 
> > 254-byte read. First 128 bytes are read using PDMA and the next PDMA 
> > operation hangs waiting forever for the host buffer to be ready.
> > 
> 
> A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see how
> that is possible given round_down(126, 128) == 0. Was this the actual
> 'len' argument to NCR5380_pread() in g_NCR5380.c?

No 126-byte PDMA. The 126 bytes were probably lost (or mixed with the next
read?). The next read was also 254 bytes so another 128-byte PDMA transfer.

Then modified NCR5380_information_transfer() to transfer the remaining data
(126 bytes in this case) using PIO. It did not help, the next PDMA transfer
failed too.

> BTW, I presume that FLAG_NO_DMA_FIXUPS was set (which is the case if you
> pass ncr_53c400=1 option with modprobe). Otherwise you could see PDMA IO
> sizes like 127 etc.

Yes, the flag was set.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-23 Thread Finn Thain

On Mon, 23 Nov 2015, Ondrej Zary wrote:

> 
> PDMA seems to be broken in multiple ways. NCR5380_pread cannot process 
> less than 128 bytes. In fact, 53C400 datasheet says that it's HW 
> limitation: non-modulo-128-byte transfers should use PIO.
> 
> Adding
> transfersize = round_down(transfersize, 128);
> to generic_NCR5380_dma_xfer_len() improves the situation a bit.
> 
> After modprobe, some small reads (8, 4, 24 and 64 bytes) are done using 
> PIO, then eight 512-byte reads using PDMA and then it fails on a 
> 254-byte read. First 128 bytes are read using PDMA and the next PDMA 
> operation hangs waiting forever for the host buffer to be ready.
> 

A 128-byte PDMA receive followed by 126-byte PDMA receive? I don't see how
that is possible given round_down(126, 128) == 0. Was this the actual
'len' argument to NCR5380_pread() in g_NCR5380.c?

BTW, I presume that FLAG_NO_DMA_FIXUPS was set (which is the case if you
pass ncr_53c400=1 option with modprobe). Otherwise you could see PDMA IO
sizes like 127 etc.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-23 Thread Ondrej Zary
On Sunday 22 November 2015 00:32:31 Finn Thain wrote:
> 
> On Sat, 21 Nov 2015, Ondrej Zary wrote:
> 
> > On Saturday 21 November 2015 02:58:57 Finn Thain wrote:
> > 
> > > 
> > > I gather that your setup here is a QUANTUM LP240S target with Domex 
> > > 3181 (DTC-436) card and g_NCR5380 module. I've been testing a similar 
> > > setup: QUANTUM LPS540S target with a Domex 3191D (DTC-536) card and 
> > > dmx3191d module. In both setups PIO is used exclusively, no IRQ is 
> > > used, and FLAG_DTC3181E is set. I didn't see any issues in my tests, 
> > > so your results are surprising.
> > 
> > I agree that the results are surprising. Even tried 2.4 kernels (Debian 
> > 3.1) and even 2.2 (Debian 3.0) and nothing worked. HW is fine - the 
> > drive is accessible in Windows 98 (with Domex driver installed).
> 
> That's good to know (and very thorough).
> 
> > 
> > Now testing the Canon FG2-5202 controller - a simple 8-bit ISA card with 
> > only two chips: NCR 53C400 and 74LS245. It's memory mapped, IRQ 
> > hardwired to 7.
> > 
> > # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> > 
> > [ 1245.919223] scsi2 : interrupts not enabled. for better interactive 
> > performance,
> > [ 1245.919326] scsi2 : please jumper the board for a free IRQ.
> > [ 1245.919389] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> > n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> > 128, this_id 7, flags { NCR53C400 }, USLEEP_POLL 3, USLEEP_WAITLONG 1250, 
> > options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> > [ 1246.376738] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 
> > 4.6  PQ: 0 ANSI: 2 CCS
> > [ 1248.202198] sd 2:0:1:0: Attached scsi generic sg1 type 0
> > [ 1248.420856] 53C400r: no 53C80 gated irq after transfer
> > [ 1248.420948] 53C400r: no end dma signal
> > [ 1248.422459] sd 2:0:1:0: [sdb] Sector size 0 reported, assuming 512.
> > 
> > Seems that the PSEUDO_DMA is broken.
> 
> That's been my experience with mac_scsi also (going back 10 years). I'm 
> told that it used to work in v2.2. PIO was always usable though hopelessly 
> slow.
> 
> I haven't yet done any work on the PDMA problem with mac_scsi because 
> crashing bugs and the forked core driver seemed to be the more pressing 
> problems. And resolving the fork has implications for all of the DMA 
> variations anyway.

PDMA seems to be broken in multiple ways. NCR5380_pread cannot process less
than 128 bytes. In fact, 53C400 datasheet says that it's HW limitation:
non-modulo-128-byte transfers should use PIO.

Adding
transfersize = round_down(transfersize, 128);
to generic_NCR5380_dma_xfer_len() improves the situation a bit.

After modprobe, some small reads (8, 4, 24 and 64 bytes) are done using PIO,
then eight 512-byte reads using PDMA and then it fails on a 254-byte read.
First 128 bytes are read using PDMA and the next PDMA operation hangs waiting
forever for the host buffer to be ready.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-21 Thread Finn Thain

On Sat, 21 Nov 2015, Ondrej Zary wrote:

> On Saturday 21 November 2015 02:58:57 Finn Thain wrote:
> 
> > 
> > I gather that your setup here is a QUANTUM LP240S target with Domex 
> > 3181 (DTC-436) card and g_NCR5380 module. I've been testing a similar 
> > setup: QUANTUM LPS540S target with a Domex 3191D (DTC-536) card and 
> > dmx3191d module. In both setups PIO is used exclusively, no IRQ is 
> > used, and FLAG_DTC3181E is set. I didn't see any issues in my tests, 
> > so your results are surprising.
> 
> I agree that the results are surprising. Even tried 2.4 kernels (Debian 
> 3.1) and even 2.2 (Debian 3.0) and nothing worked. HW is fine - the 
> drive is accessible in Windows 98 (with Domex driver installed).

That's good to know (and very thorough).

> 
> Now testing the Canon FG2-5202 controller - a simple 8-bit ISA card with 
> only two chips: NCR 53C400 and 74LS245. It's memory mapped, IRQ 
> hardwired to 7.
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [ 1245.919223] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [ 1245.919326] scsi2 : please jumper the board for a free IRQ.
> [ 1245.919389] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NCR53C400 }, USLEEP_POLL 3, USLEEP_WAITLONG 1250, 
> options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> [ 1246.376738] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [ 1248.202198] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [ 1248.420856] 53C400r: no 53C80 gated irq after transfer
> [ 1248.420948] 53C400r: no end dma signal
> [ 1248.422459] sd 2:0:1:0: [sdb] Sector size 0 reported, assuming 512.
> 
> Seems that the PSEUDO_DMA is broken.

That's been my experience with mac_scsi also (going back 10 years). I'm 
told that it used to work in v2.2. PIO was always usable though hopelessly 
slow.

I haven't yet done any work on the PDMA problem with mac_scsi because 
crashing bugs and the forked core driver seemed to be the more pressing 
problems. And resolving the fork has implications for all of the DMA 
variations anyway.

> After adding FLAG_NO_PSEUDO_DMA:
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [   67.974362] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [   67.974463] scsi2 : please jumper the board for a free IRQ.
> [   67.974526] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NCR53C400 NO_PSEUDO_DMA }, USLEEP_POLL 3, 
> USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> [   68.432728] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [   70.258258] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [   70.277265] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
> MiB)
> [   70.482252] sd 2:0:1:0: [sdb] Write Protect is off
> [   70.482335] sd 2:0:1:0: [sdb] Mode Sense: 8b 00 00 08
> [   70.889646] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> doesn't support DPO or FUA
> [   73.159513]  sdb: sdb1
> [   74.617099] sd 2:0:1:0: [sdb] Attached SCSI disk
> 
> Yeah, first success! I can even mount the filesystem, although it takes ages
> (a minute) and these messages:
> [  160.872074] sd 2:0:1:0: [sdb] aborting command
> [  161.816083] sd 2:0:1:0: [sdb] aborting command
> 
> # hdparm -t --direct /dev/sdb
> 
> /dev/sdb:
> [  244.840075] sd 2:0:1:0: [sdb] aborting command
> [  248.824078] sd 2:0:1:0: [sdb] aborting command
> [  293.864069] sd 2:0:1:0: [sdb] aborting command
> [  297.824075] sd 2:0:1:0: [sdb] aborting command
> [  319.765020] blk_update_request: critical target error, dev sdb, sector 0
> [  319.972994] blk_update_request: critical target error, dev sdb, sector 0
>  Timing O_DIRECT disk reads:   2 MB in 105.26 seconds =  19.46 kB/sec
> 
> 
> 
> With your patches (and adding FLAG_NO_PSEUDO_DMA), modprobe is slower but
> mount faster (4 seconds) and then works better:
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [  130.126185] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [  130.126284] scsi2 : please jumper the board for a free IRQ.
> [  130.126347] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NO_PSEUDO_DMA }, options { AUTOPROBE_IRQ PSEUDO_DMA }
> [  145.221755] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [  220.629912] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [  220.651400] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
> MiB)
> [  220.654061] sd 2:0:1:0: [sdb] Write Protect is off
> [  220.659344] sd 2:0:1:0: [sdb] Write cache: enabled, read

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-21 Thread Ondrej Zary
On Saturday 21 November 2015 14:01:39 Ondrej Zary wrote:
> On Saturday 21 November 2015 02:58:57 Finn Thain wrote:
> > 
> > Hi Ondrej,
> > 
> > On Fri, 20 Nov 2015, Ondrej Zary wrote:
> > 
> > > On Friday 20 November 2015 02:41:19 Finn Thain wrote:
> > > > 
> > > > 
> > > > My tests involved 3 different scsi targets (two disks and a CD-ROM) 
> > > > but none of these send a SDTR. Your log says the driver correctly 
> > > > rejected the SDTR message but that doesn't mean the target actually 
> > > > went to MSG IN phase and got the message. Do you have any older 
> > > > targets you can test?
> > > 

[...]

> > > 
> > 
> > Thanks for these test results! It looks like READ(10) commands don't work. 
> > I don't know the cause of the failures but it appears to be an old bug. 
> > Did you find any regression?
> > 
> > I gather that your setup here is a QUANTUM LP240S target with Domex 3181 
> > (DTC-436) card and g_NCR5380 module. I've been testing a similar setup: 
> > QUANTUM LPS540S target with a Domex 3191D (DTC-536) card and dmx3191d 
> > module. In both setups PIO is used exclusively, no IRQ is used, and 
> > FLAG_DTC3181E is set. I didn't see any issues in my tests, so your results 
> > are surprising.
> 
> I agree that the results are surprising. Even tried 2.4 kernels (Debian 3.1)
> and even 2.2 (Debian 3.0) and nothing worked.
> HW is fine - the drive is accessible in Windows 98 (with Domex driver
> installed).
> 
> Now testing the Canon FG2-5202 controller - a simple 8-bit ISA card with only
> two chips: NCR 53C400 and 74LS245. It's memory mapped, IRQ hardwired to 7.
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [ 1245.919223] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [ 1245.919326] scsi2 : please jumper the board for a free IRQ.
> [ 1245.919389] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NCR53C400 }, USLEEP_POLL 3, USLEEP_WAITLONG 1250, 
> options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> [ 1246.376738] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [ 1248.202198] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [ 1248.420856] 53C400r: no 53C80 gated irq after transfer
> [ 1248.420948] 53C400r: no end dma signal
> [ 1248.422459] sd 2:0:1:0: [sdb] Sector size 0 reported, assuming 512.
> 
> Seems that the PSEUDO_DMA is broken. After adding FLAG_NO_PSEUDO_DMA:
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [   67.974362] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [   67.974463] scsi2 : please jumper the board for a free IRQ.
> [   67.974526] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NCR53C400 NO_PSEUDO_DMA }, USLEEP_POLL 3, 
> USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> [   68.432728] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [   70.258258] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [   70.277265] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
> MiB)
> [   70.482252] sd 2:0:1:0: [sdb] Write Protect is off
> [   70.482335] sd 2:0:1:0: [sdb] Mode Sense: 8b 00 00 08
> [   70.889646] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> doesn't support DPO or FUA
> [   73.159513]  sdb: sdb1
> [   74.617099] sd 2:0:1:0: [sdb] Attached SCSI disk
> 
> Yeah, first success! I can even mount the filesystem, although it takes ages
> (a minute) and these messages:
> [  160.872074] sd 2:0:1:0: [sdb] aborting command
> [  161.816083] sd 2:0:1:0: [sdb] aborting command
> 
> # hdparm -t --direct /dev/sdb
> 
> /dev/sdb:
> [  244.840075] sd 2:0:1:0: [sdb] aborting command
> [  248.824078] sd 2:0:1:0: [sdb] aborting command
> [  293.864069] sd 2:0:1:0: [sdb] aborting command
> [  297.824075] sd 2:0:1:0: [sdb] aborting command
> [  319.765020] blk_update_request: critical target error, dev sdb, sector 0
> [  319.972994] blk_update_request: critical target error, dev sdb, sector 0
>  Timing O_DIRECT disk reads:   2 MB in 105.26 seconds =  19.46 kB/sec
> 
> 
> 
> With your patches (and adding FLAG_NO_PSEUDO_DMA), modprobe is slower but
> mount faster (4 seconds) and then works better:
> 
> # modprobe g_NCR5380_mmio ncr_irq=255 ncr_addr=0xd8000 ncr_53c400=1
> 
> [  130.126185] scsi2 : interrupts not enabled. for better interactive 
> performance,
> [  130.126284] scsi2 : please jumper the board for a free IRQ.
> [  130.126347] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, 
> n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> 128, this_id 7, flags { NO_PSEUDO_DMA }, options { AUTOPROBE_IRQ PSEUDO_DMA }
> [  145.221755] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI:

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-21 Thread Ondrej Zary
On Saturday 21 November 2015 02:58:57 Finn Thain wrote:
> 
> Hi Ondrej,
> 
> On Fri, 20 Nov 2015, Ondrej Zary wrote:
> 
> > On Friday 20 November 2015 02:41:19 Finn Thain wrote:
> > > 
> > > 
> > > My tests involved 3 different scsi targets (two disks and a CD-ROM) 
> > > but none of these send a SDTR. Your log says the driver correctly 
> > > rejected the SDTR message but that doesn't mean the target actually 
> > > went to MSG IN phase and got the message. Do you have any older 
> > > targets you can test?
> > 
> > Another disk, without patches:
> > 
> > [   84.481582] pnp 01:01.00: activated
> > [   84.489650] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> > 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 3, 
> > USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> > [   84.953332] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 
> > 4.6  PQ: 0 ANSI: 2 CCS
> > [   86.786475] sd 2:0:1:0: Attached scsi generic sg1 type 0
> > [   86.793753] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 
> > MB/234 MiB)
> > [   86.998555] sd 2:0:1:0: [sdb] Write Protect is off
> > [   87.406068] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> > doesn't support DPO or FUA
> > [  118.888271] sd 2:0:1:0: [sdb] aborting command
> > [  118.888738] sd 2:0:1:0: [sdb] aborting command
> > 
> > With patches:
> > 
> > [  258.473748] pnp 01:01.00: activated
> > [  258.483592] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 
> > 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { AUTOPROBE_IRQ 
> > PSEUDO_DMA }
> > [  261.347632] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 
> > 4.6  PQ: 0 ANSI: 2 CCS
> > [  275.560451] sd 2:0:1:0: Attached scsi generic sg1 type 0
> > [  275.632519] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 
> > MB/234 MiB)
> > [  275.635533] sd 2:0:1:0: [sdb] Write Protect is off
> > [  275.642315] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> > doesn't support DPO or FUA
> > [  469.076347] sd 2:0:1:0: [sdb] FAILED Result: hostbyte=DID_TIME_OUT 
> > driverbyte=DRIVER_SENSE
> > [  469.076613] sd 2:0:1:0: [sdb] Sense Key : Aborted Command [current]
> > [  469.076851] sd 2:0:1:0: [sdb] Add. Sense: No additional sense information
> > [  469.077086] sd 2:0:1:0: [sdb] CDB: Read(10) 28 00 00 00 00 02 00 00 02 00
> > [  469.077306] blk_update_request: I/O error, dev sdb, sector 2
> > [  469.077522] Buffer I/O error on dev sdb, logical block 1, async page read
> > [  480.108255] INFO: task kworker/u2:2:60 blocked for more than 120 seconds.
> > [  480.109773]   Not tainted 4.3.0-rc1+ #74
> > [  480.109973] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> > this message.
> > [  480.110179] kworker/u2:2D 0040 060  2 0x
> > [  480.110671] Workqueue: events_unbound async_run_entry_fn
> > [  480.110999]  cf9e8780 0046 2eff25f7 0040 c117f111 2ee82733 
> > 0040 0016fec4
> > [  480.112390]   cfaa6000  7fff c139c7d2 c139c504 
> > 7fff c139d9d3
> > [  480.113661]  0040 cfaa5cfc c106f460 00161108  c648 
> > 2106dcce 0040
> > [  480.114893] Call Trace:
> > [  480.115124]  [] ? blk_queue_bio+0x1e8/0x1fb
> > [  480.115344]  [] ? bit_wait_io_timeout+0x3d/0x3d
> > [  480.115564]  [] ? schedule+0x5b/0x67
> > [  480.115794]  [] ? schedule_timeout+0x13/0xc5
> > [  480.116007]  [] ? timekeeping_get_ns+0x10/0x69
> > [  480.116406]  [] ? bit_wait_io_timeout+0x3d/0x3d
> > [  480.116636]  [] ? ktime_get+0x38/0x48
> > [  480.116843]  [] ? io_schedule_timeout+0x83/0xd7
> > [  480.117062]  [] ? bit_wait_io+0x21/0x26
> > [  480.117256]  [] ? __wait_on_bit+0x2f/0x5a
> > [  480.117486]  [] ? blkdev_readpages+0x15/0x15
> > [  480.117704]  [] ? wait_on_page_bit+0x57/0x5e
> > [  480.117942]  [] ? wake_atomic_t_function+0x2a/0x2a
> > [  480.118151]  [] ? wait_on_page_read+0xf/0x2a
> > [  480.118373]  [] ? do_read_cache_page+0x8e/0x116
> > [  480.118587]  [] ? blkdev_readpages+0x15/0x15
> > [  480.118809]  [] ? read_cache_page+0x14/0x18
> > [  480.119008]  [] ? read_dev_sector+0x25/0x57
> > [  480.119222]  [] ? adfspart_check_ICS+0x30/0x1ac
> > [  480.119438]  [] ? vsnprintf+0x78/0x25d
> > [  480.119671]  [] ? snprintf+0x16/0x18
> > [  480.119874]  [] ? check_partition+0xd7/0x165
> > [  480.120253]  [] ? rescan_partitions+0x95/0x283
> > [  480.120443]  [] ? scsi_block_when_processing_errors+0x13/0xae
> > [  480.120693]  [] ? mutex_lock+0x9/0x21
> > [  480.120915]  [] ? __blkdev_get+0x155/0x2f6
> > [  480.121133]  [] ? blkdev_get+0x148/0x258
> > [  480.121350]  [] ? unlock_new_inode+0x36/0x3c
> > [  480.121570]  [] ? bdget+0xdc/0xe6
> > [  480.121761]  [] ? add_disk+0x221/0x368
> > [  480.121996]  [] ? sd_probe_async+0xed/0x157
> > [  480.122214]  [] ? async_run_entry

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Finn Thain

Hi Ondrej,

On Fri, 20 Nov 2015, Ondrej Zary wrote:

> On Friday 20 November 2015 02:41:19 Finn Thain wrote:
> > 
> > 
> > My tests involved 3 different scsi targets (two disks and a CD-ROM) 
> > but none of these send a SDTR. Your log says the driver correctly 
> > rejected the SDTR message but that doesn't mean the target actually 
> > went to MSG IN phase and got the message. Do you have any older 
> > targets you can test?
> 
> Another disk, without patches:
> 
> [   84.481582] pnp 01:01.00: activated
> [   84.489650] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, 
> this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 3, USLEEP_WAITLONG 
> 1250, options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
> [   84.953332] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [   86.786475] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [   86.793753] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
> MiB)
> [   86.998555] sd 2:0:1:0: [sdb] Write Protect is off
> [   87.406068] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> doesn't support DPO or FUA
> [  118.888271] sd 2:0:1:0: [sdb] aborting command
> [  118.888738] sd 2:0:1:0: [sdb] aborting command
> 
> With patches:
> 
> [  258.473748] pnp 01:01.00: activated
> [  258.483592] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, 
> this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { AUTOPROBE_IRQ 
> PSEUDO_DMA }
> [  261.347632] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
> PQ: 0 ANSI: 2 CCS
> [  275.560451] sd 2:0:1:0: Attached scsi generic sg1 type 0
> [  275.632519] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
> MiB)
> [  275.635533] sd 2:0:1:0: [sdb] Write Protect is off
> [  275.642315] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
> doesn't support DPO or FUA
> [  469.076347] sd 2:0:1:0: [sdb] FAILED Result: hostbyte=DID_TIME_OUT 
> driverbyte=DRIVER_SENSE
> [  469.076613] sd 2:0:1:0: [sdb] Sense Key : Aborted Command [current]
> [  469.076851] sd 2:0:1:0: [sdb] Add. Sense: No additional sense information
> [  469.077086] sd 2:0:1:0: [sdb] CDB: Read(10) 28 00 00 00 00 02 00 00 02 00
> [  469.077306] blk_update_request: I/O error, dev sdb, sector 2
> [  469.077522] Buffer I/O error on dev sdb, logical block 1, async page read
> [  480.108255] INFO: task kworker/u2:2:60 blocked for more than 120 seconds.
> [  480.109773]   Not tainted 4.3.0-rc1+ #74
> [  480.109973] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> this message.
> [  480.110179] kworker/u2:2D 0040 060  2 0x
> [  480.110671] Workqueue: events_unbound async_run_entry_fn
> [  480.110999]  cf9e8780 0046 2eff25f7 0040 c117f111 2ee82733 
> 0040 0016fec4
> [  480.112390]   cfaa6000  7fff c139c7d2 c139c504 
> 7fff c139d9d3
> [  480.113661]  0040 cfaa5cfc c106f460 00161108  c648 
> 2106dcce 0040
> [  480.114893] Call Trace:
> [  480.115124]  [] ? blk_queue_bio+0x1e8/0x1fb
> [  480.115344]  [] ? bit_wait_io_timeout+0x3d/0x3d
> [  480.115564]  [] ? schedule+0x5b/0x67
> [  480.115794]  [] ? schedule_timeout+0x13/0xc5
> [  480.116007]  [] ? timekeeping_get_ns+0x10/0x69
> [  480.116406]  [] ? bit_wait_io_timeout+0x3d/0x3d
> [  480.116636]  [] ? ktime_get+0x38/0x48
> [  480.116843]  [] ? io_schedule_timeout+0x83/0xd7
> [  480.117062]  [] ? bit_wait_io+0x21/0x26
> [  480.117256]  [] ? __wait_on_bit+0x2f/0x5a
> [  480.117486]  [] ? blkdev_readpages+0x15/0x15
> [  480.117704]  [] ? wait_on_page_bit+0x57/0x5e
> [  480.117942]  [] ? wake_atomic_t_function+0x2a/0x2a
> [  480.118151]  [] ? wait_on_page_read+0xf/0x2a
> [  480.118373]  [] ? do_read_cache_page+0x8e/0x116
> [  480.118587]  [] ? blkdev_readpages+0x15/0x15
> [  480.118809]  [] ? read_cache_page+0x14/0x18
> [  480.119008]  [] ? read_dev_sector+0x25/0x57
> [  480.119222]  [] ? adfspart_check_ICS+0x30/0x1ac
> [  480.119438]  [] ? vsnprintf+0x78/0x25d
> [  480.119671]  [] ? snprintf+0x16/0x18
> [  480.119874]  [] ? check_partition+0xd7/0x165
> [  480.120253]  [] ? rescan_partitions+0x95/0x283
> [  480.120443]  [] ? scsi_block_when_processing_errors+0x13/0xae
> [  480.120693]  [] ? mutex_lock+0x9/0x21
> [  480.120915]  [] ? __blkdev_get+0x155/0x2f6
> [  480.121133]  [] ? blkdev_get+0x148/0x258
> [  480.121350]  [] ? unlock_new_inode+0x36/0x3c
> [  480.121570]  [] ? bdget+0xdc/0xe6
> [  480.121761]  [] ? add_disk+0x221/0x368
> [  480.121996]  [] ? sd_probe_async+0xed/0x157
> [  480.122214]  [] ? async_run_entry_fn+0x2c/0xad
> [  480.122437]  [] ? process_one_work+0x130/0x21f
> [  480.122639]  [] ? worker_thread+0x18a/0x247
> [  480.122854]  [] ? process_scheduled_works+0x1d/0x1d
> [  480.123069]  [] ? kthread+0x7c/0x81
> [  480.123288]  [] ? ret_from_kernel_th

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Ondrej Zary
On Friday 20 November 2015 02:41:19 Finn Thain wrote:
> 
> On Thu, 19 Nov 2015, Ondrej Zary wrote:
> 
> > On Thursday 19 November 2015 03:24:56 Finn Thain wrote:
> >
> > > On Wed, 18 Nov 2015, Ondrej Zary wrote:
> > >
> > > >
> > > > I have some NCR5380 ISA cards and can test them.
> > >
> > > Thanks Ondrej. I've no idea which ISA drivers are presently working in 
> > > mainline. Finding regressions may be more difficult than usual ;-)
> > 
> > You're right... looks very broken:
> > 
> > [   62.577194] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> > sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 
> > 3, USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA 
> > NCR53C400 }
> > [   62.796635] scsi 2:0:0:0: Direct-Access IBM  0663 e  
> >   PQ: 0 ANSI: 2
> > [   63.878494] sd 2:0:0:0: Attached scsi generic sg1 type 0
> > [   95.848260] sd 2:0:0:0: aborting command
> > 
> > And the system hangs completely.
> > 
> 
> Yes. That was the usual failure mode. The old EH abort routine is fatal. 
> Up until I disabled PDMA by default for mac_scsi (in v3.19), that driver 
> would do the same thing.
> 
> > It's much better with your patches, but still not great :)
> > 
> 
> Pleased to hear it :)
> 
> > [   93.963264] pnp 01:01.00: [io  0x0240-0x025f]
> > [   93.963493] pnp 01:01.00: [irq 5]
> > [   93.965768] pnp 01:01.00: activated
> > [   93.977147] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> > sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { 
> > AUTOPROBE_IRQ PSEUDO_DMA }
> > [   93.987527] scsi host2: rejecting message
> > [   93.987647] Synchronous Data Transfer Request period = 100 ns offset = 12
> > [   94.001219] scsi 2:0:0:0: Direct-Access IBM  0663 e  
> >   PQ: 0 ANSI: 2
> > [  113.000794] sd 2:0:0:0: Attached scsi generic sg1 type 0
> 
> I'd be interested to know what commands were in play in that 19 second 
> interval. Might need to use scsi_logging_level to figure that out.
> 
> My tests involved 3 different scsi targets (two disks and a CD-ROM) but 
> none of these send a SDTR. Your log says the driver correctly rejected the 
> SDTR message but that doesn't mean the target actually went to MSG IN 
> phase and got the message. Do you have any older targets you can test?

Another disk, without patches:

[   84.481582] pnp 01:01.00: activated
[   84.489650] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, 
this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 3, USLEEP_WAITLONG 
1250, options { AUTOPROBE_IRQ PSEUDO_DMA NCR53C400 }
[   84.953332] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
PQ: 0 ANSI: 2 CCS
[   86.786475] sd 2:0:1:0: Attached scsi generic sg1 type 0
[   86.793753] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
MiB)
[   86.998555] sd 2:0:1:0: [sdb] Write Protect is off
[   87.406068] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
doesn't support DPO or FUA
[  118.888271] sd 2:0:1:0: [sdb] aborting command
[  118.888738] sd 2:0:1:0: [sdb] aborting command

With patches:

[  258.473748] pnp 01:01.00: activated
[  258.483592] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, 
this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { AUTOPROBE_IRQ PSEUDO_DMA 
}
[  261.347632] scsi 2:0:1:0: Direct-Access QUANTUM  LP240S GM240S01X 4.6  
PQ: 0 ANSI: 2 CCS
[  275.560451] sd 2:0:1:0: Attached scsi generic sg1 type 0
[  275.632519] sd 2:0:1:0: [sdb] 479350 512-byte logical blocks: (245 MB/234 
MiB)
[  275.635533] sd 2:0:1:0: [sdb] Write Protect is off
[  275.642315] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, 
doesn't support DPO or FUA
[  469.076347] sd 2:0:1:0: [sdb] FAILED Result: hostbyte=DID_TIME_OUT 
driverbyte=DRIVER_SENSE
[  469.076613] sd 2:0:1:0: [sdb] Sense Key : Aborted Command [current]
[  469.076851] sd 2:0:1:0: [sdb] Add. Sense: No additional sense information
[  469.077086] sd 2:0:1:0: [sdb] CDB: Read(10) 28 00 00 00 00 02 00 00 02 00
[  469.077306] blk_update_request: I/O error, dev sdb, sector 2
[  469.077522] Buffer I/O error on dev sdb, logical block 1, async page read
[  480.108255] INFO: task kworker/u2:2:60 blocked for more than 120 seconds.
[  480.109773]   Not tainted 4.3.0-rc1+ #74
[  480.109973] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this 
message.
[  480.110179] kworker/u2:2D 0040 060  2 0x
[  480.110671] Workqueue: events_unbound async_run_entry_fn
[  480.110999]  cf9e8780 0046 2eff25f7 0040 c117f111 2ee82733 0040 
0016fec4
[  480.112390]   cfaa6000  7fff c139c7d2 c139c504 7fff 
c139d9d3

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Ondrej Zary
On Friday 20 November 2015, Geert Uytterhoeven wrote:
> On Fri, Nov 20, 2015 at 12:40 PM, Ondrej Zary
>  wrote:
> > Working ISA means more testing possibilities. It's much easier to get an 
> > ISA card than a Sun or Atari. Also faster CPU (such as 1 GHz P3) means 
> > quicker testing.
> 
> Faster PCs without ISA slots? ;-)

Faster but not too fast, you have to be careful :)
There are many boards for Pentium 3 or Ahlon XP CPUs with ISA slots.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Geert Uytterhoeven
On Fri, Nov 20, 2015 at 12:40 PM, Ondrej Zary
 wrote:
> Working ISA means more testing possibilities. It's much easier to get an ISA 
> card than a Sun or Atari. Also faster CPU (such as 1 GHz P3) means quicker 
> testing.

Faster PCs without ISA slots? ;-)

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Christoph Hellwig
On Fri, Nov 20, 2015 at 12:40:03PM +0100, Ondrej Zary wrote:
> > > I'd love to be able to get rid of the ISA drivers to be honest.
> > 
> > Is that because of their use of scsi_module.c or their general decrepitude 
> > or something else?
> 
> scsi_module.c usage shouldn't be hard to fix. I can do that after finding a 
> working setup.

It's the general state of them.

> 
> > > Given that they appear to be gravely broken before your cleanups this 
> > > might be an opportunity to get rid of them.
> > 
> > At this stage, that's unclear (to me). It could be that g_NCR5380.c is not 
> > broken. It could be that the core driver can't handle certain targets. I 
> > think we need to do more testing.
> 
> Maybe I was just unlucky and tested a drive that never worked with this 
> driver.
> 
> Working ISA means more testing possibilities. It's much easier to get an ISA 
> card than a Sun or Atari. Also faster CPU (such as 1 GHz P3) means quicker 
> testing.


Well, if you volunteer to bring the NCR5380 ISA drivers up to date and
maintain them it's obvuously fine to keep them around.

I'm more worried about all the unmaintained ISA drivers in horrible
shape.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Ondrej Zary
On Friday 20 November 2015, Finn Thain wrote:
> 
> On Fri, 20 Nov 2015, Christoph Hellwig wrote:
> 
> > On Fri, Nov 20, 2015 at 07:19:21PM +1100, Finn Thain wrote:
> >
> > > Yes. I didn't do that conversion because I don't have ISA hardware and 
> > > I don't understand ISA probing.
> > > 
> > > The present patch set doesn't seek to resurrect the ISA drivers. But I 
> > > am trying to avoid regressions.
> > > 
> > > I have mixed feelings about the ISA drivers. ISA DMA support 
> > > complicates things (it was never completed) and DMA seems to be the 
> > > main obstacle to merging the two core driver forks.
> > 
> > I'd love to be able to get rid of the ISA drivers to be honest.
> 
> Is that because of their use of scsi_module.c or their general decrepitude 
> or something else?

scsi_module.c usage shouldn't be hard to fix. I can do that after finding a 
working setup.

> > Given that they appear to be gravely broken before your cleanups this 
> > might be an opportunity to get rid of them.
> 
> At this stage, that's unclear (to me). It could be that g_NCR5380.c is not 
> broken. It could be that the core driver can't handle certain targets. I 
> think we need to do more testing.

Maybe I was just unlucky and tested a drive that never worked with this driver.

Working ISA means more testing possibilities. It's much easier to get an ISA 
card than a Sun or Atari. Also faster CPU (such as 1 GHz P3) means quicker 
testing.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Finn Thain

On Fri, 20 Nov 2015, Christoph Hellwig wrote:

> On Fri, Nov 20, 2015 at 07:19:21PM +1100, Finn Thain wrote:
>
> > Yes. I didn't do that conversion because I don't have ISA hardware and 
> > I don't understand ISA probing.
> > 
> > The present patch set doesn't seek to resurrect the ISA drivers. But I 
> > am trying to avoid regressions.
> > 
> > I have mixed feelings about the ISA drivers. ISA DMA support 
> > complicates things (it was never completed) and DMA seems to be the 
> > main obstacle to merging the two core driver forks.
> 
> I'd love to be able to get rid of the ISA drivers to be honest.

Is that because of their use of scsi_module.c or their general decrepitude 
or something else?

> Given that they appear to be gravely broken before your cleanups this 
> might be an opportunity to get rid of them.

At this stage, that's unclear (to me). It could be that g_NCR5380.c is not 
broken. It could be that the core driver can't handle certain targets. I 
think we need to do more testing.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Christoph Hellwig
On Fri, Nov 20, 2015 at 07:19:21PM +1100, Finn Thain wrote:
> Yes. I didn't do that conversion because I don't have ISA hardware and I 
> don't understand ISA probing.
> 
> The present patch set doesn't seek to resurrect the ISA drivers. But I am 
> trying to avoid regressions.
> 
> I have mixed feelings about the ISA drivers. ISA DMA support complicates 
> things (it was never completed) and DMA seems to be the main obstacle to 
> merging the two core driver forks.

I'd love to be able to get rid of the ISA drivers to be honest.  Given
that they appear to be gravely broken before your cleanups this might
be an opportunity to get rid of them.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Ondrej Zary
On Friday 20 November 2015, Finn Thain wrote:
> 
> On Thu, 19 Nov 2015, Christoph Hellwig wrote:
> 
> > On Fri, Nov 20, 2015 at 06:21:06PM +1100, Finn Thain wrote:
> >
> > > > Not sure what module was being probed here. I presume it was 
> > > > g_NCR5380 or g_NCR5380_mmio. Neither of these calls 
> > > > 'scsi_scan_host'. I'm not sure what the implications are (?)
> > > 
> > > Nevermind. The call is in scsi_module.c.
> > 
> > Which, btw really need to go away.  If you want to resurrect the
> > ISA drivers they need to be converted to proper probing.
> 
> Yes. I didn't do that conversion because I don't have ISA hardware and I 
> don't understand ISA probing.
> 
> The present patch set doesn't seek to resurrect the ISA drivers. But I am 
> trying to avoid regressions.
> 
> I have mixed feelings about the ISA drivers. ISA DMA support complicates 
> things (it was never completed) and DMA seems to be the main obstacle to 
> merging the two core driver forks.

IIRC, my ISA cards can't do DMA either.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-20 Thread Finn Thain

On Thu, 19 Nov 2015, Christoph Hellwig wrote:

> On Fri, Nov 20, 2015 at 06:21:06PM +1100, Finn Thain wrote:
>
> > > Not sure what module was being probed here. I presume it was 
> > > g_NCR5380 or g_NCR5380_mmio. Neither of these calls 
> > > 'scsi_scan_host'. I'm not sure what the implications are (?)
> > 
> > Nevermind. The call is in scsi_module.c.
> 
> Which, btw really need to go away.  If you want to resurrect the
> ISA drivers they need to be converted to proper probing.

Yes. I didn't do that conversion because I don't have ISA hardware and I 
don't understand ISA probing.

The present patch set doesn't seek to resurrect the ISA drivers. But I am 
trying to avoid regressions.

I have mixed feelings about the ISA drivers. ISA DMA support complicates 
things (it was never completed) and DMA seems to be the main obstacle to 
merging the two core driver forks.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-19 Thread Ondrej Zary
On Friday 20 November 2015, Finn Thain wrote:
> 
> On Thu, 19 Nov 2015, Ondrej Zary wrote:
> 
> > On Thursday 19 November 2015 03:24:56 Finn Thain wrote:
> >
> > > On Wed, 18 Nov 2015, Ondrej Zary wrote:
> > >
> > > >
> > > > I have some NCR5380 ISA cards and can test them.
> > >
> > > Thanks Ondrej. I've no idea which ISA drivers are presently working in 
> > > mainline. Finding regressions may be more difficult than usual ;-)
> > 
> > You're right... looks very broken:
> > 
> > [   62.577194] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> > sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 
> > 3, USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA 
> > NCR53C400 }
> > [   62.796635] scsi 2:0:0:0: Direct-Access IBM  0663 e  
> >   PQ: 0 ANSI: 2
> > [   63.878494] sd 2:0:0:0: Attached scsi generic sg1 type 0
> > [   95.848260] sd 2:0:0:0: aborting command
> > 
> > And the system hangs completely.
> > 
> 
> Yes. That was the usual failure mode. The old EH abort routine is fatal. 
> Up until I disabled PDMA by default for mac_scsi (in v3.19), that driver 
> would do the same thing.
> 
> > It's much better with your patches, but still not great :)
> > 
> 
> Pleased to hear it :)
> 
> > [   93.963264] pnp 01:01.00: [io  0x0240-0x025f]
> > [   93.963493] pnp 01:01.00: [irq 5]
> > [   93.965768] pnp 01:01.00: activated
> > [   93.977147] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> > n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> > sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { 
> > AUTOPROBE_IRQ PSEUDO_DMA }
> > [   93.987527] scsi host2: rejecting message
> > [   93.987647] Synchronous Data Transfer Request period = 100 ns offset = 12
> > [   94.001219] scsi 2:0:0:0: Direct-Access IBM  0663 e  
> >   PQ: 0 ANSI: 2
> > [  113.000794] sd 2:0:0:0: Attached scsi generic sg1 type 0
> 
> I'd be interested to know what commands were in play in that 19 second 
> interval. Might need to use scsi_logging_level to figure that out.
> 
> My tests involved 3 different scsi targets (two disks and a CD-ROM) but 
> none of these send a SDTR. Your log says the driver correctly rejected the 
> SDTR message but that doesn't mean the target actually went to MSG IN 
> phase and got the message. Do you have any older targets you can test?

Yes, I have some older disks too and also CD-ROMs. This one was just handy in
an external enclosure (the card has only an external DB25 connector). It can
be opened easily so I'll test the other devices too.

> > [  144.852432] sd 2:0:0:0: [sdb] Unit Not Ready
> > [  144.852574] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
> > [  144.852713] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure
> 
> AFAIK, the target should not have to abort any commands. Moreover, the 
> target should never experience a select/reselect failure, because you have 
> irq == 0 (see above) and that implies that the target is never permitted 
> the disconnect privilege.
> 
> > [  240.108292] INFO: task modprobe:1957 blocked for more than 120 seconds.
> > [  240.108418]   Not tainted 4.3.0-rc1+ #74
> 
> Why not use v4.3?

I had that already built so just quickly applied the patches and tested. I have
to update the git tree anyway as ACPI is broken.

> > [  240.108501] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> > this message.
> > [  240.108597] modprobeD 001a 0  1957   1950 0x
> > [  240.108790]  ce0fad00 0086 53881781 001a c1525f88 4edbe39c 
> > 001a 04ac33e5
> > [  240.109246]   ccd54000   d204b280 c139c504 
> >  c104416d
> > [  240.109699]   ce0fad00 c1054a45 c151fd8c c151fd8c d204b280 
> >  ccd6d100
> > [  240.110156] Call Trace:
> > [  240.110295]  [] ? schedule+0x5b/0x67
> > [  240.110430]  [] ? async_synchronize_cookie_domain+0x73/0x9f
> > [  240.110569]  [] ? abort_exclusive_wait+0x6e/0x6e
> > [  240.110699]  [] ? do_init_module+0xa4/0x1a3
> > [  240.110824]  [] ? load_module+0x14de/0x18ca
> > [  240.110948]  [] ? SyS_finit_module+0x47/0x56
> > [  240.111068]  [] ? sysenter_do_call+0x12/0x12
> 
> Not sure what module was being probed here. I presume it was g_NCR5380 or 
> g_NCR5380_mmio. Neither of these calls 'scsi_scan_host'. I'm not sure what 
> the implications are (?)

It was g_NCR5380 (DTCT-436P card).

> > [  240.852458] sd 2:0:0:0: [sdb] Read Capacity(10) failed: Result: 
> > hostbyte=DID_TIME_OUT driverbyte=DRIVER_SENSE
> > [  240.852620] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
> > [  240.852760] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure
> > [  272.852471] sd 2:0:0:0: [sdb] Write Protect is off
> > [  272.852614] sd 2:0:0:0: [sdb] Mode Sense: 00 00 00 00
> > [  304.084452] sd 2:0:0:0: [sdb] Asking for cache data failed
> > [  304.084592] sd 2:0:0:

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-19 Thread Christoph Hellwig
On Fri, Nov 20, 2015 at 06:21:06PM +1100, Finn Thain wrote:
> > Not sure what module was being probed here. I presume it was g_NCR5380 
> > or g_NCR5380_mmio. Neither of these calls 'scsi_scan_host'. I'm not sure 
> > what the implications are (?)
> 
> Nevermind. The call is in scsi_module.c.

Which, btw really need to go away.  If you want to resurrect the
ISA drivers they need to be converted to proper probing.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-19 Thread Finn Thain

On Fri, 20 Nov 2015, I wrote:

> On Thu, 19 Nov 2015, Ondrej Zary wrote:
> 
> > [  240.108501] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> > this message.
> > [  240.108597] modprobeD 001a 0  1957   1950 0x
> > [  240.108790]  ce0fad00 0086 53881781 001a c1525f88 4edbe39c 
> > 001a 04ac33e5
> > [  240.109246]   ccd54000   d204b280 c139c504 
> >  c104416d
> > [  240.109699]   ce0fad00 c1054a45 c151fd8c c151fd8c d204b280 
> >  ccd6d100
> > [  240.110156] Call Trace:
> > [  240.110295]  [] ? schedule+0x5b/0x67
> > [  240.110430]  [] ? async_synchronize_cookie_domain+0x73/0x9f
> > [  240.110569]  [] ? abort_exclusive_wait+0x6e/0x6e
> > [  240.110699]  [] ? do_init_module+0xa4/0x1a3
> > [  240.110824]  [] ? load_module+0x14de/0x18ca
> > [  240.110948]  [] ? SyS_finit_module+0x47/0x56
> > [  240.111068]  [] ? sysenter_do_call+0x12/0x12
> 
> Not sure what module was being probed here. I presume it was g_NCR5380 
> or g_NCR5380_mmio. Neither of these calls 'scsi_scan_host'. I'm not sure 
> what the implications are (?)

Nevermind. The call is in scsi_module.c.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-19 Thread Finn Thain

On Thu, 19 Nov 2015, Ondrej Zary wrote:

> On Thursday 19 November 2015 03:24:56 Finn Thain wrote:
>
> > On Wed, 18 Nov 2015, Ondrej Zary wrote:
> >
> > >
> > > I have some NCR5380 ISA cards and can test them.
> >
> > Thanks Ondrej. I've no idea which ISA drivers are presently working in 
> > mainline. Finding regressions may be more difficult than usual ;-)
> 
> You're right... looks very broken:
> 
> [   62.577194] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 3, 
> USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA 
> NCR53C400 }
> [   62.796635] scsi 2:0:0:0: Direct-Access IBM  0663 e
> PQ: 0 ANSI: 2
> [   63.878494] sd 2:0:0:0: Attached scsi generic sg1 type 0
> [   95.848260] sd 2:0:0:0: aborting command
> 
> And the system hangs completely.
> 

Yes. That was the usual failure mode. The old EH abort routine is fatal. 
Up until I disabled PDMA by default for mac_scsi (in v3.19), that driver 
would do the same thing.

> It's much better with your patches, but still not great :)
> 

Pleased to hear it :)

> [   93.963264] pnp 01:01.00: [io  0x0240-0x025f]
> [   93.963493] pnp 01:01.00: [irq 5]
> [   93.965768] pnp 01:01.00: activated
> [   93.977147] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
> n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
> sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { 
> AUTOPROBE_IRQ PSEUDO_DMA }
> [   93.987527] scsi host2: rejecting message
> [   93.987647] Synchronous Data Transfer Request period = 100 ns offset = 12
> [   94.001219] scsi 2:0:0:0: Direct-Access IBM  0663 e
> PQ: 0 ANSI: 2
> [  113.000794] sd 2:0:0:0: Attached scsi generic sg1 type 0

I'd be interested to know what commands were in play in that 19 second 
interval. Might need to use scsi_logging_level to figure that out.

My tests involved 3 different scsi targets (two disks and a CD-ROM) but 
none of these send a SDTR. Your log says the driver correctly rejected the 
SDTR message but that doesn't mean the target actually went to MSG IN 
phase and got the message. Do you have any older targets you can test?

> [  144.852432] sd 2:0:0:0: [sdb] Unit Not Ready
> [  144.852574] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
> [  144.852713] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure

AFAIK, the target should not have to abort any commands. Moreover, the 
target should never experience a select/reselect failure, because you have 
irq == 0 (see above) and that implies that the target is never permitted 
the disconnect privilege.

> [  240.108292] INFO: task modprobe:1957 blocked for more than 120 seconds.
> [  240.108418]   Not tainted 4.3.0-rc1+ #74

Why not use v4.3?

> [  240.108501] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> this message.
> [  240.108597] modprobeD 001a 0  1957   1950 0x
> [  240.108790]  ce0fad00 0086 53881781 001a c1525f88 4edbe39c 
> 001a 04ac33e5
> [  240.109246]   ccd54000   d204b280 c139c504 
>  c104416d
> [  240.109699]   ce0fad00 c1054a45 c151fd8c c151fd8c d204b280 
>  ccd6d100
> [  240.110156] Call Trace:
> [  240.110295]  [] ? schedule+0x5b/0x67
> [  240.110430]  [] ? async_synchronize_cookie_domain+0x73/0x9f
> [  240.110569]  [] ? abort_exclusive_wait+0x6e/0x6e
> [  240.110699]  [] ? do_init_module+0xa4/0x1a3
> [  240.110824]  [] ? load_module+0x14de/0x18ca
> [  240.110948]  [] ? SyS_finit_module+0x47/0x56
> [  240.111068]  [] ? sysenter_do_call+0x12/0x12

Not sure what module was being probed here. I presume it was g_NCR5380 or 
g_NCR5380_mmio. Neither of these calls 'scsi_scan_host'. I'm not sure what 
the implications are (?)

> [  240.852458] sd 2:0:0:0: [sdb] Read Capacity(10) failed: Result: 
> hostbyte=DID_TIME_OUT driverbyte=DRIVER_SENSE
> [  240.852620] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
> [  240.852760] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure
> [  272.852471] sd 2:0:0:0: [sdb] Write Protect is off
> [  272.852614] sd 2:0:0:0: [sdb] Mode Sense: 00 00 00 00
> [  304.084452] sd 2:0:0:0: [sdb] Asking for cache data failed
> [  304.084592] sd 2:0:0:0: [sdb] Assuming drive cache: write through

This looks like nonsense to me ... I don't think the target actually 
aborted the reselection phase of a read capacity command. I'm out of ideas 
here. Can anyone else make sense of this?

> [  360.108284] INFO: task modprobe:1957 blocked for more than 120 seconds.
> [  360.108409]   Not tainted 4.3.0-rc1+ #74
> [  360.108492] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
> this message.
> [  360.108591] modprobeD 001a 0  1957   1950 0x
> [  360.108787]  ce0fad00 0086 53881781 001a c1525f88 4edbe39c 
> 001a 04ac3

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-19 Thread Ondrej Zary


On Thursday 19 November 2015 03:24:56 Finn Thain wrote:
> On Wed, 18 Nov 2015, Ondrej Zary wrote:
> > On Wednesday 18 November 2015, Finn Thain wrote:
> > > Like my previous work on the NCR5380 drivers, this patch series has
> > > bug fixes, code cleanup and modernization. These drivers suffer from
> > > mistakes, poor style and neglect and this long series addresses the
> > > worst of it, covering all ten wrapper drivers and both of the core
> > > driver forks. The combined size of the drivers is reduced by about 750
> > > LoC.
> > >
> > > This series continues to reduce divergence between the two core driver
> > > forks, often by copying a bug fix from one to the other. Most patches
> > > are larger for having to keep the two forks in sync. Making the same
> > > change to both is churn if one of them is to be removed but neither
> > > can be as yet. By the end of this series the diff between the two
> > > forks is minimal, so it becomes clear what caused the fork and what
> > > can be done about it.
> > >
> > > This patch series did benefit from scripts/checkpatch.pl but not too
> > > much. Decades ago, these drivers started out with 4-space tabs and if
> > > the 80 column limit were to be strictly enforced now, it would require
> > > adding new functions and shortening identifiers. I would defer this
> > > sort of activity until after the fork has been resolved.
> > >
> > > I have compile-tested all patches to all NCR5380 drivers (x86, ARM,
> > > m68k) and regression tested mac_scsi and dmx3191d modules on suitable
> > > hardware. Testing the mac_scsi and dmx3191d modules provides only
> > > limited coverage. It would be good to see some testing of ISA cards
> > > and Sun 3 and Atari hardware too (I don't have any).
> >
> > I have some NCR5380 ISA cards and can test them.
>
> Thanks Ondrej. I've no idea which ISA drivers are presently working in
> mainline. Finding regressions may be more difficult than usual ;-)

You're right... looks very broken:

[   62.577194] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, USLEEP_POLL 3, 
USLEEP_WAITLONG 1250, options { AUTOPROBE_IRQ PSEUDO_DMA 
NCR53C400 }
[   62.796635] scsi 2:0:0:0: Direct-Access IBM  0663 e
PQ: 0 ANSI: 2
[   63.878494] sd 2:0:0:0: Attached scsi generic sg1 type 0
[   95.848260] sd 2:0:0:0: aborting command

And the system hangs completely.

It's much better with your patches, but still not great :)

[   93.963264] pnp 01:01.00: [io  0x0240-0x025f]
[   93.963493] pnp 01:01.00: [irq 5]
[   93.965768] pnp 01:01.00: activated
[   93.977147] scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, 
n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, 
sg_tablesize 128, this_id 7, flags { DTC3181E NO_PSEUDO_DMA }, options { 
AUTOPROBE_IRQ PSEUDO_DMA }
[   93.987527] scsi host2: rejecting message
[   93.987647] Synchronous Data Transfer Request period = 100 ns offset = 12
[   94.001219] scsi 2:0:0:0: Direct-Access IBM  0663 e
PQ: 0 ANSI: 2
[  113.000794] sd 2:0:0:0: Attached scsi generic sg1 type 0
[  144.852432] sd 2:0:0:0: [sdb] Unit Not Ready
[  144.852574] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
[  144.852713] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure
[  240.108292] INFO: task modprobe:1957 blocked for more than 120 seconds.
[  240.108418]   Not tainted 4.3.0-rc1+ #74
[  240.108501] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this 
message.
[  240.108597] modprobeD 001a 0  1957   1950 0x
[  240.108790]  ce0fad00 0086 53881781 001a c1525f88 4edbe39c 001a 
04ac33e5
[  240.109246]   ccd54000   d204b280 c139c504  
c104416d
[  240.109699]   ce0fad00 c1054a45 c151fd8c c151fd8c d204b280  
ccd6d100
[  240.110156] Call Trace:
[  240.110295]  [] ? schedule+0x5b/0x67
[  240.110430]  [] ? async_synchronize_cookie_domain+0x73/0x9f
[  240.110569]  [] ? abort_exclusive_wait+0x6e/0x6e
[  240.110699]  [] ? do_init_module+0xa4/0x1a3
[  240.110824]  [] ? load_module+0x14de/0x18ca
[  240.110948]  [] ? SyS_finit_module+0x47/0x56
[  240.111068]  [] ? sysenter_do_call+0x12/0x12
[  240.852458] sd 2:0:0:0: [sdb] Read Capacity(10) failed: Result: 
hostbyte=DID_TIME_OUT driverbyte=DRIVER_SENSE
[  240.852620] sd 2:0:0:0: [sdb] Sense Key : Aborted Command [current]
[  240.852760] sd 2:0:0:0: [sdb] Add. Sense: Select or reselect failure
[  272.852471] sd 2:0:0:0: [sdb] Write Protect is off
[  272.852614] sd 2:0:0:0: [sdb] Mode Sense: 00 00 00 00
[  304.084452] sd 2:0:0:0: [sdb] Asking for cache data failed
[  304.084592] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[  360.108284] INFO: task modprobe:1957 blocked for more than 120 seconds.
[  360.108409]   Not tainted 4.3.0-rc1+ #74
[  360.108492] "echo 0 > /proc/sys/kernel/hung_task_timeout

Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-18 Thread Ondrej Zary
On Thursday 19 November 2015, Finn Thain wrote:
> On Wed, 18 Nov 2015, Ondrej Zary wrote:
> > On Wednesday 18 November 2015, Finn Thain wrote:
> > > Like my previous work on the NCR5380 drivers, this patch series has
> > > bug fixes, code cleanup and modernization. These drivers suffer from
> > > mistakes, poor style and neglect and this long series addresses the
> > > worst of it, covering all ten wrapper drivers and both of the core
> > > driver forks. The combined size of the drivers is reduced by about 750
> > > LoC.
> > >
> > > This series continues to reduce divergence between the two core driver
> > > forks, often by copying a bug fix from one to the other. Most patches
> > > are larger for having to keep the two forks in sync. Making the same
> > > change to both is churn if one of them is to be removed but neither
> > > can be as yet. By the end of this series the diff between the two
> > > forks is minimal, so it becomes clear what caused the fork and what
> > > can be done about it.
> > >
> > > This patch series did benefit from scripts/checkpatch.pl but not too
> > > much. Decades ago, these drivers started out with 4-space tabs and if
> > > the 80 column limit were to be strictly enforced now, it would require
> > > adding new functions and shortening identifiers. I would defer this
> > > sort of activity until after the fork has been resolved.
> > >
> > > I have compile-tested all patches to all NCR5380 drivers (x86, ARM,
> > > m68k) and regression tested mac_scsi and dmx3191d modules on suitable
> > > hardware. Testing the mac_scsi and dmx3191d modules provides only
> > > limited coverage. It would be good to see some testing of ISA cards
> > > and Sun 3 and Atari hardware too (I don't have any).
> >
> > I have some NCR5380 ISA cards and can test them.
>
> Thanks Ondrej. I've no idea which ISA drivers are presently working in
> mainline. Finding regressions may be more difficult than usual ;-)

I remember that at least one of them never worked in Linux - HP C2502 card 
with 53C400A chip with no jumpers (magic-numbers-based configuration).

The memory-mapped Canon FG2-5202 (53C400) did not work properly either.

At least DTCT-436P used to work.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-18 Thread Michael Schmitz
Hi Finn,

>>>
>>> I have compile-tested all patches to all NCR5380 drivers (x86, ARM, 
>>> m68k) and regression tested mac_scsi and dmx3191d modules on suitable 
>>> hardware. Testing the mac_scsi and dmx3191d modules provides only 
>>> limited coverage. It would be good to see some testing of ISA cards 
>>> and Sun 3 and Atari hardware too (I don't have any).
>>
>> I have some NCR5380 ISA cards and can test them.
>>
> 
> Thanks Ondrej. I've no idea which ISA drivers are presently working in 
> mainline. Finding regressions may be more difficult than usual ;-)
> 
> Michael, Sam: only atari_scsi and sun3_scsi implement DMA support, so some
> testing of either driver would be helpful.

One way or another, I'll test this series or get someone to test a
kernel I built.

Cheers,

Michael



--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-18 Thread Finn Thain

On Wed, 18 Nov 2015, Ondrej Zary wrote:

> On Wednesday 18 November 2015, Finn Thain wrote:
> 
> > Like my previous work on the NCR5380 drivers, this patch series has 
> > bug fixes, code cleanup and modernization. These drivers suffer from 
> > mistakes, poor style and neglect and this long series addresses the 
> > worst of it, covering all ten wrapper drivers and both of the core 
> > driver forks. The combined size of the drivers is reduced by about 750 
> > LoC.
> >
> > This series continues to reduce divergence between the two core driver 
> > forks, often by copying a bug fix from one to the other. Most patches 
> > are larger for having to keep the two forks in sync. Making the same 
> > change to both is churn if one of them is to be removed but neither 
> > can be as yet. By the end of this series the diff between the two 
> > forks is minimal, so it becomes clear what caused the fork and what 
> > can be done about it.
> >
> > This patch series did benefit from scripts/checkpatch.pl but not too 
> > much. Decades ago, these drivers started out with 4-space tabs and if 
> > the 80 column limit were to be strictly enforced now, it would require 
> > adding new functions and shortening identifiers. I would defer this 
> > sort of activity until after the fork has been resolved.
> >
> > I have compile-tested all patches to all NCR5380 drivers (x86, ARM, 
> > m68k) and regression tested mac_scsi and dmx3191d modules on suitable 
> > hardware. Testing the mac_scsi and dmx3191d modules provides only 
> > limited coverage. It would be good to see some testing of ISA cards 
> > and Sun 3 and Atari hardware too (I don't have any).
> 
> I have some NCR5380 ISA cards and can test them.
> 

Thanks Ondrej. I've no idea which ISA drivers are presently working in 
mainline. Finding regressions may be more difficult than usual ;-)

Michael, Sam: only atari_scsi and sun3_scsi implement DMA support, so some
testing of either driver would be helpful.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers

2015-11-18 Thread Ondrej Zary
On Wednesday 18 November 2015, Finn Thain wrote:
> Like my previous work on the NCR5380 drivers, this patch series has bug
> fixes, code cleanup and modernization. These drivers suffer from mistakes,
> poor style and neglect and this long series addresses the worst of it,
> covering all ten wrapper drivers and both of the core driver forks. The
> combined size of the drivers is reduced by about 750 LoC.
>
> This series continues to reduce divergence between the two core driver
> forks, often by copying a bug fix from one to the other. Most patches are
> larger for having to keep the two forks in sync. Making the same change to
> both is churn if one of them is to be removed but neither can be as yet.
> By the end of this series the diff between the two forks is minimal, so it
> becomes clear what caused the fork and what can be done about it.
>
> This patch series did benefit from scripts/checkpatch.pl but not too much.
> Decades ago, these drivers started out with 4-space tabs and if the 80
> column limit were to be strictly enforced now, it would require adding new
> functions and shortening identifiers. I would defer this sort of activity
> until after the fork has been resolved.
>
> I have compile-tested all patches to all NCR5380 drivers (x86, ARM, m68k)
> and regression tested mac_scsi and dmx3191d modules on suitable hardware.
> Testing the mac_scsi and dmx3191d modules provides only limited coverage.
> It would be good to see some testing of ISA cards and Sun 3 and Atari
> hardware too (I don't have any).

I have some NCR5380 ISA cards and can test them.

-- 
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html