From patchwork Tue Aug 11 13:39:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Hunter X-Patchwork-Id: 11709245 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3AF5C159A for ; Tue, 11 Aug 2020 13:40:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 27AF020782 for ; Tue, 11 Aug 2020 13:40:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728684AbgHKNkH (ORCPT ); Tue, 11 Aug 2020 09:40:07 -0400 Received: from mga06.intel.com ([134.134.136.31]:31275 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728672AbgHKNkG (ORCPT ); Tue, 11 Aug 2020 09:40:06 -0400 IronPort-SDR: zdKtDCR1xJwaILTZxya/RKb5v0G3x9guXvDyVk4EEtdLDcKafpv7FGnGhtoUlWY9kBDYvTnEyY KYG6irJjNHPw== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="215248822" X-IronPort-AV: E=Sophos;i="5.75,461,1589266800"; d="scan'208";a="215248822" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2020 06:40:06 -0700 IronPort-SDR: iCeibHRehNfaIjhB8D+vlQQyJdqQ049xecga7ERReYHFKNXY2v9kXLjdj8rv8C4Wg7R8KGa+xD vwk4x0Wge9UQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,461,1589266800"; d="scan'208";a="334576492" Received: from ahunter-desktop.fi.intel.com ([10.237.72.73]) by orsmga007.jf.intel.com with ESMTP; 11 Aug 2020 06:40:03 -0700 From: Adrian Hunter To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Alim Akhtar , Avri Altman , Venkat Gopalakrishnan , Can Guo Subject: [PATCH V2 1/2] scsi: ufs: Fix interrupt error message for shared interrupts Date: Tue, 11 Aug 2020 16:39:35 +0300 Message-Id: <20200811133936.19171-1-adrian.hunter@intel.com> X-Mailer: git-send-email 2.17.1 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org The interrupt might be shared, in which case it is not an error for the interrupt handler to be called when the interrupt status is zero, so don't print the message unless there was enabled interrupt status. Signed-off-by: Adrian Hunter Fixes: 9333d77573485 ("scsi: ufs: Fix irq return code") Reviewed-by: Avri Altman --- drivers/scsi/ufs/ufshcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index cdcf56679b41..bb2543010af9 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5994,7 +5994,7 @@ static irqreturn_t ufshcd_intr(int irq, void *__hba) intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS); } while (intr_status && --retries); - if (retval == IRQ_NONE) { + if (enabled_intr_status && retval == IRQ_NONE) { dev_err(hba->dev, "%s: Unhandled interrupt 0x%08x\n", __func__, intr_status); ufshcd_dump_regs(hba, 0, UFSHCI_REG_SPACE_SIZE, "host_regs: "); From patchwork Tue Aug 11 13:39:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Hunter X-Patchwork-Id: 11709247 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 61E2016B1 for ; Tue, 11 Aug 2020 13:40:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4293720771 for ; Tue, 11 Aug 2020 13:40:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728740AbgHKNkN (ORCPT ); Tue, 11 Aug 2020 09:40:13 -0400 Received: from mga06.intel.com ([134.134.136.31]:31275 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728711AbgHKNkJ (ORCPT ); Tue, 11 Aug 2020 09:40:09 -0400 IronPort-SDR: Z2rpHaFsmBDBoeYACsj9zQxIEhYyCJTKnjYryehezXl9d3daOl2NjYB6VGGxxzrGHimwkaK3af 6x2bU1t+l5vg== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="215248839" X-IronPort-AV: E=Sophos;i="5.75,461,1589266800"; d="scan'208";a="215248839" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2020 06:40:08 -0700 IronPort-SDR: yfqtbKQ6JwmZuDuGCtEaD1bqDMOZXASaxrLsE/mZCTfHivpULO2XmN905o74ood1AQr5nbDpS+ 3yix4T5mwemA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,461,1589266800"; d="scan'208";a="334576499" Received: from ahunter-desktop.fi.intel.com ([10.237.72.73]) by orsmga007.jf.intel.com with ESMTP; 11 Aug 2020 06:40:06 -0700 From: Adrian Hunter To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Alim Akhtar , Avri Altman , Venkat Gopalakrishnan , Can Guo Subject: [PATCH V2 2/2] scsi: ufs: Improve interrupt handling for shared interrupts Date: Tue, 11 Aug 2020 16:39:36 +0300 Message-Id: <20200811133936.19171-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811133936.19171-1-adrian.hunter@intel.com> References: <20200811133936.19171-1-adrian.hunter@intel.com> Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org For shared interrupts, the interrupt status might be zero, so check that first. Signed-off-by: Adrian Hunter Reviewed-by: Avri Altman --- drivers/scsi/ufs/ufshcd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index bb2543010af9..c315420e69e8 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5969,7 +5969,7 @@ static irqreturn_t ufshcd_sl_intr(struct ufs_hba *hba, u32 intr_status) */ static irqreturn_t ufshcd_intr(int irq, void *__hba) { - u32 intr_status, enabled_intr_status; + u32 intr_status, enabled_intr_status = 0; irqreturn_t retval = IRQ_NONE; struct ufs_hba *hba = __hba; int retries = hba->nutrs; @@ -5983,7 +5983,7 @@ static irqreturn_t ufshcd_intr(int irq, void *__hba) * read, make sure we handle them by checking the interrupt status * again in a loop until we process all of the reqs before returning. */ - do { + while (intr_status && retries--) { enabled_intr_status = intr_status & ufshcd_readl(hba, REG_INTERRUPT_ENABLE); if (intr_status) @@ -5992,7 +5992,7 @@ static irqreturn_t ufshcd_intr(int irq, void *__hba) retval |= ufshcd_sl_intr(hba, enabled_intr_status); intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS); - } while (intr_status && --retries); + } if (enabled_intr_status && retval == IRQ_NONE) { dev_err(hba->dev, "%s: Unhandled interrupt 0x%08x\n",