lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 056/292] scsi: arcmsr: Fix doorbell status being updated late on ARC-1886
    Date
    From: ching Huang <ching2048@areca.com.tw>

    [ Upstream commit d9a231226f28261a787535e08d0c78669e1ad010 ]

    It is possible for the IOP to be delayed in updating the doorbell
    status. The doorbell status should not be 0 so loop until the value
    changes.

    Link: https://lore.kernel.org/r/afdfdf7eabecf14632492c4987a6b9ac6312a7ad.camel@areca.com.tw
    Signed-off-by: ching Huang <ching2048@areca.com.tw>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/arcmsr/arcmsr_hba.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
    index 930972cda38c..42e494a7106c 100644
    --- a/drivers/scsi/arcmsr/arcmsr_hba.c
    +++ b/drivers/scsi/arcmsr/arcmsr_hba.c
    @@ -2419,10 +2419,17 @@ static void arcmsr_hbaD_doorbell_isr(struct AdapterControlBlock *pACB)

    static void arcmsr_hbaE_doorbell_isr(struct AdapterControlBlock *pACB)
    {
    - uint32_t outbound_doorbell, in_doorbell, tmp;
    + uint32_t outbound_doorbell, in_doorbell, tmp, i;
    struct MessageUnit_E __iomem *reg = pACB->pmuE;

    - in_doorbell = readl(&reg->iobound_doorbell);
    + if (pACB->adapter_type == ACB_ADAPTER_TYPE_F) {
    + for (i = 0; i < 5; i++) {
    + in_doorbell = readl(&reg->iobound_doorbell);
    + if (in_doorbell != 0)
    + break;
    + }
    + } else
    + in_doorbell = readl(&reg->iobound_doorbell);
    outbound_doorbell = in_doorbell ^ pACB->in_doorbell;
    do {
    writel(0, &reg->host_int_status); /* clear interrupt */
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-19 20:10    [W:3.972 / U:0.868 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site