Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3704821pxk; Tue, 29 Sep 2020 04:17:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxy2Vcn9CcR6gxq7ZGBYYbpwI32xa3dtLhjT86TnVpQ3XOAX35c3Q98ipTYnZM4Ql6e4y2e X-Received: by 2002:a17:907:408e:: with SMTP id nt22mr3197803ejb.169.1601378252773; Tue, 29 Sep 2020 04:17:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601378252; cv=none; d=google.com; s=arc-20160816; b=XAXs9A12WgRdI1De3VQCopTsinjHoVBjS3UqXf41AJRQ+zfX1yYFdgfP9lVT3egaWl 7za1xMUPnYSrekEgkRpTpOqmwxSiftjLxZ0f99+v4CE6ziFh+YdyyuFxrt4IhWUOZEr/ ds2P8PcDMxhyREzvILDt4Lg9PbML8vXy8VImCd/MUixrMj7/k2PNg8Csc09p4JRnb3Od E65zbGPGSkQqHYETcS7UoWVNpHhCLBgRZp6fC/9Phy9x8z1++IblIuNfeqL+UR8BQ6zF aNEysgpmzvgVXWocVsKth8e0LOxwI5tZke0/Nh8tX1/jlcdjB4CGlVDwPquCIy1UUt8v j+Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QwGa5VjXUQcQ6c6EzeTcx2kZYcSK00PQuGBdneUB6dQ=; b=Hq3bojpwLNciAeJVN0iyKucp6RDnafTlyq9thj4R6CEkCcKO6W27gtBGguwVgp7E72 XNZT51Yw/mIY6iuhsGHsY6BDtB2hdGdlQPcIBov9nu1Rc5peWLvFGgI96GrQmFAyv9kN IZ3N5FEogoCvrfOKOUUCYp2arC0LF5FZ22o+4oJocrRdf47SG8bRH69jhpCzB36dZGvp k7fafg5iRhHi1horv//89WuBBpSEq73VAccg9s74/r7cxvSVfZWY51aV23+Wm8g5ofwe C8HBUaaeXblhpiwCdv92l4oi28f/A+L4c6wtlU8N4EiQG/jqk9z+Vp9Hcv2NFoPwpVy7 rzcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="sNAXVf/p"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t5si2933284edi.523.2020.09.29.04.17.10; Tue, 29 Sep 2020 04:17:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="sNAXVf/p"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729194AbgI2LQD (ORCPT + 99 others); Tue, 29 Sep 2020 07:16:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:60460 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729546AbgI2LPw (ORCPT ); Tue, 29 Sep 2020 07:15:52 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9901F208B8; Tue, 29 Sep 2020 11:15:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601378151; bh=cnuao6vGGoRI0L+m/JtTfUT/fSfoRj6iIf6BDFAavtI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sNAXVf/pMDTP2tckVYmp4gU04yEmL7cb8GVVoMKBcAMaSt8haqYqk0sC2bOlpVkWy 3ohyGxsvkzZuZfnwwvuJEBETXmIKEF2EIEZYSdl4wfefBmUdEUVcpxnq0nCT3wnZ+F UsIzQis7O/6UDLmOpMCKetxnaBZuxNJTceidXXT4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sagar Biradar , Balsundar P , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 4.14 079/166] scsi: aacraid: Disabling TM path and only processing IOP reset Date: Tue, 29 Sep 2020 12:59:51 +0200 Message-Id: <20200929105939.157792242@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200929105935.184737111@linuxfoundation.org> References: <20200929105935.184737111@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sagar Biradar [ Upstream commit bef18d308a2215eff8c3411a23d7f34604ce56c3 ] Fixes the occasional adapter panic when sg_reset is issued with -d, -t, -b and -H flags. Removal of command type HBA_IU_TYPE_SCSI_TM_REQ in aac_hba_send since iu_type, request_id and fib_flags are not populated. Device and target reset handlers are made to send TMF commands only when reset_state is 0. Link: https://lore.kernel.org/r/1581553771-25796-1-git-send-email-Sagar.Biradar@microchip.com Reviewed-by: Sagar Biradar Signed-off-by: Sagar Biradar Signed-off-by: Balsundar P Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/aacraid/commsup.c | 2 +- drivers/scsi/aacraid/linit.c | 34 +++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index a284527999c55..65a5cd6a5f961 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c @@ -771,7 +771,7 @@ int aac_hba_send(u8 command, struct fib *fibptr, fib_callback callback, hbacmd->request_id = cpu_to_le32((((u32)(fibptr - dev->fibs)) << 2) + 1); fibptr->flags |= FIB_CONTEXT_FLAG_SCSI_CMD; - } else if (command != HBA_IU_TYPE_SCSI_TM_REQ) + } else return -EINVAL; diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 053a31c5485f3..e0e728d0dd5e7 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c @@ -736,7 +736,11 @@ static int aac_eh_abort(struct scsi_cmnd* cmd) status = aac_hba_send(HBA_IU_TYPE_SCSI_TM_REQ, fib, (fib_callback) aac_hba_callback, (void *) cmd); - + if (status != -EINPROGRESS) { + aac_fib_complete(fib); + aac_fib_free(fib); + return ret; + } /* Wait up to 15 secs for completion */ for (count = 0; count < 15; ++count) { if (cmd->SCp.sent_command) { @@ -915,11 +919,11 @@ static int aac_eh_dev_reset(struct scsi_cmnd *cmd) info = &aac->hba_map[bus][cid]; - if (info->devtype != AAC_DEVTYPE_NATIVE_RAW && - info->reset_state > 0) + if (!(info->devtype == AAC_DEVTYPE_NATIVE_RAW && + !(info->reset_state > 0))) return FAILED; - pr_err("%s: Host adapter reset request. SCSI hang ?\n", + pr_err("%s: Host device reset request. SCSI hang ?\n", AAC_DRIVERNAME); fib = aac_fib_alloc(aac); @@ -934,7 +938,12 @@ static int aac_eh_dev_reset(struct scsi_cmnd *cmd) status = aac_hba_send(command, fib, (fib_callback) aac_tmf_callback, (void *) info); - + if (status != -EINPROGRESS) { + info->reset_state = 0; + aac_fib_complete(fib); + aac_fib_free(fib); + return ret; + } /* Wait up to 15 seconds for completion */ for (count = 0; count < 15; ++count) { if (info->reset_state == 0) { @@ -973,11 +982,11 @@ static int aac_eh_target_reset(struct scsi_cmnd *cmd) info = &aac->hba_map[bus][cid]; - if (info->devtype != AAC_DEVTYPE_NATIVE_RAW && - info->reset_state > 0) + if (!(info->devtype == AAC_DEVTYPE_NATIVE_RAW && + !(info->reset_state > 0))) return FAILED; - pr_err("%s: Host adapter reset request. SCSI hang ?\n", + pr_err("%s: Host target reset request. SCSI hang ?\n", AAC_DRIVERNAME); fib = aac_fib_alloc(aac); @@ -994,6 +1003,13 @@ static int aac_eh_target_reset(struct scsi_cmnd *cmd) (fib_callback) aac_tmf_callback, (void *) info); + if (status != -EINPROGRESS) { + info->reset_state = 0; + aac_fib_complete(fib); + aac_fib_free(fib); + return ret; + } + /* Wait up to 15 seconds for completion */ for (count = 0; count < 15; ++count) { if (info->reset_state <= 0) { @@ -1046,7 +1062,7 @@ static int aac_eh_bus_reset(struct scsi_cmnd* cmd) } } - pr_err("%s: Host adapter reset request. SCSI hang ?\n", AAC_DRIVERNAME); + pr_err("%s: Host bus reset request. SCSI hang ?\n", AAC_DRIVERNAME); /* * Check the health of the controller -- 2.25.1