Finn Thain
ce7ec07aba
scsi: mac_scsi: Fix pseudo DMA implementation, take 2
...
commit 78ff751f8e6a9446e9fb26b2bff0b8d3f8974cbd upstream.
A system bus error during a PDMA transfer can mess up the calculation of
the transfer residual (the PDMA handshaking hardware lacks a byte
counter). This results in data corruption.
The algorithm in this patch anticipates a bus error by starting each
transfer with a MOVE.B instruction. If a bus error is caught the transfer
will be retried. If a bus error is caught later in the transfer (for a
MOVE.W instruction) the transfer gets failed and subsequent requests for
that target will use PIO instead of PDMA.
This avoids the "!REQ and !ACK" error so the severity level of that message
is reduced to KERN_DEBUG.
Cc: Michael Schmitz <schmitzmic@gmail.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: stable@vger.kernel.org # v4.14+
Fixes: 3a0f64bfa9 ("mac_scsi: Fix pseudo DMA implementation")
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Reported-by: Chris Jones <chris@martin-jones.com>
Tested-by: Stan Johnson <userm57@yahoo.com>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-07-26 09:14:19 +02: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: Update driver version to v1.40.00.09-20180709
2018-07-12 22:34:59 -04: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: remove ScsiResult macro
2018-07-10 22:42:47 -04: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 missing data copy in csio_scsi_err_handler()
2019-05-10 17:54:09 +02: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: Fix possible null-ptr-deref
2019-06-22 08:15:21 +02:00
dpt
sched/wait: Rename wait_queue_t => wait_queue_entry_t
2017-06-20 12:18:27 +02:00
esas2r
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
fcoe
scsi: fcoe: make use of fip_mode enum complete
2019-04-05 22:33:04 +02:00
fnic
treewide: Use array_size() in vmalloc()
2018-06-12 16:19:22 -07:00
hisi_sas
scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO
2019-04-05 22:32:57 +02:00
ibmvscsi
scsi: ibmvscsi: Fix empty event pool access during host removal
2019-03-27 14:14:40 +09:00
ibmvscsi_tgt
scsi: ibmvscsis: Ensure partition name is properly NUL terminated
2018-09-17 02:50:37 -04:00
isci
scsi: isci: initialize shost fully before calling scsi_add_host()
2019-02-27 10:08:53 +01:00
libfc
Revert "scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO"
2019-04-27 09:36:36 +02:00
libsas
scsi: libsas: delete sas port if expander discover failed
2019-06-22 08:15:21 +02:00
lpfc
scsi: lpfc: add check for loss of ndlp when sending RRQ
2019-06-19 08:18:02 +02:00
megaraid
scsi: megaraid_sas: Fix calculation of target ID
2019-07-26 09:14:19 +02:00
mpt3sas
scsi: mpt3sas: Fix kernel panic during expander reset
2019-05-04 09:20:20 +02: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
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07: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: Reset the FCF_ASYNC_{SENT|ACTIVE} flags
2019-06-15 11:54:09 +02: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: remove some redundant variables
2018-08-02 16:23:26 -04:00
ufs
scsi: ufs: Check that space was properly alloced in copy_query_response
2019-06-25 11:35:58 +08:00
.gitignore
scsi: scsi_devinfo: Add scsi_devinfo_tbl.c
2017-10-25 05:40:22 -04:00
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
scsi: 3w-9xxx: rework lock timeouts
2017-12-04 20:32:53 -05:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
scsi: drop bus reset for wd33c93-compatible boards
2017-08-25 17:21:10 -04:00
a2091.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
a3000.c
scsi: drop bus reset for wd33c93-compatible boards
2017-08-25 17:21:10 -04:00
a3000.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
aha1542.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
aha1542.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
scsi: NCR5380: Move bus reset to host reset
2017-08-25 17:21:11 -04:00
atp870u.c
scsi: atp870u: Replace mdelay() with msleep()
2018-07-30 23:17:53 -04:00
atp870u.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
BusLogic.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
BusLogic.h
bvme6000_scsi.c
ch.c
scsi: core: check for equality of result byte values
2018-06-26 12:27:06 -04:00
constants.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
dc395x.c
scsi: core: check for equality of result byte values
2018-06-26 12:27:06 -04:00
dc395x.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
dmx3191d.c
scsi: NCR5380: Move bus reset to host reset
2017-08-25 17:21:11 -04:00
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
scsi: NCR5380: Move bus reset to host reset
2017-08-25 17:21:11 -04:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
gdth_proc.c
scsi: core: remove Scsi_Cmnd typedef
2018-06-19 22:02:25 -04:00
gdth_proc.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
gvp11.c
scsi: drop bus reset for wd33c93-compatible boards
2017-08-25 17:21:10 -04:00
gvp11.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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 ioaccel2 chaining
2019-07-10 09:53:37 +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
scsi: hptiop: Simplify reset handling
2017-08-25 17:21:10 -04:00
hptiop.h
imm.c
scsi: don't add scsi command result bytes
2018-06-26 12:27:07 -04:00
imm.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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 firmware timestamps for 32-bit
2018-04-20 19:40:17 -04: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: don't set a bounce limit
2018-04-19 00:00:44 -04: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: core: Update SCSI_MQ_DEFAULT help text to match default
2018-08-27 12:26:10 -04:00
lasi700.c
parisc/scsi/lasi700: Fix section mismatches
2017-08-22 16:34:36 +02:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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: core: remove Scsi_Cmnd typedef
2018-06-19 22:02:25 -04: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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
mvme16x_scsi.c
mvme147.c
scsi: mvme147: stop using scsi_module.c
2018-03-19 22:54:47 -04:00
mvme147.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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: Always re-enable reselection interrupt
2019-07-26 09:14:18 +02:00
NCR5380.h
Revert "scsi: ncr5380: Increase register polling limit"
2019-07-26 09:14:18 +02:00
nsp32.c
scsi: nsp32: fix logic bug in error handling
2017-10-16 22:38:44 -04:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
osst_detect.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
osst_options.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
scsi: ppa: mark expected switch fall-throughs
2017-12-04 20:32:52 -05:00
ppa.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ps3rom.c
qla1280.c
timer: Remove init_timer_on_stack() in favor of timer_setup_on_stack()
2017-10-05 15:01:17 +02:00
qla1280.h
timer: Remove init_timer_on_stack() in favor of timer_setup_on_stack()
2017-10-05 15:01:17 +02:00
qlogicfas.c
scsi: qlogicfas: move bus_reset to host_reset
2017-08-25 17:21:11 -04:00
qlogicfas408.c
scsi: qlogicfas: move bus_reset to host_reset
2017-08-25 17:21:11 -04:00
qlogicfas408.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
qlogicpti.c
scsi: read host_busy via scsi_host_busy()
2018-06-26 12:53:26 -04:00
qlogicpti.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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: core: doc. fixes to scsi_common.c
2017-12-11 21:39:39 -05:00
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 misc on 20180815
2018-08-15 22:06:26 -07: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: Fix race on creating sense cache
2019-07-26 09:14:18 +02:00
scsi_lib_dma.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_logging.c
scsi_logging.h
SCSI misc on 20171114
2017-11-14 16:23:44 -08:00
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: dh: Remove scsi_dh_remove_device()
2017-12-07 21:13:45 -05:00
scsi_proc.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_sas_internal.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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: Avoid that SCSI device removal through sysfs triggers a deadlock
2018-08-02 15:53:36 -04:00
scsi_trace.c
scsi_transport_api.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sd.c
Revert "scsi: sd: Keep disk read-only when re-reading partition"
2019-05-31 06:46:01 -07: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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
scsi: drop bus reset for wd33c93-compatible boards
2017-08-25 17:21:10 -04:00
sim710.c
sni_53c710.c
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
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
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
st.c
scsi: st: remove redundant pointer STbuffer
2018-08-08 21:15:54 -04:00
st.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
st_options.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
stex.c
storvsc_drv.c
scsi: storvsc: Fix calculation of sub-channel count
2019-05-08 07:21:49 +02:00
sun3_scsi.c
scsi: NCR5380: Move bus reset to host reset
2017-08-25 17:21:11 -04:00
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
scsi: sun_esp: fix device reference leaks
2017-06-27 21:46:55 -04:00
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
scsi: drop bus reset for wd33c93-compatible boards
2017-08-25 17:21:10 -04:00
wd33c93.h
wd719x.c
scsi: wd719x: Use module_pci_driver
2018-05-01 23:30:12 -04:00
wd719x.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
xen-scsifront.c
scsi: xen-scsifront: add error handling for xenbus_printf
2018-06-19 14:54:41 +02:00
zalon.c
parisc/scsi/zalon: Fix section mismatches
2017-08-22 16:34:36 +02:00
zorro7xx.c
zorro_esp.c
scsi: zorro_esp: New driver for Amiga Zorro NCR53C9x boards
2018-04-19 00:00:44 -04:00