Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1471082

[PATCH 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers

From Finn Thain <fthain@telegraphics.com.au>
Newsgroups linux.kernel
Subject [PATCH 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers
Date 2016-08-27 04:50 +0200
Message-ID <saBQZ-7cb-11@gated-at.bofh.it> (permalink)
References <saBQZ-7cb-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Large PIO transfers are broken up into chunks to try to avoid disabling
local IRQs for long periods. But IRQs are still disabled for too long
and this causes SCC FIFO overruns during serial port transfers. This
patch fixes the problem by halving the PIO chunk size.

Testing with mac_scsi shows that the extra NCR5380_main() loop iterations
have negligible performance impact on SCSI transfers (about 1% slower).
On a faster system (using the dmx3191d module) transfers showed no
measurable change.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>

---
 drivers/scsi/NCR5380.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux/drivers/scsi/NCR5380.c
===================================================================
--- linux.orig/drivers/scsi/NCR5380.c	2016-08-27 12:29:57.000000000 +1000
+++ linux/drivers/scsi/NCR5380.c	2016-08-27 12:29:58.000000000 +1000
@@ -1847,11 +1847,11 @@ static void NCR5380_information_transfer
 						/* XXX - need to source or sink data here, as appropriate */
 					}
 				} else {
-					/* Break up transfer into 3 ms chunks,
-					 * presuming 6 accesses per handshake.
+					/* Transfer a small chunk so that the
+					 * irq mode lock is not held too long.
 					 */
 					transfersize = min((unsigned long)cmd->SCp.this_residual,
-					                   hostdata->accesses_per_ms / 2);
+					                   hostdata->accesses_per_ms >> 2);
 					len = transfersize;
 					NCR5380_transfer_pio(instance, &phase, &len,
 					                     (unsigned char **)&cmd->SCp.ptr);

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/3] Small fixes and cleanup Finn Thain <fthain@telegraphics.com.au> - 2016-08-27 04:50 +0200
  [PATCH 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers Finn Thain <fthain@telegraphics.com.au> - 2016-08-27 04:50 +0200
    Re: [PATCH 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers Geert Uytterhoeven <geert@linux-m68k.org> - 2016-08-28 10:10 +0200
      Re: [PATCH 3/3] scsi/ncr5380: Improve interrupt latency during PIO  tranfers Finn Thain <fthain@telegraphics.com.au> - 2016-08-29 06:20 +0200
    [PATCH v2 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers Finn Thain <fthain@telegraphics.com.au> - 2016-08-31 07:10 +0200
      Re: [PATCH v2 3/3] scsi/ncr5380: Improve interrupt latency during  PIO tranfers Laurence Oberman <loberman@redhat.com> - 2016-08-31 16:10 +0200
      Re: [PATCH v2 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers "Martin K. Petersen" <martin.petersen@oracle.com> - 2016-09-09 13:30 +0200
        Re: [PATCH v2 3/3] scsi/ncr5380: Improve interrupt latency during PIO tranfers Geert Uytterhoeven <geert@linux-m68k.org> - 2016-09-09 14:10 +0200
  Re: [PATCH 0/3] Small fixes and cleanup "Martin K. Petersen" <martin.petersen@oracle.com> - 2016-08-31 06:30 +0200

csiph-web