From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7AC26A054A for ; Tue, 25 Oct 2022 17:10:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2295542C5A; Tue, 25 Oct 2022 17:10:19 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 2EF6342C34 for ; Tue, 25 Oct 2022 17:10:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666710616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=69hAhyd1Hgv3R//ANtVAJqARjM8gB9fHQ970H/F/qtk=; b=jLw6YJr02pklZyyA2R1ICx/TGc8QfnfPSmU7S2ITG7G6VHYfVRyxlFdj0nRFPt+ld8QGDr G/Yjv73Hx6WML7Ha12PZ7I1QxeQ6gPDoIxfRkDYG01NdcnXuBPsGsjEOORnZwzF8ogwu5F Jr/C80O03FETz+JmeeNZxc6XA17oqR0= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-601-dT1ddFyXP36f3sFGEiSSaA-1; Tue, 25 Oct 2022 11:10:15 -0400 X-MC-Unique: dT1ddFyXP36f3sFGEiSSaA-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BFA4F3826A49; Tue, 25 Oct 2022 15:10:14 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.192.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id EF7B44A9255; Tue, 25 Oct 2022 15:10:13 +0000 (UTC) From: Kevin Traynor To: Chengwen Feng Cc: Dongdong Liu , dpdk stable Subject: patch 'net/hns3: fix crash when secondary process access FW' has been queued to stable release 21.11.3 Date: Tue, 25 Oct 2022 16:07:34 +0100 Message-Id: <20221025150734.142189-99-ktraynor@redhat.com> In-Reply-To: <20221025150734.142189-1-ktraynor@redhat.com> References: <20221025150734.142189-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/01/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/afa520b633f434f31bf3cd90cc8c78c0ac71c40d Thanks. Kevin --- >From afa520b633f434f31bf3cd90cc8c78c0ac71c40d Mon Sep 17 00:00:00 2001 From: Chengwen Feng Date: Mon, 5 Sep 2022 16:59:36 +0800 Subject: [PATCH] net/hns3: fix crash when secondary process access FW [ upstream commit a8f1f7cf1b429c3b95fa94f794f697a30f4c482d ] Currently, to prevent missing reporting of reset interrupts and quickly identify reset interrupts, the following logic is designed in the FW (firmware) command interface hns3_cmd_send: if an unprocessed interrupt exist (by checking reset registers), related reset task is scheduled. The secondary process may invoke the hns3_cmd_send interface (e.g. using proc-info query some stats). Unfortunately, the secondary process does not support reset processing, and a segment fault may occur if it schedules reset task. Fix it by limit the checking and scheduling of reset under only primary process. Fixes: 2790c6464725 ("net/hns3: support device reset") Signed-off-by: Chengwen Feng Signed-off-by: Dongdong Liu --- drivers/net/hns3/hns3_ethdev.c | 10 +++++++++- drivers/net/hns3/hns3_ethdev_vf.c | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 40a33549e0..ddd4323d19 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -5630,5 +5630,13 @@ hns3_is_reset_pending(struct hns3_adapter *hns) enum hns3_reset_level reset; - hns3_check_event_cause(hns, NULL); + /* + * Check the registers to confirm whether there is reset pending. + * Note: This check may lead to schedule reset task, but only primary + * process can process the reset event. Therefore, limit the + * checking under only primary process. + */ + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + hns3_check_event_cause(hns, NULL); + reset = hns3_get_reset_level(hns, &hw->reset.pending); if (reset != HNS3_NONE_RESET && hw->reset.level != HNS3_NONE_RESET && diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 0af4dcb324..ed20c30bc7 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1913,6 +1913,13 @@ hns3vf_is_reset_pending(struct hns3_adapter *hns) return false; - /* Check the registers to confirm whether there is reset pending */ - hns3vf_check_event_cause(hns, NULL); + /* + * Check the registers to confirm whether there is reset pending. + * Note: This check may lead to schedule reset task, but only primary + * process can process the reset event. Therefore, limit the + * checking under only primary process. + */ + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + hns3vf_check_event_cause(hns, NULL); + reset = hns3vf_get_reset_level(hw, &hw->reset.pending); if (hw->reset.level != HNS3_NONE_RESET && reset != HNS3_NONE_RESET && -- 2.37.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-10-25 14:19:00.785719795 +0100 +++ 0099-net-hns3-fix-crash-when-secondary-process-access-FW.patch 2022-10-25 14:18:58.545798571 +0100 @@ -1 +1 @@ -From a8f1f7cf1b429c3b95fa94f794f697a30f4c482d Mon Sep 17 00:00:00 2001 +From afa520b633f434f31bf3cd90cc8c78c0ac71c40d Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit a8f1f7cf1b429c3b95fa94f794f697a30f4c482d ] + @@ -21 +22,0 @@ -Cc: stable@dpdk.org @@ -31 +32 @@ -index 95d3c93c42..3d9f7c6ec7 100644 +index 40a33549e0..ddd4323d19 100644 @@ -34 +35 @@ -@@ -5603,5 +5603,13 @@ hns3_is_reset_pending(struct hns3_adapter *hns) +@@ -5630,5 +5630,13 @@ hns3_is_reset_pending(struct hns3_adapter *hns) @@ -50 +51 @@ -index 86f2ba24cc..a72535eb7d 100644 +index 0af4dcb324..ed20c30bc7 100644 @@ -53 +54 @@ -@@ -1865,6 +1865,13 @@ hns3vf_is_reset_pending(struct hns3_adapter *hns) +@@ -1913,6 +1913,13 @@ hns3vf_is_reset_pending(struct hns3_adapter *hns)