linux/drivers/scsi
Mahesh Rajashekhara 2fe0b06c16 scsi: smartpqi: Fix DMA direction for RAID requests
[ Upstream commit 69695aeaa6 ]

Correct a SOP READ and WRITE DMA flags for some requests.

This update corrects DMA direction issues with SCSI commands removed from
the controller's internal lookup table.

Currently, SCSI READ BLOCK LIMITS (0x5) was removed from the controller
lookup table and exposed a DMA direction flag issue.

SCSI READ BLOCK LIMITS was recently removed from our controller lookup
table so the controller uses the respective IU flag field to set the DMA
data direction. Since the DMA direction is incorrect the FW never completes
the request causing a hang.

Some SCSI commands which use SCSI READ BLOCK LIMITS

      * sg_map
      * mt -f /dev/stX status

After updating controller firmware, users may notice their tape units
failing. This patch resolves the issue.

Also, the AIO path DMA direction is correct.

The DMA direction flag is a day-one bug with no reported BZ.

Fixes: 6c223761eb ("smartpqi: initial commit of Microsemi smartpqi driver")
Link: https://lore.kernel.org/r/165730605618.177165.9054223644512926624.stgit@brunhilda
Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
Reviewed-by: Scott Teel <scott.teel@microchip.com>
Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com>
Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@microchip.com>
Signed-off-by: Don Brace <don.brace@microchip.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-08-21 15:15:59 +02:00
..
aacraid scsi: aacraid: Improve compat_ioctl handlers 2020-12-30 11:53:02 +01:00
aic7xxx scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 2021-07-25 14:36:16 +02:00
aic94xx scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:36:16 +02:00
arcmsr scsi: arcmsr: Fix doorbell status being updated late on ARC-1886 2021-07-20 16:05:39 +02:00
arm SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
be2iscsi scsi: iscsi: Rel ref after iscsi_lookup_endpoint() 2022-04-20 09:23:16 +02:00
bfa scsi: bfa: Replace snprintf() with sysfs_emit() 2022-04-13 21:00:55 +02:00
bnx2fc scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe 2022-02-08 18:30:39 +01:00
bnx2i scsi: iscsi: Rel ref after iscsi_lookup_endpoint() 2022-04-20 09:23:16 +02:00
csiostor scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() 2021-11-18 14:04:18 +01:00
cxgbi scsi: iscsi: Rel ref after iscsi_lookup_endpoint() 2022-04-20 09:23:16 +02:00
cxlflash powerpc updates for 5.10 2020-10-16 12:21:15 -07:00
device_handler scsi: scsi_dh_rdac: Avoid crash during rdac_bus_attach() 2021-08-26 08:35:37 -04:00
dpt scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esas2r SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
fcoe scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac() 2022-06-09 10:21:15 +02:00
fnic scsi: fnic: Fix memleak in vnic_dev_init_devcmd2 2021-02-07 15:37:14 +01:00
hisi_sas scsi: hisi_sas: Limit max hw sectors for v3 HW 2022-07-21 21:20:14 +02:00
ibmvscsi scsi: ibmvfc: Fix invalid state machine BUG_ON() 2021-05-14 09:50:27 +02:00
ibmvscsi_tgt scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024 2022-04-20 09:23:21 +02:00
isci scsi: libsas: Add LUN number check in .slave_alloc callback 2021-07-25 14:36:16 +02:00
libfc scsi: libfc: Fix use after free in fc_exch_abts_resp() 2022-04-13 21:00:59 +02:00
libsas scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands 2022-04-08 14:39:52 +02:00
lpfc scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion 2022-06-22 14:13:14 +02:00
megaraid scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan 2022-04-20 09:23:24 +02:00
mpt3sas scsi: mpt3sas: Page fault in reply q processing 2022-03-23 09:13:29 +01:00
mvsas scsi: mvsas: Add PCI ID of RocketRaid 2640 2022-04-20 09:23:24 +02:00
pcmcia scsi: fdomain: Fix error return code in fdomain_probe() 2021-09-18 13:40:14 +02:00
pm8001 scsi: pm80xx: Enable upper inbound, outbound queues 2022-04-20 09:23:15 +02:00
qedf scsi: qedf: Fix refcount issue when LOGO is received during TMF 2022-02-16 12:54:19 +01:00
qedi scsi: qedi: Fix failed disconnect handling 2022-04-27 13:53:54 +02:00
qla2xxx scsi: qla2xxx: Zero undefined mailbox IN registers 2022-08-21 15:15:24 +02:00
qla4xxx scsi: iscsi: Rel ref after iscsi_lookup_endpoint() 2022-04-20 09:23:16 +02:00
smartpqi scsi: smartpqi: Fix DMA direction for RAID requests 2022-08-21 15:15:59 +02:00
snic scsi: snic: Simplify the return expression of svnic_cq_alloc() 2020-10-07 23:50:03 -04:00
sym53c8xx_2 SCSI misc on 20201023 2020-10-23 16:19:02 -07:00
ufs scsi: ufs: host: Hold reference returned by of_parse_phandle() 2022-08-03 12:00:45 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700_d.h_shipped
53c700.c SCSI misc on 20201023 2020-10-23 16:19:02 -07:00
53c700.h 53c700: improve non-coherent DMA handling 2020-09-25 06:20:43 +02:00
53c700.scr
a100u2w.c
a100u2w.h
a2091.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
a2091.h
a3000.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
a3000.h
a4000t.c
advansys.c scsi: advansys: Fix kernel pointer leak 2021-11-26 10:39:10 +01:00
aha152x.c scsi: aha152x: Fix aha152x_setup() __setup handler return value 2022-04-13 21:00:58 +02:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c scsi: aha1740: Fix an errro handling path in aha1740_probe() 2020-03-26 21:10:53 -04:00
aha1740.h
am53c974.c
atari_scsi.c
atp870u.c
atp870u.h
BusLogic.c scsi: BusLogic: Fix missing pr_cont() use 2021-09-18 13:40:35 +02:00
BusLogic.h scsi: BusLogic: Fix 64-bit system enumeration error for Buslogic 2021-06-03 09:00:43 +02:00
bvme6000_scsi.c
ch.c scsi: ch: remove ch_mutex() 2020-02-24 14:54:25 -05:00
constants.c scsi: core: Add DID_ALLOC_FAILURE and DID_MEDIUM_ERROR to hostbyte_table 2020-04-01 22:03:04 -04:00
dc395x.c scsi: dc395x: Fix a missing check on list iterator 2022-06-09 10:21:24 +02:00
dc395x.h
dmx3191d.c
dpt_i2o.c scsi: dpt_i2o: Remove set but not used 'pHba' 2020-09-01 22:15:47 -04:00
dpti.h scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esp_scsi.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
esp_scsi.h scsi: esp_scsi: Add support for FSC chip 2019-12-19 22:08:51 -05:00
fdomain_isa.c scsi: fdomain_isa: Merge branches in fdomain_isa_match() 2020-09-02 22:49:07 -04:00
fdomain_pci.c
fdomain.c
fdomain.h scsi: fdomain: Mark 'fdomain_pm_ops' as __maybe_unused 2020-07-08 01:12:44 -04:00
FlashPoint.c scsi: FlashPoint: Rename si_flags field 2021-07-14 16:56:40 +02:00
g_NCR5380.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
gdth_ioctl.h
gdth_proc.c scsi: gdth: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:10 -04:00
gdth_proc.h
gdth.c scsi: gdth: Make option_setup() static 2020-10-07 21:48:28 -04:00
gdth.h
gvp11.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
gvp11.h
hosts.c scsi: core: Fix shost->cmd_per_lun calculation in scsi_add_host_with_dma() 2021-10-27 09:56:56 +02:00
hpsa_cmd.h scsi: hpsa: Update copyright 2020-09-02 22:49:06 -04:00
hpsa.c scsi: hpsa: Fix memory leak in hpsa_init_one() 2020-10-29 21:55:21 -04:00
hpsa.h scsi: hpsa: Update copyright 2020-09-02 22:49:06 -04:00
hptiop.c
hptiop.h
imm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
imm.h
initio.c scsi: initio: Use module_pci_driver() to simplify the code 2020-10-07 21:48:28 -04:00
initio.h
ipr.c scsi: ipr: Fix missing/incorrect resource cleanup in error case 2022-06-22 14:13:14 +02:00
ipr.h scsi: ipr: Fix struct packed-not-aligned issues 2020-07-15 17:26:58 -04:00
ips.c scsi: ips: Convert strnlen() to memcpy() since result should not be NUL terminated 2020-07-24 22:32:00 -04:00
ips.h
iscsi_boot_sysfs.c scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj 2020-06-02 21:23:47 -04:00
iscsi_tcp.c block-5.10-2020-10-12 2020-10-13 12:12:44 -07:00
iscsi_tcp.h
jazz_esp.c scsi: jazz_esp: Add IRQ check 2021-05-14 09:50:27 +02:00
Kconfig scsi: lpfc: Add dependency on CPU_FREQ 2020-07-24 22:09:55 -04:00
lasi700.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
libiscsi_tcp.c scsi: libiscsi: use sendpage_ok() in iscsi_tcp_segment_map() 2020-10-02 15:27:08 -07:00
libiscsi.c scsi: iscsi: Stop queueing during ep_disconnect 2022-04-20 09:23:15 +02:00
mac_esp.c scsi: mac_esp: Use module_platform_driver to simplify the code 2020-10-02 21:52:53 -04:00
mac_scsi.c
mac53c94.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mac53c94.h
Makefile
megaraid.c scsi: megaraid: Fix error check return value of register_chrdev() 2022-06-09 10:20:52 +02:00
megaraid.h
mesh.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
mesh.h
mvme16x_scsi.c
mvme147.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
mvme147.h
mvumi.c scsi: mvumi: Fix error return in mvumi_io_attach() 2020-10-02 21:42:22 -04:00
mvumi.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
myrb.c scsi: myrb: Fix up null pointer access on myrb_cleanup() 2022-06-14 18:32:43 +02:00
myrb.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
myrs.c scsi: myrs: Fix crash in error case 2022-02-16 12:54:20 +01:00
myrs.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
ncr53c8xx.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ncr53c8xx.h
NCR5380.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
NCR5380.h
nsp32_debug.c
nsp32_io.h
nsp32.c scsi: nsp32: Remove unneeded semicolon 2020-09-15 17:34:18 -04:00
nsp32.h
pmcraid.c scsi: pmcraid: Fix missing resource cleanup in error case 2022-06-22 14:13:15 +02:00
pmcraid.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
ppa.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ppa.h
ps3rom.c
qla1280.c scsi: qla1280: Remove set but not used variable in qla1280_status_entry() 2020-09-09 22:37:48 -04:00
qla1280.h scsi: qla1280: Fix dma firmware download, if dma address is 64bit 2020-01-15 23:09:11 -05:00
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_common.c
scsi_debug.c scsi: scsi_debug: Fix zone transition to full condition 2022-06-29 08:59:46 +02:00
scsi_debugfs.c scsi: core: Show SCMD_LAST in text form 2022-01-27 10:54:29 +01:00
scsi_debugfs.h
scsi_devinfo.c scsi: scsi_devinfo: Add blacklist entry for HPE OPEN-V 2021-06-18 10:00:05 +02:00
scsi_dh.c scsi: dh: Add Fujitsu device to devinfo and dh lists 2020-07-08 01:16:23 -04:00
scsi_error.c SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
scsi_ioctl.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
scsi_lib_dma.c
scsi_lib.c scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() 2021-11-18 14:03:37 +01:00
scsi_logging.c scsi: core: Delete unnecessary buffer allocation for every loop iteration 2020-07-24 22:09:57 -04:00
scsi_logging.h scsi: core: Fix a compiler warning triggered by the SCSI logging code 2019-12-19 22:08:54 -05:00
scsi_netlink.c
scsi_pm.c scsi: block: pm: Always set request queue runtime active in blk_post_runtime_resume() 2022-01-27 10:54:08 +01:00
scsi_priv.h scsi: core: Add limitless cmd retry support 2020-10-02 18:53:06 -04:00
scsi_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
scsi_sas_internal.h
scsi_scan.c scsi: core: Avoid printing an error if target_alloc() returns -ENXIO 2021-08-26 08:35:37 -04:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: sysfs: Fix setting device state to SDEV_RUNNING 2021-12-01 09:19:05 +01:00
scsi_trace.c scsi: scsi_trace: Use get_unaligned_be24() 2020-03-16 22:08:36 -04:00
scsi_transport_api.h
scsi_transport_fc.c scsi: fc: Add 256GBit speed setting to SCSI FC transport 2020-09-02 22:49:07 -04:00
scsi_transport_iscsi.c scsi: iscsi: Fix unbound endpoint error handling 2022-04-20 09:23:30 +02:00
scsi_transport_sas.c scsi: core: Fixup calling convention for scsi_mode_sense() 2021-07-20 16:05:40 +02:00
scsi_transport_spi.c scsi: scsi_transport_spi: Set RQF_PM for domain validation commands 2021-01-12 20:18:15 +01:00
scsi_transport_srp.c scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state 2021-04-21 13:00:52 +02:00
scsi.c scsi: core: Put LLD module refcnt after SCSI device is released 2021-11-06 14:10:08 +01:00
scsi.h
scsicam.c block: move struct partition out of genhd.h 2020-03-24 07:57:08 -06:00
sd_dif.c
sd_zbc.c scsi: sd_zbc: Ensure buffer size is aligned to SECTOR_SIZE 2021-09-30 10:11:01 +02:00
sd.c scsi: sd: Fix potential NULL pointer dereference 2022-06-14 18:32:37 +02:00
sd.h SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
sense_codes.h scsi: core: Update additional sense codes list 2020-09-15 20:28:06 -04:00
ses.c scsi: ses: Fix unsigned comparison with less than zero 2021-10-17 10:43:33 +02:00
sg.c scsi: sg: Allow waiting for commands to complete on removed device 2022-08-21 15:15:24 +02:00
sgiwd93.c sgiwd93: convert to dma_alloc_noncoherent 2020-09-25 06:20:44 +02:00
sim710.c
sni_53c710.c scsi: sni_53c710: Add IRQ check 2021-05-14 09:50:27 +02:00
sr_ioctl.c
sr_vendor.c scsi: sr: Don't use GFP_DMA 2022-01-27 10:54:23 +01:00
sr.c scsi: sr: Don't use GFP_DMA 2022-01-27 10:54:23 +01:00
sr.h scsi: sr: get rid of sr global mutex 2020-02-24 15:01:57 -05:00
st_options.h
st.c scsi: st: Fix a use after free in st_open() 2021-04-07 15:00:05 +02:00
st.h
stex.c scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
storvsc_drv.c scsi: storvsc: Correctly handle multiple flags in srb_status 2021-07-20 16:05:43 +02:00
sun_esp.c scsi: sun_esp: Use module_platform_driver to simplify the code 2020-10-02 21:52:55 -04:00
sun3_scsi_vme.c
sun3_scsi.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sun3x_esp.c scsi: sun3x_esp: Add IRQ check 2021-05-14 09:50:27 +02:00
virtio_scsi.c scsi: virtio_scsi: Fix spelling mistake "Unsupport" -> "Unsupported" 2021-10-17 10:43:33 +02:00
vmw_pvscsi.c scsi: vmw_pvscsi: Set residual data length conditionally 2022-01-05 12:40:33 +01:00
vmw_pvscsi.h scsi: vmw_pvscsi: Expand vcpuHint to 16 bits 2022-06-22 14:13:14 +02:00
wd33c93.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
wd33c93.h
wd719x.c
wd719x.h
xen-scsifront.c xen/scsifront: don't use gnttab_query_foreign_access() for mapped status 2022-03-11 12:11:54 +01:00
zalon.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
zorro_esp.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
zorro7xx.c scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one() 2022-04-13 21:01:04 +02:00