lkml.org 
[lkml]   [2022]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 080/189] scsi: pm80xx: Enable upper inbound, outbound queues
    Date
    From: Ajish Koshy <Ajish.Koshy@microchip.com>

    [ Upstream commit bcd8a45223470e00b5f254018174d64a75db4bbe ]

    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: 05c6c029a44d ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/pm8001/pm80xx_hwi.c | 11 +++++++++++
    1 file changed, 11 insertions(+)

    diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
    index aa6f114be064..04746df26c6c 100644
    --- a/drivers/scsi/pm8001/pm80xx_hwi.c
    +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
    @@ -765,6 +765,10 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
    pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_severity = 0x01;
    pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt = 0x01;

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

    @@ -1026,6 +1030,13 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)
    if (0x0000 != gst_len_mpistate)
    return -EBUSY;

    + /*
    + * As per controller datasheet, after successful MPI
    + * initialization minimum 500ms delay is required before
    + * issuing commands.
    + */
    + msleep(500);
    +
    return 0;
    }

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-18 14:48    [W:4.030 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site