linux/drivers/scsi/arm
Finn Thain 0a4e361254 ncr5380: Fix soft lockups
Because of the rudimentary design of the chip, it is necessary to poll the
SCSI bus signals during PIO and this tends to hog the CPU. The driver will
accept new commands while others execute, and this causes a soft lockup
because the workqueue item will not terminate until the issue queue is
emptied.

When exercising dmx3191d using sequential IO from dd, the driver is sent
512 KiB WRITE commands and 128 KiB READs. For a PIO transfer, the rate is
is only about 300 KiB/s, so these are long-running commands. And although
PDMA may run at several MiB/s, interrupts are disabled for the duration
of the transfer.

Fix the unresponsiveness and soft lockup issues by calling cond_resched()
after each command is completed and by limiting max_sectors for drivers
that don't implement real DMA.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Tested-by: Ondrej Zary <linux@rainbow-software.org>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-01-06 21:43:09 -05:00
..
acornscsi-io.S
acornscsi.c acornscsi: use scsi_print_command() 2014-11-12 11:15:58 +01:00
acornscsi.h
arxescsi.c scsi: Do not set cmd_per_lun to 1 in the host template 2015-05-31 18:06:28 -07:00
cumana_1.c ncr5380: Fix soft lockups 2016-01-06 21:43:09 -05:00
cumana_2.c scsi: Do not set cmd_per_lun to 1 in the host template 2015-05-31 18:06:28 -07:00
eesox.c scsi: Do not set cmd_per_lun to 1 in the host template 2015-05-31 18:06:28 -07:00
fas216.c scsi: replace seq_printf with seq_puts 2015-02-02 09:57:45 -08:00
fas216.h
Kconfig
Makefile
msgqueue.c
msgqueue.h
oak.c ncr5380: Fix soft lockups 2016-01-06 21:43:09 -05:00
powertec.c
queue.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
queue.h
scsi.h