linux/drivers/scsi/mpt3sas
Ahmed S. Darwish 547c0d1aeb scsi: mpt3sas: Remove in_interrupt()
_scsih_fw_event_cleanup_queue() waits for all outstanding firmware events
wokrqueue handlers to finish. If in_interrupt() is true, it cancels itself
and return early.

That in_interrupt() check is ill-defined and does not provide what the name
suggests: it does not cover all states in which it is safe to block and
call functions like cancel_work_sync().

That check is also not needed: _scsih_fw_event_cleanup_queue() is always
invoked from process context. Below is an analysis of its callers:

  - scsih_remove(), bound to PCI ->remove(), process context

  - scsih_shutdown(), bound to PCI ->shutdown(), process context

  - mpt3sas_scsih_clear_outstanding_scsi_tm_commands(), called by
      => _base_clear_outstanding_commands(), called by
        =>_base_fault_reset_work(), workqueue
        => mpt3sas_base_hard_reset_handler(), locks mutex

Remove the in_interrupt() check. Change _scsih_fw_event_cleanup_queue()
specification to a purely process-context function and mark it with
"Context: task, can sleep".

Link: https://lore.kernel.org/r/20201126132952.2287996-10-bigeasy@linutronix.de
Cc: Sathya Prakash <sathya.prakash@broadcom.com>
Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Cc: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
Cc: <MPT-FusionLinux.pdl@broadcom.com>
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-12-01 00:03:53 -05:00
..
mpi scsi: mpt3sas: Update MPI Headers to v02.00.57 2020-01-02 22:23:16 -05:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile scsi: mpt3sas: Capture IOC data for debugging purposes 2020-05-07 22:24:27 -04:00
mpt3sas_base.c SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
mpt3sas_base.h scsi: mpt3sas: Bump driver version to 35.101.00.00 2020-11-04 18:42:25 -05:00
mpt3sas_config.c scsi: mpt3sas: Memset config_cmds.reply buffer with zeros 2020-08-20 21:41:50 -04:00
mpt3sas_ctl.c scsi: mpt3sas: Add module parameter multipath_on_hba 2020-11-04 18:42:25 -05:00
mpt3sas_ctl.h scsi: mpt3sas: Reuse diag buffer allocated at load time 2019-09-30 22:32:47 -04:00
mpt3sas_debug.h
mpt3sas_debugfs.c scsi: mpt3sas: Remove unused including <linux/version.h> 2020-05-11 23:09:21 -04:00
mpt3sas_scsih.c scsi: mpt3sas: Remove in_interrupt() 2020-12-01 00:03:53 -05:00
mpt3sas_transport.c scsi: mpt3sas: Add module parameter multipath_on_hba 2020-11-04 18:42:25 -05:00
mpt3sas_trigger_diag.c scsi: mpt3sas: Display message before releasing diag buffer 2019-09-30 22:32:46 -04:00
mpt3sas_trigger_diag.h scsi: mpt3sas: Fix spelling mistake 2020-06-15 23:28:46 -04:00
mpt3sas_warpdrive.c scsi: mpt3sas: Convert uses of pr_<level> with MPT3SAS_FMT to ioc_<level> 2018-10-10 22:00:43 -04:00