Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1005457yba; Thu, 4 Apr 2019 02:14:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqzhANemJCd5SbqTXClHt7ER3bu7loqcQj77dfe+15U1l/0gl4VDoHxy86D6LV/BlOVKVFIx X-Received: by 2002:a62:2c91:: with SMTP id s139mr4694399pfs.196.1554369241595; Thu, 04 Apr 2019 02:14:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554369241; cv=none; d=google.com; s=arc-20160816; b=mYZucEPJ1fd1+TZfXTErT6tZut46tO5WW7w/Qum/DoJewrSuEatHMuwcCXYF3TbKXF 47laCYNVjbH88Vmf0/BBptWz2t5iqsez+u4zBKGa8O91FkdWolcMiWn0uEvrkLu5E2Hp DMdS6EaiwZCZCXORqwTpWbd2Ip4az2eWfDqB+0NHAJXeDNQ86dkh+M1p98neeCZskg5Q C/06Af6r7+v6J42jZO23eQrr8cSlGBIQe+8j78baBsGMlnxwwQvmTlaUx5dLMA61z/Gl XOoL7cDC6bOihZ22/89h73Kng4eLD5x1ye0aXtA6gawoS88IwBPZ1rgTO9NrxrTRZn4g HwBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Lr/AD7K8sb1DPB2UE0sxVPGEsUu+KIKVD4Fx5gr0K/Y=; b=Swsa0Pp9MX6Qc5jK18O0FsujoUcHNCQptmigQr9/h9P2CerJHBX3G4fDjGqD3Es7rO 4ZZjlft2LEy1dcLdT5yITHymKFj1XAgw4i/cYv3nmLGR7UvKB50oac22//y+UWzBuFmn FEI6R8Wxv++aA0H0Yk/ututsBUdT6VVI5KjOA69GtFom8wYu70wfwFicoF3V7KhSUV8L 55cffZph4GljK3U+m1jb7t8WQf3tT6ZlqobnqT4KWhquWfcGDDhwwBJ83aeGTufevzAR hPtTJRrje9D4Zo1JKmmI+wGXuYxyrZIlERfAiRanN2mC9jfS8IbGlncqzfA+J52V8D+k WGtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="J+2/glC1"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 124si10554367pgi.38.2019.04.04.02.13.46; Thu, 04 Apr 2019 02:14:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="J+2/glC1"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733233AbfDDJLz (ORCPT + 99 others); Thu, 4 Apr 2019 05:11:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:51798 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733221AbfDDJLw (ORCPT ); Thu, 4 Apr 2019 05:11:52 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 F41FF2075E; Thu, 4 Apr 2019 09:11:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554369111; bh=8lO5gEy46eNd8G05r3dccYthC+fYHJPP3jfMgxv/3WE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J+2/glC12DLVlUMn/vz/IdOSzC2CLAfM66weFxP3g7Dh/FfziXj5heacI4rcv0IAQ BistmHuu8S0bIglc+FNYJB+iMjfMevJ/u8Ec4QXAEvjgXZRZ26VyDyI65eL7N4qzo/ MpVpuRqX3MekucOr9j50DCqaVDCMJ9rfh7vltriI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Huazhong Tan , Xiaofei Tan , Shiju Jose , Peng Li , "David S. Miller" , Sasha Levin Subject: [PATCH 5.0 088/246] net: hns3: fix setting of the hns reset_type for rdma hw errors Date: Thu, 4 Apr 2019 10:46:28 +0200 Message-Id: <20190404084622.223619925@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084619.236418459@linuxfoundation.org> References: <20190404084619.236418459@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit eb4c2ccbad6c688be791e0c08640a40124558c03 ] Presently the hns reset_type for the roce errors is set in the hclge_log_and_clear_rocee_ras_error function. This function is also called to detect and clear roce errors while enabling the rdma error interrupts. However there is no hns reset requested for this case. This can cause issue of wrong reset_type used with subsequent hns reset as the reset_type set in the above case was not cleared. This patch moves setting of hns reset_type for the roce errors from hclge_log_and_clear_rocee_ras_error function to hclge_handle_rocee_ras_error. Fixes: 630ba007f475 ("net: hns3: add handling of RDMA RAS errors") Reported-by: Huazhong Tan Reported-by: Xiaofei Tan Signed-off-by: Shiju Jose Signed-off-by: Peng Li Signed-off-by: Huazhong Tan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- .../hisilicon/hns3/hns3pf/hclge_err.c | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c index efb6c1a25171..3ea72e4d9dc4 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c @@ -1094,10 +1094,10 @@ static int hclge_log_rocee_ovf_error(struct hclge_dev *hdev) return 0; } -static int hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) +static enum hnae3_reset_type +hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) { - enum hnae3_reset_type reset_type = HNAE3_FUNC_RESET; - struct hnae3_ae_dev *ae_dev = hdev->ae_dev; + enum hnae3_reset_type reset_type = HNAE3_NONE_RESET; struct device *dev = &hdev->pdev->dev; struct hclge_desc desc[2]; unsigned int status; @@ -1110,17 +1110,20 @@ static int hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) if (ret) { dev_err(dev, "failed(%d) to query ROCEE RAS INT SRC\n", ret); /* reset everything for now */ - HCLGE_SET_DEFAULT_RESET_REQUEST(HNAE3_GLOBAL_RESET); - return ret; + return HNAE3_GLOBAL_RESET; } status = le32_to_cpu(desc[0].data[0]); - if (status & HCLGE_ROCEE_RERR_INT_MASK) + if (status & HCLGE_ROCEE_RERR_INT_MASK) { dev_warn(dev, "ROCEE RAS AXI rresp error\n"); + reset_type = HNAE3_FUNC_RESET; + } - if (status & HCLGE_ROCEE_BERR_INT_MASK) + if (status & HCLGE_ROCEE_BERR_INT_MASK) { dev_warn(dev, "ROCEE RAS AXI bresp error\n"); + reset_type = HNAE3_FUNC_RESET; + } if (status & HCLGE_ROCEE_ECC_INT_MASK) { dev_warn(dev, "ROCEE RAS 2bit ECC error\n"); @@ -1132,9 +1135,9 @@ static int hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) if (ret) { dev_err(dev, "failed(%d) to process ovf error\n", ret); /* reset everything for now */ - HCLGE_SET_DEFAULT_RESET_REQUEST(HNAE3_GLOBAL_RESET); - return ret; + return HNAE3_GLOBAL_RESET; } + reset_type = HNAE3_FUNC_RESET; } /* clear error status */ @@ -1143,12 +1146,10 @@ static int hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) if (ret) { dev_err(dev, "failed(%d) to clear ROCEE RAS error\n", ret); /* reset everything for now */ - reset_type = HNAE3_GLOBAL_RESET; + return HNAE3_GLOBAL_RESET; } - HCLGE_SET_DEFAULT_RESET_REQUEST(reset_type); - - return ret; + return reset_type; } static int hclge_config_rocee_ras_interrupt(struct hclge_dev *hdev, bool en) @@ -1178,15 +1179,18 @@ static int hclge_config_rocee_ras_interrupt(struct hclge_dev *hdev, bool en) return ret; } -static int hclge_handle_rocee_ras_error(struct hnae3_ae_dev *ae_dev) +static void hclge_handle_rocee_ras_error(struct hnae3_ae_dev *ae_dev) { + enum hnae3_reset_type reset_type = HNAE3_NONE_RESET; struct hclge_dev *hdev = ae_dev->priv; if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) || hdev->pdev->revision < 0x21) - return HNAE3_NONE_RESET; + return; - return hclge_log_and_clear_rocee_ras_error(hdev); + reset_type = hclge_log_and_clear_rocee_ras_error(hdev); + if (reset_type != HNAE3_NONE_RESET) + HCLGE_SET_DEFAULT_RESET_REQUEST(reset_type); } static const struct hclge_hw_blk hw_blk[] = { -- 2.19.1