lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 030/343] switchtec: Remove immediate status check after submitting MRPC command
    Date
    From: Kelvin Cao <kelvin.cao@microchip.com>

    [ Upstream commit 526180408b815aa7b96fd48bd23cdd33ef04e38e ]

    After submitting a Firmware Download MRPC command, Switchtec firmware will
    delay Management EP BAR MemRd TLP responses by more than 10ms. This is a
    firmware limitation. Delayed MemRd completions are a problem for systems
    with a low Completion Timeout (CTO).

    The current driver checks the MRPC status immediately after submitting an
    MRPC command, which results in a delayed MemRd completion that may cause a
    Completion Timeout.

    Remove the immediate status check and rely on the check after receiving an
    interrupt or timing out.

    This is only a software workaround to the READ issue and a proper fix of
    this should be done in firmware.

    Fixes: 080b47def5e5 ("MicroSemi Switchtec management interface driver")
    Signed-off-by: Kelvin Cao <kelvin.cao@microchip.com>
    Signed-off-by: Wesley Sheng <wesley.sheng@microchip.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pci/switch/switchtec.c | 4 ----
    1 file changed, 4 deletions(-)

    diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
    index 0941555b84a52..73dba2739849b 100644
    --- a/drivers/pci/switch/switchtec.c
    +++ b/drivers/pci/switch/switchtec.c
    @@ -399,10 +399,6 @@ static void mrpc_cmd_submit(struct switchtec_dev *stdev)
    stuser->data, stuser->data_len);
    iowrite32(stuser->cmd, &stdev->mmio_mrpc->cmd);

    - stuser->status = ioread32(&stdev->mmio_mrpc->status);
    - if (stuser->status != SWITCHTEC_MRPC_STATUS_INPROGRESS)
    - mrpc_complete_cmd(stdev);
    -
    schedule_delayed_work(&stdev->mrpc_timeout,
    msecs_to_jiffies(500));
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 10:45    [W:4.077 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site