lkml.org 
[lkml]   [2018]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 054/124] scsi: ufs: fix exception event handling
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Maya Erez <merez@codeaurora.org>

    [ Upstream commit 2e3611e9546c2ed4def152a51dfd34e8dddae7a5 ]

    The device can set the exception event bit in one of the response UPIU,
    for example to notify the need for urgent BKOPs operation. In such a
    case, the host driver calls ufshcd_exception_event_handler to handle
    this notification. When trying to check the exception event status (for
    finding the cause for the exception event), the device may be busy with
    additional SCSI commands handling and may not respond within the 100ms
    timeout.

    To prevent that, we need to block SCSI commands during handling of
    exception events and allow retransmissions of the query requests, in
    case of timeout.

    Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: Maya Erez <merez@codeaurora.org>
    Signed-off-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
    Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/scsi/ufs/ufshcd.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/scsi/ufs/ufshcd.c
    +++ b/drivers/scsi/ufs/ufshcd.c
    @@ -3447,6 +3447,7 @@ static void ufshcd_exception_event_handl
    hba = container_of(work, struct ufs_hba, eeh_work);

    pm_runtime_get_sync(hba->dev);
    + scsi_block_requests(hba->host);
    err = ufshcd_get_ee_status(hba, &status);
    if (err) {
    dev_err(hba->dev, "%s: failed to get exception status %d\n",
    @@ -3462,6 +3463,7 @@ static void ufshcd_exception_event_handl
    __func__, err);
    }
    out:
    + scsi_unblock_requests(hba->host);
    pm_runtime_put_sync(hba->dev);
    return;
    }

    \
     
     \ /
      Last update: 2018-08-04 11:16    [W:4.189 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site