From patchwork Wed Nov 11 12:00:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sreekanth Reddy X-Patchwork-Id: 7595501 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id AFC15BF90C for ; Wed, 11 Nov 2015 12:07:28 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D2DCC2073F for ; Wed, 11 Nov 2015 12:07:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E79FD20617 for ; Wed, 11 Nov 2015 12:07:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752818AbbKKMCJ (ORCPT ); Wed, 11 Nov 2015 07:02:09 -0500 Received: from mail-pa0-f45.google.com ([209.85.220.45]:34540 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752793AbbKKMCE (ORCPT ); Wed, 11 Nov 2015 07:02:04 -0500 Received: by padhx2 with SMTP id hx2so29745894pad.1 for ; Wed, 11 Nov 2015 04:02:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=avagotech.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=doxLGK5aIaJsffiyyNIu87Jvl5inAEytFAnwUK4usRk=; b=m2FIwZJcEEh86tYfclvg4nbspouh75nL6I0eWqjEBIe8f1jwYQleS3cJr0qbqP0iIN e2GuuNd4GEFi/f5emBWAwqEM6S/PKnBKgrtN79HZVSIWA/+aG8CxysjAfMmg4vGFwGfY 9/V9nkj+9M37aDJZciMiEG1oLuEh5Ok+PlZRA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=doxLGK5aIaJsffiyyNIu87Jvl5inAEytFAnwUK4usRk=; b=B5oQB9lo95C9ncS5Utts47z4lgQsAaj2mGZGByENyO1iTbZc6AWVUD6IW+f33PXXP7 p61j5QDx3SM+HAQ/asFmveZOjYyFghRPrDwQgPCPrJaW/ZXRZ/pJ4i1AI63xls/+OJVx CUyeOfnhAxucZSPGZg1A7rRvO28Zn4lAItTME6q5KoCmPkzkiLnaUCtI4dYgKjemZBax HyrlwQK2ibisQrtFXDSmv8QhtGBsOIIML38prupH/Ih67mb01ByPFwS222LrqcqqWpfv HZR7AIMAZSN89M/qRmEKSsR+y1o/oPaWHS56Wu9DUXjC8Ry7Q/zFhm8bg4imY5uUYfJy Q4ng== X-Gm-Message-State: ALoCoQkMMeRvFKEzskyY/9pK5dvi2IJqBZ+G9X5WAONlPskXynWIkrT/3YFhT2wyvC9R0waLhPf/ X-Received: by 10.66.141.231 with SMTP id rr7mr13679126pab.123.1447243323543; Wed, 11 Nov 2015 04:02:03 -0800 (PST) Received: from host1.lsi.com ([192.19.239.250]) by smtp.gmail.com with ESMTPSA id zi1sm9180851pbc.10.2015.11.11.04.01.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 11 Nov 2015 04:02:02 -0800 (PST) From: Sreekanth Reddy X-Google-Original-From: Sreekanth Reddy To: jejb@kernel.org Cc: martin.petersen@oracle.com, linux-scsi@vger.kernel.org, JBottomley@Parallels.com, Sathya.Prakash@avagotech.com, kashyap.desai@avagotech.com, linux-kernel@vger.kernel.org, hch@infradead.org, chaitra.basappa@avagotech.com, suganath-prabu.subramani@avagotech.com, Sreekanth Reddy , Sreekanth Reddy Subject: [PATCH RESEND 11/25] mpt3sas: fix for driver fails EEH, recovery from injected pci bus error Date: Wed, 11 Nov 2015 17:30:27 +0530 Message-Id: <1447243241-10912-12-git-send-email-Sreekanth.Reddy@avagotech.com> X-Mailer: git-send-email 2.0.2 In-Reply-To: <1447243241-10912-1-git-send-email-Sreekanth.Reddy@avagotech.com> References: <1447243241-10912-1-git-send-email-Sreekanth.Reddy@avagotech.com> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Sreekanth Reddy This patch stops the driver to invoke kthread (which remove the dead ioc) for some time while EEH recovery has started. This changes are ported from below mpt2sas driver patch 'commit b4730fb6e54a634a145c9c71c5cf856f00beb5cd ("mpt2sas: fix for driver fails EEH, recovery from injected pci bus error")' Signed-off-by: Sreekanth Reddy --- drivers/scsi/mpt3sas/mpt3sas_base.c | 19 ++++++++++++++++++- drivers/scsi/mpt3sas/mpt3sas_base.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 2b33e48..b5b1eb2 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -157,7 +157,7 @@ _base_fault_reset_work(struct work_struct *work) spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, flags); - if (ioc->shost_recovery) + if (ioc->shost_recovery || ioc->pci_error_recovery) goto rearm_timer; spin_unlock_irqrestore(&ioc->ioc_reset_in_progress_lock, flags); @@ -166,6 +166,20 @@ _base_fault_reset_work(struct work_struct *work) pr_err(MPT3SAS_FMT "SAS host is non-operational !!!!\n", ioc->name); + /* It may be possible that EEH recovery can resolve some of + * pci bus failure issues rather removing the dead ioc function + * by considering controller is in a non-operational state. So + * here priority is given to the EEH recovery. If it doesn't + * not resolve this issue, mpt3sas driver will consider this + * controller to non-operational state and remove the dead ioc + * function. + */ + if (ioc->non_operational_loop++ < 5) { + spin_lock_irqsave(&ioc->ioc_reset_in_progress_lock, + flags); + goto rearm_timer; + } + /* * Call _scsih_flush_pending_cmds callback so that we flush all * pending commands back to OS. This call is required to aovid @@ -193,6 +207,8 @@ _base_fault_reset_work(struct work_struct *work) return; /* don't rearm timer */ } + ioc->non_operational_loop = 0; + if ((doorbell & MPI2_IOC_STATE_MASK) != MPI2_IOC_STATE_OPERATIONAL) { rc = mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, FORCE_BIG_HAMMER); @@ -5162,6 +5178,7 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc) if (r) goto out_free_resources; + ioc->non_operational_loop = 0; return 0; out_free_resources: diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h index 08f46a7..a0d1f13 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.h +++ b/drivers/scsi/mpt3sas/mpt3sas_base.h @@ -845,6 +845,7 @@ struct MPT3SAS_ADAPTER { u16 cpu_msix_table_sz; u32 ioc_reset_count; MPT3SAS_FLUSH_RUNNING_CMDS schedule_dead_ioc_flush_running_cmds; + u32 non_operational_loop; /* internal commands, callback index */ u8 scsi_io_cb_idx;