Skip to content

Commit bcd8a45

Browse files
Ajish Koshymartinkpetersen
authored andcommitted
scsi: pm80xx: Enable upper inbound, outbound queues
Executing driver on servers with more than 32 CPUs were faced with command timeouts. This is because we were not geting completions for commands submitted on IQ32 - IQ63. Set E64Q bit to enable upper inbound and outbound queues 32 to 63 in the MPI main configuration table. Added 500ms delay after successful MPI initialization as mentioned in controller datasheet. Link: https://lore.kernel.org/r/20220411064603.668448-3-Ajish.Koshy@microchip.com Fixes: 05c6c02 ("scsi: pm80xx: Increase number of supported queues") Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Acked-by: Jack Wang <jinpu.wang@ionos.com> Signed-off-by: Ajish Koshy <Ajish.Koshy@microchip.com> Signed-off-by: Viswas G <Viswas.G@microchip.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 294080e commit bcd8a45

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

drivers/scsi/pm8001/pm80xx_hwi.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,10 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
766766
pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_severity = 0x01;
767767
pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt = 0x01;
768768

769+
/* Enable higher IQs and OQs, 32 to 63, bit 16 */
770+
if (pm8001_ha->max_q_num > 32)
771+
pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt |=
772+
1 << 16;
769773
/* Disable end to end CRC checking */
770774
pm8001_ha->main_cfg_tbl.pm80xx_tbl.crc_core_dump = (0x1 << 16);
771775

@@ -1027,6 +1031,13 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)
10271031
if (0x0000 != gst_len_mpistate)
10281032
return -EBUSY;
10291033

1034+
/*
1035+
* As per controller datasheet, after successful MPI
1036+
* initialization minimum 500ms delay is required before
1037+
* issuing commands.
1038+
*/
1039+
msleep(500);
1040+
10301041
return 0;
10311042
}
10321043

0 commit comments

Comments
 (0)