mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 00:39:48 +00:00
scsi: megaraid_sas: Send all non-RW I/Os for TYPE_ENCLOSURE device through firmware
The driver issues all non-ReadWrite I/Os for TYPE_ENCLOSURE devices through the fast path with invalid dev handle. Fast path in turn directs all the I/Os to the firmware. As firmware stopped handling those I/Os from SAS3.5 generation of controllers (Ventura generation and onwards) this will lead to I/O failures. Switch the driver to issue all the non-ReadWrite I/Os for TYPE_ENCLOSURE devices directly to firmware for SAS3.5 generation of controllers and later. Link: https://lore.kernel.org/r/20210528131307.25683-2-chandrakanth.patil@broadcom.com Cc: <stable@vger.kernel.org> # v5.11+ Signed-off-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com> Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
9fc4abfe5a
commit
79db830162
1 changed files with 8 additions and 2 deletions
|
@ -3203,6 +3203,8 @@ megasas_build_io_fusion(struct megasas_instance *instance,
|
|||
{
|
||||
int sge_count;
|
||||
u8 cmd_type;
|
||||
u16 pd_index = 0;
|
||||
u8 drive_type = 0;
|
||||
struct MPI2_RAID_SCSI_IO_REQUEST *io_request = cmd->io_request;
|
||||
struct MR_PRIV_DEVICE *mr_device_priv_data;
|
||||
mr_device_priv_data = scp->device->hostdata;
|
||||
|
@ -3237,8 +3239,12 @@ megasas_build_io_fusion(struct megasas_instance *instance,
|
|||
megasas_build_syspd_fusion(instance, scp, cmd, true);
|
||||
break;
|
||||
case NON_READ_WRITE_SYSPDIO:
|
||||
if (instance->secure_jbod_support ||
|
||||
mr_device_priv_data->is_tm_capable)
|
||||
pd_index = MEGASAS_PD_INDEX(scp);
|
||||
drive_type = instance->pd_list[pd_index].driveType;
|
||||
if ((instance->secure_jbod_support ||
|
||||
mr_device_priv_data->is_tm_capable) ||
|
||||
(instance->adapter_type >= VENTURA_SERIES &&
|
||||
drive_type == TYPE_ENCLOSURE))
|
||||
megasas_build_syspd_fusion(instance, scp, cmd, false);
|
||||
else
|
||||
megasas_build_syspd_fusion(instance, scp, cmd, true);
|
||||
|
|
Loading…
Reference in a new issue