From patchwork Fri Jan 20 14:42:12 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: 9528677 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 886D960459 for ; Fri, 20 Jan 2017 14:43:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7AF762864D for ; Fri, 20 Jan 2017 14:43:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6E4D22868B; Fri, 20 Jan 2017 14:43:33 +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 1E1DF2864D for ; Fri, 20 Jan 2017 14:43:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752709AbdATOmt (ORCPT ); Fri, 20 Jan 2017 09:42:49 -0500 Received: from mail-ua0-f182.google.com ([209.85.217.182]:33526 "EHLO mail-ua0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752701AbdATOmq (ORCPT ); Fri, 20 Jan 2017 09:42:46 -0500 Received: by mail-ua0-f182.google.com with SMTP id i68so61926435uad.0 for ; Fri, 20 Jan 2017 06:42:46 -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=QKV6B/snlsoGSRei+U8YeXNMVOnvHrxl/bINe3etWfw=; b=MP4eTtYCYfAvGfDjMR8dXyJomQu6wUAbiaX06T6DSX3BXK9YY9Ns03nvEFdw/Xs1vi 5auktvQLlGipMJSlijgCUbLywYkqZ4VyGFWF2TXWSD7qe9YtyuprEMXHOonEtULjZdvd IwPQkFtknpd1pv58mUMIZSm40Z/clhF3RFRxM= 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=QKV6B/snlsoGSRei+U8YeXNMVOnvHrxl/bINe3etWfw=; b=Sm82gJ/0uasGDDcZ4Ik2nZA/c/7TJ4lDKh65vd9DiB8d008OquWKRUJSHVpoBKpGfL 539xkkJc8+q2N2T27bV1ne8a6sMdniEQslALwMbRZbk8fC51xbaHu6g7EOZjTfRN3Xo7 gPUIosYEmLr/Ht5ZFgt0ooR9KRVtHzE2FUZ8KOpJlY8LbGkVf85VuwG6chZhyXFJSRm9 Il48GuQqn+LA9x8Rd+fEeyV0HWFebHBZXtO7ar2opraxR4JEU+IMHWLPbS78tdytsOo/ lSjvjIaDlokF7u8oFuAkROpcRhfxIBvfH+n4dzThtmcTG5eiqI8XLlT6K/k2svRl5Vep xyyA== X-Gm-Message-State: AIkVDXJl5n7ZTn3cF2neL4cU2vTJMheJMfvi92vYimxKb9sPtYHFG8qHAU1EOoT9oCLOFeVP X-Received: by 10.237.35.130 with SMTP id j2mr13111557qtc.45.1484923365676; Fri, 20 Jan 2017 06:42:45 -0800 (PST) Received: from host1.dhcp.avagotech.net ([192.19.239.250]) by smtp.gmail.com with ESMTPSA id x62sm6059032qkg.31.2017.01.20.06.42.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 20 Jan 2017 06:42:45 -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 v2 3/4] mpt3sas: Fix Firmware fault state 0x2100 during heavy 4K RR FIO stress test. Date: Fri, 20 Jan 2017 20:12:12 +0530 Message-Id: <1484923333-8509-4-git-send-email-chaitra.basappa@broadcom.com> X-Mailer: git-send-email 2.0.2 In-Reply-To: <1484923333-8509-1-git-send-email-chaitra.basappa@broadcom.com> References: <1484923333-8509-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 thresh hold number of reply descriptors driver will update the Reply Descriptor Host Index so that this thresh hold 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 Signed-off-by: Suganath Prabu S --- 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)