From patchwork Thu Jan 19 15:49:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaitra P B X-Patchwork-Id: 9526273 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 2769F60459 for ; Thu, 19 Jan 2017 15:50:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1993128435 for ; Thu, 19 Jan 2017 15:50:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0E8D4284D1; Thu, 19 Jan 2017 15:50:53 +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.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=unavailable 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 ECD3328435 for ; Thu, 19 Jan 2017 15:50:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753733AbdASPuJ (ORCPT ); Thu, 19 Jan 2017 10:50:09 -0500 Received: from mail-ua0-f179.google.com ([209.85.217.179]:35460 "EHLO mail-ua0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753591AbdASPuH (ORCPT ); Thu, 19 Jan 2017 10:50:07 -0500 Received: by mail-ua0-f179.google.com with SMTP id y9so37232200uae.2 for ; Thu, 19 Jan 2017 07:50:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CbsOs7ofyDT9lwLyM8H6w9+lj9lsbEmN9BfTorddYFw=; b=h8ASG01C3wxMVG9ae1F18rle7fLPo1v/Zv4mBruoKc5pfEZdRwByIpTh2wi+as7eFU lOfeFDykKVscnijTMugoSiIkHeyTdGwNl1uA3TPBq2OXFrT9ou45V6KDbktpvAFsgyn1 tIb2GFRO0C3M3oq4BvqvVjBlVkNTvDJrciMxU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CbsOs7ofyDT9lwLyM8H6w9+lj9lsbEmN9BfTorddYFw=; b=tcLlrkqOGPMDxxlADRpfLzo+tZLg28QgnKXCMBWOg6SB9yAZUJPUiRGYaUxjWxnZB8 xNjGWT810KebcOM7ZNN6t78iaPAn1XcBJHiSJqZeKZDgkS8IGv3SMHWfEGuNY5OO5nhr yxL02IDvYGPpLlubD6HEUsOFM8fLOMo+kU21//ZtnjeY0wMwmWKR4JayZ2neJWQhGtBo 3Cb3AkbhLHDCaZs+muQ8IfOTJfG4dB5RbjWOg4+mUYaWzAH18FOIi0nLAKvJ/flTufmC p0Hsb11F7mzBPP2KN7ucHMxmajV2oLj3+ELQ5nQzlhaZ31AW8I06DLR011b7BHzlM2K2 CRTg== X-Gm-Message-State: AIkVDXJoYt6/viKAIIgWSJlPXeWtJte5kAGn9H0x6S0QU7oLZYDqOMLUWLhZ+PWm38FeXHjO X-Received: by 10.200.56.187 with SMTP id f56mr8123478qtc.234.1484841006609; Thu, 19 Jan 2017 07:50:06 -0800 (PST) Received: from host1.dhcp.avagotech.net ([192.19.239.250]) by smtp.gmail.com with ESMTPSA id t7sm2659815qtb.11.2017.01.19.07.50.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 07:50:06 -0800 (PST) From: Chaitra P B To: JBottomley@Parallels.com, jejb@kernel.org, hch@infradead.org Cc: martin.petersen@oracle.com, linux-scsi@vger.kernel.org, Sathya.Prakash@broadcom.com, kashyap.desai@broadcom.com, krishnaraddi.mankani@broadcom.com, linux-kernel@vger.kernel.org, suganath-prabu.subramani@broadcom.com, chaitra.basappa@broadcom.com, sreekanth.reddy@broadcom.com Subject: [PATCH 3/4] mpt3sas: Fix Firmware fault state 0x2100 during heavy 4K RR FIO stress test. Date: Thu, 19 Jan 2017 21:19:09 +0530 Message-Id: <1484840950-13656-4-git-send-email-chaitra.basappa@broadcom.com> X-Mailer: git-send-email 2.0.2 In-Reply-To: <1484840950-13656-1-git-send-email-chaitra.basappa@broadcom.com> References: <1484840950-13656-1-git-send-email-chaitra.basappa@broadcom.com> 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 Due existence of loop in the IO path our HBA will receive heavy IOs and also as driver is not updating the Reply Post Host Index frequently, So there will be a high chance that our Firmware unable to find any free entry in the Reply Post Descriptor Queue (i.e. Queue overflow occurs) and can observe 0x2100 firmware fault. So to fix this, we have defined a thresh hold value. After continuously processing this threshold number of reply descriptors driver will update the Reply Descriptor Host Index so that this threshold number of reply descriptors entries will be freed and these entries will be available for firmware and we won't observe this Firmware fault. We have defined this threshold value as 1/3rd of the hba queue depth. Signed-off-by: Chaitra P B Suganath Prabu --- drivers/scsi/mpt3sas/mpt3sas_base.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 722fab9..a3fe1fb 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -1040,6 +1040,25 @@ _base_interrupt(int irq, void *bus_id) reply_q->reply_post_free[reply_q->reply_post_host_index]. Default.ReplyFlags & MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK; completed_cmds++; + /* Update the reply post host index after continuously + * processing the threshold number of Reply Descriptors. + * So that FW can find enough entries to post the Reply + * Descriptors in the reply descriptor post queue. + */ + if (completed_cmds > ioc->hba_queue_depth/3) { + if (ioc->combined_reply_queue) { + writel(reply_q->reply_post_host_index | + ((msix_index & 7) << + MPI2_RPHI_MSIX_INDEX_SHIFT), + ioc->replyPostRegisterIndex[msix_index/8]); + } else { + writel(reply_q->reply_post_host_index | + (msix_index << + MPI2_RPHI_MSIX_INDEX_SHIFT), + &ioc->chip->ReplyPostHostIndex); + } + completed_cmds = 1; + } if (request_desript_type == MPI2_RPY_DESCRIPT_FLAGS_UNUSED) goto out; if (!reply_q->reply_post_host_index)