linux-uconsole/drivers/scsi
Kars de Jong e62b2baf7c scsi: zorro_esp: Limit DMA transfers to 65536 bytes (except on Fastlane)
[ Upstream commit 02f7e9f351 ]

When using this driver on a Blizzard 1260, there were failures whenever DMA
transfers from the SCSI bus to memory of 65535 bytes were followed by a DMA
transfer of 1 byte. This caused the byte at offset 65535 to be overwritten
with 0xff. The Blizzard hardware can't handle single byte DMA transfers.

Besides this issue, limiting the DMA length to something that is not a
multiple of the page size is very inefficient on most file systems.

It seems this limit was chosen because the DMA transfer counter of the ESP
by default is 16 bits wide, thus limiting the length to 65535 bytes.
However, the value 0 means 65536 bytes, which is handled by the ESP and the
Blizzard just fine. It is also the default maximum used by esp_scsi when
drivers don't provide their own dma_length_limit() function.

The limit of 65536 bytes can be used by all boards except the Fastlane. The
old driver used a limit of 65532 bytes (0xfffc), which is reintroduced in
this patch.

Fixes: b7ded0e8b0 ("scsi: zorro_esp: Limit DMA transfers to 65535 bytes")
Link: https://lore.kernel.org/r/20191112175523.23145-1-jongk@linux-m68k.org
Signed-off-by: Kars de Jong <jongk@linux-m68k.org>
Reviewed-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-17 20:36:03 +01:00
..
aacraid scsi: aacraid: Insure we don't access PCIe space during AER/EEH 2019-05-04 09:20:20 +02:00
aic7xxx scsi: aic7xxx: fix EISA support 2019-05-16 19:41:23 +02:00
aic94xx scsi: aic94xx: fix module loading 2019-02-12 19:47:25 +01:00
arcmsr scsi: arcmsr: clean up clang warning on extraneous parentheses 2019-11-24 08:20:59 +01:00
arm treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
be2iscsi scsi: be2iscsi: Update copyright 2018-06-19 22:02:25 -04:00
bfa scsi: bfa: Avoid implicit enum conversion in bfad_im_post_vendor_event 2019-12-01 09:16:28 +01:00
bnx2fc scsi: bnx2fc: fix incorrect cast to u64 on shift operation 2019-06-19 08:18:03 +02:00
bnx2i scsi: bnx2i: add error handling for ioremap_nocache 2018-06-19 22:02:25 -04:00
csiostor scsi: csiostor: fix incorrect dma device in case of vport 2019-12-05 09:20:40 +01:00
cxgbi scsi: libcxgbi: add a check for NULL pointer in cxgbi_check_route() 2019-06-22 08:15:20 +02:00
cxlflash scsi: cxlflash: Prevent deadlock when adapter probe fails 2019-02-12 19:47:25 +01:00
device_handler scsi: scsi_dh_alua: handle RTPG sense code correctly during state transitions 2019-11-10 11:27:20 +01:00
dpt
esas2r treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
fcoe scsi: fcoe: Embed fc_rport_priv in fcoe_rport structure 2019-08-09 17:52:27 +02:00
fnic treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
hisi_sas scsi: hisi_sas: Reject setting programmed minimum linkrate > 1.5G 2019-12-17 20:35:35 +01:00
ibmvscsi scsi: ibmvfc: fix WARN_ON during event pool release 2019-08-16 10:12:49 +02:00
ibmvscsi_tgt scsi: ibmvscsis: Ensure partition name is properly NUL terminated 2018-09-17 02:50:37 -04:00
isci scsi: isci: Change sci_controller_start_task's return type to sci_status 2019-12-01 09:16:28 +01:00
libfc scsi: fcoe: Embed fc_rport_priv in fcoe_rport structure 2019-08-09 17:52:27 +02:00
libsas scsi: libsas: Check SMP PHY control function result 2019-12-05 09:21:21 +01:00
lpfc scsi: lpfc: Correct topology type reporting on G7 adapters 2019-12-17 20:35:30 +01:00
megaraid scsi: megaraid_sas: Fix goto labels in error handling 2019-12-01 09:17:25 +01:00
mpt3sas scsi: mpt3sas: Fix driver modifying persistent data in Manufacturing page11 2019-12-01 09:17:24 +01:00
mvsas scsi: mvsas: fix wrong endianness of sgpio api 2018-03-01 21:07:48 -05:00
osd osd: Convert to new IDA API 2018-08-21 23:54:17 -04:00
pcmcia scsi: remove the fdomain and fdomain_cs drivers 2018-03-19 22:54:47 -04:00
pm8001 scsi: pm80xx: Fixed system hang issue during kexec boot 2019-11-20 18:46:30 +01:00
qedf scsi: qedf: Add missing return in qedf_post_io_req() in the fcport offload check 2019-05-31 06:46:29 -07:00
qedi scsi: qedi: Check targetname while finding boot target information 2019-07-14 08:11:15 +02:00
qla2xxx scsi: qla2xxx: Change discovery state before PLOGI 2019-12-17 20:36:00 +01:00
qla4xxx scsi: qla4xxx: avoid freeing unallocated dma memory 2019-05-31 06:46:30 -07:00
smartpqi scsi: smartpqi: unlock on error in pqi_submit_raid_request_synchronous() 2019-06-25 11:35:58 +08:00
snic scsi: snic: fix printing time intervals 2018-07-12 23:01:16 -04:00
sym53c8xx_2 scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir() 2019-11-20 18:46:29 +01:00
ufs scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init 2019-11-20 18:46:48 +01:00
.gitignore
3w-9xxx.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-9xxx.h
3w-sas.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-sas.h
3w-xxxx.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-xxxx.h
53c700.c scsi: 53c700: pass correct "dev" to dma_alloc_attrs() 2019-03-13 14:02:31 -07:00
53c700.h
53c700.scr
53c700_d.h_shipped
a100u2w.c scsi: a100u2w: Replace mdelay() with msleep() 2018-07-30 23:17:53 -04:00
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c scsi: read host_busy via scsi_host_busy() 2018-06-26 12:53:26 -04:00
aha152x.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
aha152x.h
aha1542.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
aha1542.h
aha1740.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
aha1740.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
am53c974.c scsi: am53c974: Use module_pci_driver 2018-05-01 23:29:41 -04:00
atari_scsi.c
atp870u.c scsi: atp870u: Replace mdelay() with msleep() 2018-07-30 23:17:53 -04:00
atp870u.h
BusLogic.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
BusLogic.h
bvme6000_scsi.c
ch.c scsi: ch: Make it possible to open a ch device multiple times again 2019-10-29 09:19:50 +01:00
constants.c
dc395x.c scsi: dc395x: fix DMA API usage in sg_update_list 2019-12-01 09:16:32 +01:00
dc395x.h
dmx3191d.c
dpt_i2o.c scsi: dpt_i2o: Remove VLA usage 2018-05-18 12:03:51 -04:00
dpti.h scsi: dpt_i2o: stop using scsi_unregister 2018-03-15 00:25:37 -04:00
esp_scsi.c scsi: esp_scsi: Track residual for PIO transfers 2018-11-13 11:08:32 -08:00
esp_scsi.h scsi: esp_scsi: Track residual for PIO transfers 2018-11-13 11:08:32 -08:00
FlashPoint.c
g_NCR5380.c
gdth.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth_ioctl.h
gdth_proc.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth_proc.h
gvp11.c
gvp11.h
hosts.c Revert "scsi: core: avoid host-wide host_busy counter for scsi_mq" 2018-08-27 13:17:00 -04:00
hpsa.c scsi: hpsa: correct scsi command status issue after reset 2019-08-25 10:47:54 +02:00
hpsa.h scsi: hpsa: correct enclosure sas address 2018-07-10 22:25:03 -04:00
hpsa_cmd.h scsi: hpsa: correct ioaccel2 chaining 2019-07-10 09:53:37 +02:00
hptiop.c
hptiop.h
imm.c scsi: don't add scsi command result bytes 2018-06-26 12:27:07 -04:00
imm.h
initio.c
initio.h
ipr.c scsi: ipr: System hung while dlpar adding primary ipr adapter back 2018-09-21 12:35:39 -04:00
ipr.h scsi: ipr: System hung while dlpar adding primary ipr adapter back 2018-09-21 12:35:39 -04:00
ips.c scsi: ips: fix missing break in switch 2019-12-01 09:16:26 +01:00
ips.h scsi: ips: fix firmware timestamps for 32-bit 2018-04-20 19:40:17 -04:00
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: iscsi_tcp: Explicitly cast param in iscsi_sw_tcp_host_get_param 2019-12-01 09:16:28 +01:00
iscsi_tcp.h
jazz_esp.c scsi: jazz_esp, sun3x_esp: Pass struct device pointer in dma calls 2018-03-12 22:05:43 -04:00
Kconfig scsi: fix kconfig dependency warning related to 53C700_LE_ON_BE 2019-11-10 11:27:22 +01:00
lasi700.c
libiscsi.c scsi: libiscsi: Fix race between iscsi_xmit_task and iscsi_complete_task 2019-03-23 20:09:48 +01:00
libiscsi_tcp.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
mac53c94.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
mac53c94.h
mac_esp.c scsi: esp_scsi: Track residual for PIO transfers 2018-11-13 11:08:32 -08:00
mac_scsi.c scsi: mac_scsi: Fix pseudo DMA implementation, take 2 2019-07-26 09:14:19 +02:00
Makefile SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
megaraid.c scsi: megaraid: disable device when probe failed after enabled device 2019-10-29 09:19:29 +01:00
megaraid.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
mesh.c scsi: don't add scsi command result bytes 2018-06-26 12:27:07 -04:00
mesh.h
mvme16x_scsi.c
mvme147.c scsi: mvme147: stop using scsi_module.c 2018-03-19 22:54:47 -04:00
mvme147.h
mvumi.c SCSI misc on 20180610 2018-06-10 13:01:12 -07:00
mvumi.h
ncr53c8xx.c scsi: ncr53c8xx: remove ScsiResult macro 2018-07-10 22:42:47 -04:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Check for bus reset 2019-11-20 18:47:52 +01:00
NCR5380.h scsi: NCR5380: Have NCR5380_select() return a bool 2019-11-20 18:47:49 +01:00
nsp32.c
nsp32.h
nsp32_debug.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
nsp32_io.h
osst.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
osst.h
osst_detect.h
osst_options.h
pmcraid.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
pmcraid.h scsi: pmcraid: Use sgl_alloc_order() and sgl_free_order() 2018-02-13 21:49:15 -05:00
ppa.c
ppa.h
ps3rom.c
qla1280.c
qla1280.h
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c scsi: read host_busy via scsi_host_busy() 2018-06-26 12:53:26 -04:00
qlogicpti.h
raid_class.c scsi: raid_attrs: fix unused variable warning 2018-12-19 19:19:49 +01:00
script_asm.pl
scsi.c scsi: read host_busy via scsi_host_busy() 2018-06-26 12:53:26 -04:00
scsi.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
scsi_common.c
scsi_debug.c scsi: scsi_debug: fix write_same with virtual_gb problem 2019-03-13 14:02:30 -07:00
scsi_debugfs.c scsi: devinfo: use const_ilog2 for array indices 2018-04-20 19:14:28 -04:00
scsi_debugfs.h
scsi_devinfo.c scsi: core: add new RDAC LENOVO/DE_Series device 2019-05-08 07:21:49 +02:00
scsi_dh.c scsi: core: add new RDAC LENOVO/DE_Series device 2019-05-08 07:21:49 +02:00
scsi_error.c scsi: core: save/restore command resid for error handling 2019-10-29 09:19:49 +01:00
scsi_ioctl.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_lib.c scsi: core: Handle drivers which set sg_tablesize to zero 2019-11-20 18:45:10 +01:00
scsi_lib_dma.c
scsi_logging.c scsi: core: Reduce memory required for SCSI logging 2019-10-07 18:57:04 +02:00
scsi_logging.h
scsi_netlink.c
scsi_pm.c scsi: core: Synchronize request queue PM status only on successful resume 2019-01-22 21:40:32 +01:00
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c 2019-04-05 22:33:01 +02:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: try to get module before removing device 2019-10-29 09:19:50 +01:00
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
scsi_transport_iscsi.c scsi: iscsi: flush running unbind operations when removing a session 2019-04-20 09:15:56 +02:00
scsi_transport_sas.c SCSI misc on 20180610 2018-06-10 13:01:12 -07:00
scsi_transport_spi.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_transport_srp.c for-4.18/block-20180603 2018-06-04 07:58:06 -07:00
scsicam.c
sd.c scsi: sd: Ignore a failure to sync cache due to lack of authorization 2019-10-29 09:19:49 +01:00
sd.h block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00
sd_dif.c block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00
sd_zbc.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
sense_codes.h
ses.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
sg.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
sgiwd93.c
sim710.c
sni_53c710.c scsi: sni_53c710: fix compilation error 2019-11-10 11:27:21 +01:00
sr.c scsi: sr: Avoid that opening a CD-ROM hangs with runtime power management enabled 2018-08-03 13:53:51 -04:00
sr.h
sr_ioctl.c block: Switch struct packet_command to use struct scsi_sense_hdr 2018-08-02 15:22:13 -06:00
sr_vendor.c
st.c scsi: st: remove redundant pointer STbuffer 2018-08-08 21:15:54 -04:00
st.h
st_options.h
stex.c
storvsc_drv.c scsi: storvsc: Fix calculation of sub-channel count 2019-05-08 07:21:49 +02:00
sun3_scsi.c
sun3_scsi_vme.c
sun3x_esp.c scsi: jazz_esp, sun3x_esp: Pass struct device pointer in dma calls 2018-03-12 22:05:43 -04:00
sun_esp.c
virtio_scsi.c scsi: virtio_scsi: don't send sc payload with tmfs 2019-03-23 20:09:59 +01:00
vmw_pvscsi.c scsi: vmw_pscsi: Fix use-after-free in pvscsi_queue_lck() 2019-07-03 13:14:45 +02:00
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd719x.c scsi: wd719x: Use module_pci_driver 2018-05-01 23:30:12 -04:00
wd719x.h
xen-scsifront.c scsi: xen-scsifront: add error handling for xenbus_printf 2018-06-19 14:54:41 +02:00
zalon.c
zorro7xx.c
zorro_esp.c scsi: zorro_esp: Limit DMA transfers to 65536 bytes (except on Fastlane) 2019-12-17 20:36:03 +01:00