From patchwork Tue Nov 8 07:59:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiwoong Kim X-Patchwork-Id: 9416825 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 8C7396022E for ; Tue, 8 Nov 2016 08:00:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7B57C28AAD for ; Tue, 8 Nov 2016 08:00:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6E82C28ADD; Tue, 8 Nov 2016 08:00:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D77C728AAD for ; Tue, 8 Nov 2016 08:00:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752883AbcKHIAA convert rfc822-to-8bit (ORCPT ); Tue, 8 Nov 2016 03:00:00 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:56035 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752325AbcKHH77 (ORCPT ); Tue, 8 Nov 2016 02:59:59 -0500 Received: from epcpsbgm1new.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OGB01N2LCVUSH60@mailout3.samsung.com> for linux-scsi@vger.kernel.org; Tue, 08 Nov 2016 16:59:58 +0900 (KST) X-AuditID: cbfee61a-f79916d0000062de-79-582185fe8bf5 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1new.samsung.com (EPCPMTA) with SMTP id 6A.B5.25310.EF581285; Tue, 8 Nov 2016 16:59:58 +0900 (KST) Received: from DOKWMADKIM02 ([12.36.166.218]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OGB00GIACVYN390@mmp2.samsung.com>; Tue, 08 Nov 2016 16:59:58 +0900 (KST) From: Kiwoong Kim To: "James E.J. Bottomley" , linux-scsi@vger.kernel.org, "Martin K. Petersen" , vinholikatti@gmail.com Cc: =?UTF-8?B?7LaU7ZeM6rSR?= Subject: [PATCH v1] ufs: introduce UFSHCI_QUIRK_SKIP_INTR_AGGR quirk Date: Tue, 08 Nov 2016 16:59:58 +0900 Message-id: <002401d23996$1986d4b0$4c947e10$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 15.0 Thread-index: AdI5ley2Zz6JxCz2S4mTf55RnmYfsg== Content-language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsVy+t9jQd1/rYoRBjsuilnMvtDEaLFqYp5F 9/UdbBbLj/9jstixsMqB1WPnrLvsHg8ObWbx+Pj0FotH35ZVjB6fN8kFsEa52WSkJqakFimk 5iXnp2TmpdsqhYa46VooKeQl5qbaKkXo+oYEKSmUJeaUAnlGBmjAwTnAPVhJ3y7BLePz481M Be95K/bMm8HSwHiQu4uRk0NCwETi2qNXLBC2mMSFe+vZuhi5OIQEZjFK7D2wkhnCec8osfTf KmaQKjYBTYmnN6cygSREBOYzSizasROsnVnAUGLD/cmMILawgIvEg1uXwWwWAVWJZVv+MIHY vAKWEru+/2WFsAUlfky+B9WrLjFp3iJmCFtb4sm7C6wQJylI7P50FMwWEdCTuDf9GSNEjYjE vhfvGCcwAt2JMGoWklGzkIyahaRlASPLKkaJ1ILkguKk9FzDvNRyveLE3OLSvHS95PzcTYzg OHsmtYPx4C73Q4wCHIxKPLwdMooRQqyJZcWVuYcYJTiYlUR4uauBQrwpiZVVqUX58UWlOanF hxhNgZ6dyCwlmpwPTAF5JfGGJuYm5sYGFuaWliZGSuK8jbOfhQsJpCeWpGanphakFsH0MXFw SjUwcva/3fJicqGlgVRUvgxfwxQuu4PVb6UdbRTUwx6J/lH/OVnw5+zFmwPj/p/mTTouts53 d2vuUdv7lpyOBy7atjgsTnBfss7jQ9OhFuFjaosVFZnXcBpyrdpqvcPo+YerW2e3JF74yH7h Z0FG6raYjSwhkwysVpxSjPprddi+dM9Zr6ZbwY4+SizFGYmGWsxFxYkA2mCYUMkCAAA= X-MTR: 20000000000000000@CPGS Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If UFS driver resets interrupt aggregation timer and counter when there is a pending doorbell, an interrupt of IO completion of a corresponding task may be missed. That would cause a command timeout. If UFS driver resets interrupt aggregation timer and counter when there is a pending doorbell, a competion interrupt of a corresponing task may be issued. That would casue a command timeout. Signed-off-by: Kiwoong Kim --- drivers/scsi/ufs/ufshcd.c | 4 +++- drivers/scsi/ufs/ufshcd.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index c904854..65bbf59 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -3730,7 +3730,9 @@ static void ufshcd_transfer_req_compl(struct ufs_hba *hba) * false interrupt if device completes another request after resetting * aggregation and before reading the DB. */ - if (ufshcd_is_intr_aggr_allowed(hba)) + if ((ufshcd_is_intr_aggr_allowed(hba)) + && !(hba->quirks & UFSHCI_QUIRK_SKIP_INTR_AGGR)) + ufshcd_reset_intr_aggr(hba); ufshcd_reset_intr_aggr(hba); tr_doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL); diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 6a96f24..6a9c6e9 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -497,6 +497,7 @@ struct ufs_hba { #define UFSHCD_QUIRK_BROKEN_DWORD_UTRD UFS_BIT(7) #define UFSHCD_QUIRK_BROKEN_REQ_LIST_CLR UFS_BIT(8) #define UFSHCD_QUIRK_USE_OF_HCE UFS_BIT(9) + #define UFSHCI_QUIRK_SKIP_INTR_AGGR UFS_BIT(10) unsigned int quirks; /* Deviations from standard UFSHCI spec. */