linux/drivers/scsi/mpt3sas
Sreekanth Reddy d3f623ae8e scsi: mpt3sas: Add support for NVMe shutdown
Introduce function _scsih_nvme_shutdown() to issue IO Unit Control message
to IOC firmware with operation code 'shutdown'. This causes IOC firmware to
issue NVMe shutdown commands to all NVMe drives attached to it.

NVMe Shutdown:

NVMe devices need to have a specific shutdown sequence performed before
power is removed. For this, the IOC firmware needs to be notified when the
system is being shutdown. So during the system shutdown time, driver issues
an IO Unit Control request with operation code MPI26_CTRL_OP_SHUTDOWN to
inform firmware that a shutdown is initiated.

This shutdown command is issued only if NVMe devices are attached to the
controller.

During each NVMe device addition, driver reads pcie device page2 to get
shutdown latency (e.g. drive's RTD3 Entry Latency) and updates the max
latency value among the added NVMe drives in ioc->max_shutdown_latency.
This is used as the timeout value for IO Unit Control command at the time
of shutdown.

When a NVMe drive is removed and its shutdown latency matches which
ioc->max_shutdown_latency then ioc->max_shutdown_latency is updated to next
max value (by iterating over the list of available devices).  If the
shutdown latency is 0, then default timeout is set to six seconds.

Link: https://lore.kernel.org/r/20191226111333.26131-3-sreekanth.reddy@broadcom.com
Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-01-02 22:23:16 -05:00
..
mpi scsi: mpt3sas: Update MPI Headers to v02.00.57 2020-01-02 22:23:16 -05:00
Kconfig scsi: mpt3sas: Irq poll to avoid CPU hard lockups 2019-03-18 17:16:43 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpt3sas_base.c scsi: mpt3sas: Fix module parameter max_msix_vectors 2019-09-30 22:32:48 -04:00
mpt3sas_base.h scsi: mpt3sas: Add support for NVMe shutdown 2020-01-02 22:23:16 -05:00
mpt3sas_config.c scsi: mpt3sas: Enable interrupt coalescing on high iops 2019-06-18 19:46:26 -04:00
mpt3sas_ctl.c scsi: mpt3sas: Clean up some indenting 2019-10-09 22:33:43 -04:00
mpt3sas_ctl.h scsi: mpt3sas: Reuse diag buffer allocated at load time 2019-09-30 22:32:47 -04:00
mpt3sas_debug.h mpt2sas, mpt3sas: Remove SCSI_MPTXSAS_LOGGING entry from Kconfig 2015-11-11 18:31:14 -05:00
mpt3sas_scsih.c scsi: mpt3sas: Add support for NVMe shutdown 2020-01-02 22:23:16 -05:00
mpt3sas_transport.c scsi: mpt3sas: function pointers of request descriptor 2019-06-18 19:46:25 -04: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
mpt3sas_warpdrive.c scsi: mpt3sas: Convert uses of pr_<level> with MPT3SAS_FMT to ioc_<level> 2018-10-10 22:00:43 -04:00