linux/drivers/scsi
Ranjan Kumar ca41929b2e scsi: mpi3mr: Check admin reply queue from Watchdog
Admin reply processing can be called from multiple contexts. The driver
uses an atomic flag for synchronization among multiple threads/context for
draining the admin replies.

Upon entering the admin processing routine, the driver will set the atomic
flag and start reply processing. When exiting the routine, the driver
resets the flag. However, there is a race condition when one thread (Thread
1) has processed replies and is about to reset the flag but in the meantime
few more replies are posted and another thread (Thread 2) is called to
process replies. Since the synchronization flag is still set, Thread 2 will
return without processing replies and those new replies will not be
flushed.

Make the watchdog thread monitor cases where admin ISR/poll call returns
due to another thread processing admin replies. If such an instance is
found, make driver call admin ISR to drain replies (if any).

Co-developed-by: Sumit Saxena <sumit.saxena@broadcom.com>
Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
Link: https://lore.kernel.org/r/20250220142528.20837-4-ranjan.kumar@broadcom.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2025-02-24 19:57:44 -05:00
..
aacraid scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
aic7xxx scsi: aic7xxx: Fix build 'aicasm' warning 2025-01-10 17:52:39 -05:00
aic94xx Merge patch series "Add LIBSAS_SHT_BASE for libsas" 2024-03-25 16:09:36 -04:00
arcmsr Mainly individually changelogged singleton patches. The patch series in 2025-01-26 17:50:53 -08:00
arm scsi: powertec: Declare local function static 2024-06-04 22:21:50 -04:00
be2iscsi scsi: be2iscsi: Simplify an alloc_workqueue() invocation 2024-08-22 21:28:55 -04:00
bfa Merge branch '6.13/scsi-fixes' into 6.14/scsi-staging 2025-01-10 15:20:30 -05:00
bnx2fc scsi: bnx2fc: Use kthread_create_on_cpu() 2025-01-02 12:54:41 -05:00
bnx2i scsi: bnx2i: Use kthread_create_on_cpu() 2025-01-02 12:54:41 -05:00
csiostor Merge patch series "Replace the "slave_*" function names" 2024-12-04 16:54:10 -05:00
cxgbi scsi: libcxgbi: Remove an unused field in struct cxgbi_device 2024-09-12 20:20:14 -04:00
cxlflash Mainly individually changelogged singleton patches. The patch series in 2025-01-26 17:50:53 -08:00
device_handler move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
elx scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
esas2r scsi: esas2r: Constify 'struct bin_attribute' 2025-01-02 15:07:45 -05:00
fcoe scsi: Rename .slave_alloc() and .slave_destroy() 2024-12-04 15:34:28 -05:00
fnic SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
hisi_sas SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
ibmvscsi Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
ibmvscsi_tgt scsi: ibmvscsi_tgt: Simplify an alloc_workqueue() invocation 2024-08-22 21:28:56 -04:00
isci scsi: isci: Remove unused isci_remote_device_reset_complete() 2025-01-02 13:21:55 -05:00
libfc scsi: Rename .slave_alloc() and .slave_destroy() 2024-12-04 15:34:28 -05:00
libsas scsi: Rename .device_configure() into .sdev_configure() 2024-12-04 15:34:28 -05:00
lpfc Mainly individually changelogged singleton patches. The patch series in 2025-01-26 17:50:53 -08:00
megaraid SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
mpi3mr scsi: mpi3mr: Check admin reply queue from Watchdog 2025-02-24 19:57:44 -05:00
mpt3sas SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
mvsas scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
pcmcia scsi: Add missing MODULE_DESCRIPTION() macros 2024-06-11 21:33:58 -04:00
pm8001 Mainly individually changelogged singleton patches. The patch series in 2025-01-26 17:50:53 -08:00
qedf Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
qedi Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
qla2xxx SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
qla4xxx Driver core and debugfs updates 2025-01-28 12:25:12 -08:00
smartpqi SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
snic scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
sym53c8xx_2 scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
.gitignore
3w-9xxx.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
3w-9xxx.h
3w-sas.c Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
3w-sas.h
3w-xxxx.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
3w-xxxx.h
53c700.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
53c700.h
53c700.scr
53c700_d.h_shipped
a100u2w.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
a100u2w.h
a2091.c
a2091.h
a3000.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
a3000.h
a4000t.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
advansys.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
aha152x.c scsi: aha152x: Switch to irq_get_nr_irqs() 2024-10-16 21:56:58 +02:00
aha152x.h
aha1542.c scsi: Add missing MODULE_DESCRIPTION() macros 2024-06-11 21:33:58 -04:00
aha1542.h
aha1740.c scsi: Add missing MODULE_DESCRIPTION() macros 2024-06-11 21:33:58 -04:00
aha1740.h
am53c974.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
atari_scsi.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
atp870u.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
atp870u.h
BusLogic.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
BusLogic.h scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
bvme6000_scsi.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
ch.c scsi: ch: Make ch_sysfs_class constant 2024-03-10 18:15:48 -04:00
constants.c
dc395x.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
dc395x.h
dmx3191d.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
esp_scsi.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
esp_scsi.h scsi: esp: Fix variable typo 2025-01-02 13:42:35 -05:00
fdomain.c
fdomain.h
fdomain_isa.c
fdomain_pci.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
FlashPoint.c scsi: FlashPoint: Remove redundant assignment to pointer currTar_Info 2024-04-08 22:01:19 -04:00
g_NCR5380.c scsi: Add missing MODULE_DESCRIPTION() macros 2024-06-11 21:33:58 -04:00
gvp11.c
gvp11.h
hosts.c scsi: core: Simplify an alloc_workqueue() invocation 2024-08-22 21:28:57 -04:00
hpsa.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
hpsa.h
hpsa_cmd.h
hptiop.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
hptiop.h
imm.c Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
imm.h
initio.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
initio.h
ipr.c Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
ipr.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ips.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
ips.h scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: Rename .device_configure() into .sdev_configure() 2024-12-04 15:34:28 -05:00
iscsi_tcp.h
jazz_esp.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
Kconfig block: remove the blk_integrity_profile structure 2024-06-14 10:20:06 -06:00
lasi700.c
libiscsi.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
libiscsi_tcp.c
mac53c94.c powerpc/macio: Make remove callback of macio driver void returned 2024-03-07 23:06:19 +11:00
mac53c94.h
mac_esp.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
mac_scsi.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
Makefile scsi: scsi_proto: Add structures and constants related to I/O groups and streams 2024-02-26 21:37:26 -05:00
megaraid.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
megaraid.h
mesh.c powerpc updates for 6.9 2024-03-15 17:53:48 -07:00
mesh.h
mvme16x_scsi.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
mvme147.c
mvme147.h
mvumi.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
mvumi.h
myrb.c scsi: myrb: Remove dead code 2025-01-02 13:46:45 -05:00
myrb.h scsi: myrb: Simplify an alloc_ordered_workqueue() invocation 2024-08-22 21:28:56 -04:00
myrs.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
myrs.h scsi: myrs: Simplify an alloc_ordered_workqueue() invocation 2024-08-22 21:28:56 -04:00
ncr53c8xx.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Clean up indentation 2024-08-12 22:05:50 -04:00
NCR5380.h scsi: NCR5380: Clean up indentation 2024-08-12 22:05:50 -04:00
nsp32.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
nsp32.h
nsp32_debug.c
nsp32_io.h
pmcraid.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
pmcraid.h
ppa.c Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
ppa.h
ps3rom.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
qla1280.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
qla1280.h scsi: qla1280: Fix hw revision numbering for ISP1020/1040 2024-11-20 21:32:48 -05:00
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
scsi_bsg.c
scsi_common.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
scsi_debug.c scsi: scsi_debug: Constify sdebug_driver_template 2025-01-10 16:21:14 -05:00
scsi_debugfs.c scsi: core: Improve the code for showing commands in debugfs 2024-04-08 22:12:33 -04:00
scsi_debugfs.h
scsi_devinfo.c scsi: core: Fix an incorrect comment 2024-06-13 15:21:24 -04:00
scsi_dh.c
scsi_error.c scsi: scsi_error: Add kernel-doc for exported functions 2025-01-10 15:15:02 -05:00
scsi_ioctl.c scsi: scsi_ioctl: Add kernel-doc for exported functions 2025-01-10 15:15:07 -05:00
scsi_lib.c block-6.14-20250131 2025-01-31 11:49:30 -08:00
scsi_lib_dma.c
scsi_lib_test.c scsi: core: Add kunit tests for scsi_check_passthrough() 2024-01-29 21:20:55 -05:00
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c
scsi_priv.h SCSI misc on 20240316 2024-03-16 16:31:12 -07:00
scsi_proc.c
scsi_proto_test.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
scsi_sas_internal.h
scsi_scan.c block-6.14-20250131 2025-01-31 11:49:30 -08:00
scsi_sysctl.c treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
scsi_sysfs.c Merge patch series "scsi: Constify 'struct bin_attribute'" 2025-01-02 15:08:42 -05:00
scsi_trace.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
scsi_transport_api.h
scsi_transport_fc.c scsi: scsi_transport_fc: Allow setting rport state to current state 2024-10-03 22:01:34 -04:00
scsi_transport_iscsi.c Driver core and debugfs updates 2025-01-28 12:25:12 -08:00
scsi_transport_sas.c scsi: transport: sas: spi: Fix kernel-doc for exported functions 2025-01-10 15:15:20 -05:00
scsi_transport_spi.c scsi: transport: sas: spi: Fix kernel-doc for exported functions 2025-01-10 15:15:20 -05:00
scsi_transport_srp.c
scsicam.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sd.c for-6.14/io_uring-20250119 2025-01-20 20:27:33 -08:00
sd.h scsi: sd: Atomic write support 2024-06-20 15:19:17 -06:00
sd_dif.c block: move integrity information into queue_limits 2024-06-14 10:20:07 -06:00
sd_trace.h
sd_zbc.c for-6.13/block-20241118 2024-11-18 16:50:08 -08:00
sense_codes.h
ses.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sg.c treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
sgiwd93.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
sim710.c
sni_53c710.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
sr.c block: add a queue_limits_commit_update_frozen helper 2025-01-10 07:29:23 -07:00
sr.h scsi: sr: Fix unintentional arithmetic wraparound 2024-05-15 10:05:24 -04:00
sr_ioctl.c minmax: scsi: fix mis-use of 'clamp()' in sr.c 2024-07-28 17:06:20 -07:00
sr_vendor.c
st.c scsi: st: Don't set pos_unknown just after device recognition 2025-01-10 18:00:38 -05:00
st.h scsi: st: Don't set pos_unknown just after device recognition 2025-01-10 18:00:38 -05:00
st_options.h
stex.c scsi: Constify struct pci_device_id 2024-12-09 21:59:52 -05:00
storvsc_drv.c scsi: storvsc: Ratelimit warning logs to prevent VM denial of service 2025-01-10 16:23:28 -05:00
sun3_scsi.c scsi: sun3: Mark driver struct with __refdata to prevent section mismatch 2024-11-06 21:06:44 -05:00
sun3_scsi_vme.c
sun3x_esp.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
sun_esp.c scsi: Switch back to struct platform_driver::remove() 2024-11-06 20:45:25 -05:00
virtio_scsi.c SCSI misc on 20250126 2025-01-26 16:12:44 -08:00
vmw_pvscsi.c scsi: Expand all create*_workqueue() invocations 2024-08-22 21:28:55 -04:00
vmw_pvscsi.h
wd33c93.c scsi: wd33c93: Don't use stale scsi_pointer value 2024-10-03 21:48:08 -04:00
wd33c93.h
wd719x.c
wd719x.h
xen-scsifront.c scsi: Convert SCSI drivers to .sdev_configure() 2024-12-04 15:34:28 -05:00
zalon.c scsi: zalon: Remove trailing space after \n newline 2024-09-12 20:25:43 -04:00
zorro7xx.c
zorro_esp.c