Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1276780
| From | Ondrej Zary <linux@rainbow-software.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers |
| Date | 2015-11-24 22:50 +0100 |
| Message-ID | <qytDj-5dS-3@gated-at.bofh.it> (permalink) |
| References | <qw6Bc-vx-5@gated-at.bofh.it> <qygPM-5uK-9@gated-at.bofh.it> <qyhVv-6c8-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-18 10:20 +0100
[PATCH 04/71] ncr5380: Remove more pointless macros Finn Thain <fthain@telegraphics.com.au> - 2015-11-18 10:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-18 12:40 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-19 03:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Michael Schmitz <schmitzmic@gmail.com> - 2015-11-19 04:00 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-19 08:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 00:00 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-20 02:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-20 08:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Christoph Hellwig <hch@infradead.org> - 2015-11-20 08:40 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-20 09:20 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 10:20 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Christoph Hellwig <hch@infradead.org> - 2015-11-20 11:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-20 12:00 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Christoph Hellwig <hch@infradead.org> - 2015-11-20 12:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 12:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-20 13:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 13:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 08:40 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-20 19:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-21 03:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-21 14:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-22 00:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-22 00:40 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-24 00:00 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-24 02:30 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-24 09:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-24 10:20 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-24 13:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-24 19:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-24 22:50 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-25 03:20 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-25 10:10 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Finn Thain <fthain@telegraphics.com.au> - 2015-11-25 13:00 +0100
Re: [PATCH 00/71] More fixes, cleanup and modernization for NCR5380 drivers Ondrej Zary <linux@rainbow-software.org> - 2015-11-26 00:10 +0100
[PATCH 72/71] ncr5380: Fix pseudo-DMA Ondrej Zary <linux@rainbow-software.org> - 2015-11-25 22:40 +0100
[RFC PATCH 73/71] ncr5380: Use runtime register mapping Ondrej Zary <linux@rainbow-software.org> - 2015-11-29 10:50 +0100
Re: [RFC PATCH 73/71] ncr5380: Use runtime register mapping Finn Thain <fthain@telegraphics.com.au> - 2015-11-30 13:00 +0100
[RFC PATCH 74/71] ncr5380: Enable PDMA for NCR53C400A Ondrej Zary <linux@rainbow-software.org> - 2015-11-29 10:50 +0100
Re: [RFC PATCH 74/71] ncr5380: Enable PDMA for NCR53C400A Finn Thain <fthain@telegraphics.com.au> - 2015-11-30 13:00 +0100
Re: [RFC PATCH 74/71] ncr5380: Enable PDMA for NCR53C400A Finn Thain <fthain@telegraphics.com.au> - 2015-11-30 13:10 +0100
Re: [RFC PATCH 74/71] ncr5380: Enable PDMA for NCR53C400A Ondrej Zary <linux@rainbow-software.org> - 2015-11-30 14:50 +0100
[RFC PATCH 75/71] ncr5380: Remove FLAG_DTC3181E Ondrej Zary <linux@rainbow-software.org> - 2015-11-29 11:10 +0100
Re: [RFC PATCH 75/71] ncr5380: Remove FLAG_DTC3181E Finn Thain <fthain@telegraphics.com.au> - 2015-11-30 06:00 +0100
csiph-web