c5758fc7 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Gracefully handle online FW update operation
Enhance driver to gracefully handle discrepancies in certain key data sizes between firmware update operations as mentioned below:
- The
scsi: mpi3mr: Gracefully handle online FW update operation
Enhance driver to gracefully handle discrepancies in certain key data sizes between firmware update operations as mentioned below:
- The driver displays an error message and marks the controller as unrecoverable if the firmware reports ReplyFrameSize that is greater than the current ReplyFrameSize.
- If the firmware reports ReplyFrameSize greater than the current ReplyFrameSize then the driver uses the current ReplyFrameSize while copying the reply messages.
- The driver displays an error message and marks the controller as unrecoverable if the firmware reports MaxOperationalReplyQueues less than the currently allocated operational reply queues count.
- If the firmware reports MaxOperationalReplyQueues that is greater than the currently allocated operational reply queue count then the driver ignores the new increased value and uses the previously allocated number of operational queues only.
- If the firmware reports MaxDevHandle greater than the previously used MaxDevHandle value after a reset then the driver re-allocates the 'device remove pending bitmap' buffer with the newer size using krealloc().
Link: https://lore.kernel.org/r/20211220141159.16117-18-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
b64845a7 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Detect async reset that occurred in firmware
Detect asynchronous reset that occurred in the firmware by polling for reset history bit of IOC status register is set and if that bit is s
scsi: mpi3mr: Detect async reset that occurred in firmware
Detect asynchronous reset that occurred in the firmware by polling for reset history bit of IOC status register is set and if that bit is set, then the driver waits for the controller to become ready and then re-initializes the controller.
Also reduce the time driver is waiting for the controller to acknowledge the reset action after issuing a specific reset action to the controller. The wait time is reduced from 510 seconds to 30 seconds. If the controller didn't acknowledge a specific reset action within the time interval then the driver marks the controller as unrecoverable instead of retrying two more times prior to giving up.
Link: https://lore.kernel.org/r/20211220141159.16117-17-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
c0b00a93 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Add IOC reinit function
Add IOC reinitialization function.
Link: https://lore.kernel.org/r/20211220141159.16117-16-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekan
scsi: mpi3mr: Add IOC reinit function
Add IOC reinitialization function.
Link: https://lore.kernel.org/r/20211220141159.16117-16-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
fe6db615 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Handle offline FW activation in graceful manner
Currently the driver marks the controller as unrecoverable if there is an asynchronous reset or fault during the initialization, reiniti
scsi: mpi3mr: Handle offline FW activation in graceful manner
Currently the driver marks the controller as unrecoverable if there is an asynchronous reset or fault during the initialization, reinitialization post reset, and OS resume.
Enhance driver to retry the initialization, re-initialization, and resume sequences for a maximum of 3 times if the controller became faulty or asynchronously reset due to a firmware activation during the initialization sequence.
Link: https://lore.kernel.org/r/20211220141159.16117-15-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
59bd9cfe | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Code refactor of IOC init - part2
Move the IOC initialization's bring up logic to mpi3mr_bring_ioc_ready() routine.
Link: https://lore.kernel.org/r/20211220141159.16117-14-sreekanth.r
scsi: mpi3mr: Code refactor of IOC init - part2
Move the IOC initialization's bring up logic to mpi3mr_bring_ioc_ready() routine.
Link: https://lore.kernel.org/r/20211220141159.16117-14-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
e3605f65 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Code refactor of IOC init - part1
Separate out reply and sense buffer allocation and initialization into two routines and call only initialization routine while issuing the IOC Init re
scsi: mpi3mr: Code refactor of IOC init - part1
Separate out reply and sense buffer allocation and initialization into two routines and call only initialization routine while issuing the IOC Init request message.
Also move out the event enable logic to a separate function.
Link: https://lore.kernel.org/r/20211220141159.16117-13-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
a6856cc4 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Fault IOC when internal command gets timeout
Save snapdump and fault the controller with the given reason code if it is already not in the fault or not in asynchronous reset. This ensu
scsi: mpi3mr: Fault IOC when internal command gets timeout
Save snapdump and fault the controller with the given reason code if it is already not in the fault or not in asynchronous reset. This ensures that soft reset is issued from the watchdog thread. This will also be used to handle initialization time faults/resets/timeout as in those cases immediate soft reset invocation is not required.
Link: https://lore.kernel.org/r/20211220141159.16117-12-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
2ac794ba | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Display IOC firmware package version
Display IOC firmware package version by reading component image upload data.
Link: https://lore.kernel.org/r/20211220141159.16117-11-sreekanth.red
scsi: mpi3mr: Display IOC firmware package version
Display IOC firmware package version by reading component image upload data.
Link: https://lore.kernel.org/r/20211220141159.16117-11-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
13fd7b15 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Handle unaligned PLL in unmap cmnds
The following special handling is needed for UNMAP commands issued to NVMe drives:
- On B0 boards, if the parameter list length is greater than 24
scsi: mpi3mr: Handle unaligned PLL in unmap cmnds
The following special handling is needed for UNMAP commands issued to NVMe drives:
- On B0 boards, if the parameter list length is greater than 24 and not a 16-byte multiple, then truncate the parameter list length to a 16-byte multiple.
- On A0 boards, if the parameter list length is greater than block descriptor data length + 8, then truncate the parameter list length to block descriptor data length + 8 value.
Link: https://lore.kernel.org/r/20211220141159.16117-10-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
4f08b963 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Increase internal cmnds timeout to 60s
- Increase internal command timeout to 60 seconds.
- Enable 16 device removal handshake processing in parallel in the device removal handsh
scsi: mpi3mr: Increase internal cmnds timeout to 60s
- Increase internal command timeout to 60 seconds.
- Enable 16 device removal handshake processing in parallel in the device removal handshake infrastructure.
Link: https://lore.kernel.org/r/20211220141159.16117-9-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
ba68779a | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Do access status validation before adding devices
Add validation for various access statuses prior to exposing attached target device to the operating system.
Link: https://lore.kerne
scsi: mpi3mr: Do access status validation before adding devices
Add validation for various access statuses prior to exposing attached target device to the operating system.
Link: https://lore.kernel.org/r/20211220141159.16117-8-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
17d6b9cf | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Add support for PCIe Managed Switch SES device
The SAS4 Controller firmware exposes the SES devices in Managed PCIe Switch as a PCIe Device Type SCSI Device (MPI3_DEVICE0_PCIE_DEVICE_I
scsi: mpi3mr: Add support for PCIe Managed Switch SES device
The SAS4 Controller firmware exposes the SES devices in Managed PCIe Switch as a PCIe Device Type SCSI Device (MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_SCSI_DEVICE).
Driver is enhanced to handle this device type by:
- Exposing the device to the upper layers and
- Not updating any hardware sectors & virtual boundary settings as these settings are needed only for NVMe devices.
Link: https://lore.kernel.org/r/20211220141159.16117-7-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
d00ff7c3 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Update MPI3 headers - part1
Update MPI3 headers.
Link: https://lore.kernel.org/r/20211220141159.16117-5-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@br
scsi: mpi3mr: Update MPI3 headers - part1
Update MPI3 headers.
Link: https://lore.kernel.org/r/20211220141159.16117-5-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
fbaa9aa4 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Don't reset IOC if cmnds flush with reset status
Don't issue the soft reset if internal commands are flushed out with reset status. Soft reset needs to be issued only if commands are r
scsi: mpi3mr: Don't reset IOC if cmnds flush with reset status
Don't issue the soft reset if internal commands are flushed out with reset status. Soft reset needs to be issued only if commands are really timed out.
Link: https://lore.kernel.org/r/20211220141159.16117-4-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|
a83ec831 | 20-Dec-2021 |
Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
scsi: mpi3mr: Replace spin_lock() with spin_lock_irqsave()
Use spin_lock_irqsave() instead of spin_lock() while acquiring reply_free_queue_lock & sbq_lock locks.
Link: https://lore.kernel.org/r/202
scsi: mpi3mr: Replace spin_lock() with spin_lock_irqsave()
Use spin_lock_irqsave() instead of spin_lock() while acquiring reply_free_queue_lock & sbq_lock locks.
Link: https://lore.kernel.org/r/20211220141159.16117-3-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
show more ...
|