patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Dengdui Huang <huangdengdui@huawei.com>
Cc: Jie Hai <haijie1@huawei.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'net/hns3: fix VF reset handler interruption' has been queued to stable release 21.11.6
Date: Thu,  7 Dec 2023 11:21:13 +0000	[thread overview]
Message-ID: <20231207112116.769502-21-ktraynor@redhat.com> (raw)
In-Reply-To: <20231207112116.769502-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 21.11.6

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/12/23. 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/9bb15a3d0f9e33a6887ce6c0985108a2e4e0b14b

Thanks.

Kevin

---
From 9bb15a3d0f9e33a6887ce6c0985108a2e4e0b14b Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Mon, 27 Nov 2023 21:39:03 +0800
Subject: [PATCH] net/hns3: fix VF reset handler interruption

[ upstream commit 94cf4db1603fe9074b5275cc4b63685fc91fdac5 ]

Currently, the VF reset interrupt is enabled before the reset
process is completed. If the VF reset is triggered by an IMP
reset, the initialization of IMP is may not completed, and the
VF reset interrupt may continue to be reported. In this scenario,
the VF reset being performed by the driver does not need to be
interrupted. Therefore, for VF reset, the driver has to enable
the interrupt after the end of reset.

Fixes: a5475d61fa34 ("net/hns3: support VF")

Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Acked-by: Jie Hai <haijie1@huawei.com>
---
 drivers/net/hns3/hns3_ethdev.h    | 12 ++++++++++++
 drivers/net/hns3/hns3_ethdev_vf.c | 19 +++++++++++++++++--
 drivers/net/hns3/hns3_intr.c      |  3 +--
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 093d11cd71..5ba9503bf8 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -1037,4 +1037,5 @@ void hns3vf_update_link_status(struct hns3_hw *hw, uint8_t link_status,
 void hns3vf_update_push_lsc_cap(struct hns3_hw *hw, bool supported);
 void hns3_clear_reset_event(struct hns3_hw *hw);
+void hns3vf_clear_reset_event(struct hns3_hw *hw);
 
 static inline bool
@@ -1049,3 +1050,14 @@ is_reset_pending(struct hns3_adapter *hns)
 }
 
+static inline void
+hns3_clear_reset_status(struct hns3_hw *hw)
+{
+	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
+
+	if (hns->is_vf)
+		hns3vf_clear_reset_event(hw);
+	else
+		hns3_clear_reset_event(hw);
+}
+
 #endif /* _HNS3_ETHDEV_H_ */
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 5b76aad261..0d1d271f37 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -612,4 +612,17 @@ hns3vf_enable_irq0(struct hns3_hw *hw)
 }
 
+void
+hns3vf_clear_reset_event(struct hns3_hw *hw)
+{
+	uint32_t clearval;
+	uint32_t cmdq_stat_reg;
+
+	cmdq_stat_reg = hns3_read_dev(hw, HNS3_VECTOR0_CMDQ_STAT_REG);
+	clearval = cmdq_stat_reg & ~BIT(HNS3_VECTOR0_RST_INT_B);
+	hns3_write_dev(hw, HNS3_VECTOR0_CMDQ_SRC_REG, clearval);
+
+	hns3vf_enable_irq0(hw);
+}
+
 static enum hns3vf_evt_cause
 hns3vf_check_event_cause(struct hns3_adapter *hns, uint32_t *clearval)
@@ -686,6 +699,8 @@ hns3vf_interrupt_handler(void *param)
 	}
 
-	/* Enable interrupt */
-	hns3vf_enable_irq0(hw);
+	/* Enable interrupt if it is not caused by reset */
+	if (event_cause == HNS3VF_VECTOR0_EVENT_MBX ||
+	    event_cause == HNS3VF_VECTOR0_EVENT_OTHER)
+		hns3vf_enable_irq0(hw);
 }
 
diff --git a/drivers/net/hns3/hns3_intr.c b/drivers/net/hns3/hns3_intr.c
index 9c5a4b018c..b049774e9a 100644
--- a/drivers/net/hns3/hns3_intr.c
+++ b/drivers/net/hns3/hns3_intr.c
@@ -2731,6 +2731,5 @@ hns3_reset_post(struct hns3_adapter *hns)
 		hns3_notify_reset_ready(hw, false);
 		hns3_clear_reset_level(hw, &hw->reset.pending);
-		if (!hns->is_vf)
-			hns3_clear_reset_event(hw);
+		hns3_clear_reset_status(hw);
 		__atomic_store_n(&hns->hw.reset.resetting, 0, __ATOMIC_RELAXED);
 		hw->reset.attempts = 0;
-- 
2.43.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-12-07 11:19:00.099501980 +0000
+++ 0021-net-hns3-fix-VF-reset-handler-interruption.patch	2023-12-07 11:18:59.650874005 +0000
@@ -1 +1 @@
-From 94cf4db1603fe9074b5275cc4b63685fc91fdac5 Mon Sep 17 00:00:00 2001
+From 9bb15a3d0f9e33a6887ce6c0985108a2e4e0b14b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 94cf4db1603fe9074b5275cc4b63685fc91fdac5 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -22,2 +23,2 @@
- drivers/net/hns3/hns3_intr.c      |  6 ++----
- 3 files changed, 31 insertions(+), 6 deletions(-)
+ drivers/net/hns3/hns3_intr.c      |  3 +--
+ 3 files changed, 30 insertions(+), 4 deletions(-)
@@ -26 +27 @@
-index 668f141e32..12d8299def 100644
+index 093d11cd71..5ba9503bf8 100644
@@ -29 +30 @@
-@@ -1036,4 +1036,5 @@ void hns3vf_update_link_status(struct hns3_hw *hw, uint8_t link_status,
+@@ -1037,4 +1037,5 @@ void hns3vf_update_link_status(struct hns3_hw *hw, uint8_t link_status,
@@ -34,2 +35,2 @@
- const char *hns3_get_media_type_name(uint8_t media_type);
-@@ -1050,3 +1051,14 @@ is_reset_pending(struct hns3_adapter *hns)
+ static inline bool
+@@ -1049,3 +1050,14 @@ is_reset_pending(struct hns3_adapter *hns)
@@ -49 +50 @@
- #endif /* HNS3_ETHDEV_H */
+ #endif /* _HNS3_ETHDEV_H_ */
@@ -51 +52 @@
-index 156fb905f9..916cc0fb1b 100644
+index 5b76aad261..0d1d271f37 100644
@@ -54 +55 @@
-@@ -532,4 +532,17 @@ hns3vf_enable_irq0(struct hns3_hw *hw)
+@@ -612,4 +612,17 @@ hns3vf_enable_irq0(struct hns3_hw *hw)
@@ -72 +73 @@
-@@ -606,6 +619,8 @@ hns3vf_interrupt_handler(void *param)
+@@ -686,6 +699,8 @@ hns3vf_interrupt_handler(void *param)
@@ -84 +85 @@
-index 52b5435a23..916bf30dcb 100644
+index 9c5a4b018c..b049774e9a 100644
@@ -87 +88 @@
-@@ -2750,6 +2750,5 @@ hns3_reset_post(struct hns3_adapter *hns)
+@@ -2731,6 +2731,5 @@ hns3_reset_post(struct hns3_adapter *hns)
@@ -95,8 +95,0 @@
-@@ -2801,6 +2800,5 @@ hns3_reset_fail_handle(struct hns3_adapter *hns)
- 
- 	hns3_clear_reset_level(hw, &hw->reset.pending);
--	if (!hns->is_vf)
--		hns3_clear_reset_event(hw);
-+	hns3_clear_reset_status(hw);
- 	if (hns3_reset_err_handle(hns)) {
- 		hw->reset.stage = RESET_STAGE_PREWAIT;


  parent reply	other threads:[~2023-12-07 11:21 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-07 11:20 patch 'net/txgbe: fix out of bound access' " Kevin Traynor
2023-12-07 11:20 ` patch 'doc: fix hns3 build option about max queue number' " Kevin Traynor
2023-12-07 11:20 ` patch 'doc: update features in hns3 guide' " Kevin Traynor
2023-12-07 11:20 ` patch 'doc: fix RSS flow description " Kevin Traynor
2023-12-07 11:20 ` patch 'doc: update versions recommendations for i40e and ice' " Kevin Traynor
2023-12-07 11:20 ` patch 'examples/ipsec-secgw: fix partial overflow' " Kevin Traynor
2023-12-07 11:20 ` patch 'eal/windows: fix build with recent MinGW' " Kevin Traynor
2023-12-07 11:21 ` patch 'pdump: fix error number on IPC response' " Kevin Traynor
2023-12-07 11:21 ` patch 'app/dumpcap: allow multiple invocations' " Kevin Traynor
2023-12-07 11:21 ` patch 'examples/ethtool: fix pause configuration' " Kevin Traynor
2023-12-07 11:21 ` patch 'test/hash: fix creation error log' " Kevin Traynor
2023-12-07 11:21 ` patch 'app/pipeline: add sigint handler' " Kevin Traynor
2023-12-07 11:21 ` patch 'doc: remove restriction on ixgbe vector support' " Kevin Traynor
2023-12-07 11:21 ` patch 'doc: fix some ordered lists' " Kevin Traynor
2023-12-07 11:21 ` patch 'doc: remove number of commands in vDPA guide' " Kevin Traynor
2023-12-07 11:21 ` patch 'mempool: fix get function documentation' " Kevin Traynor
2023-12-07 11:21 ` patch 'mempool: clarify enqueue/dequeue ops " Kevin Traynor
2023-12-07 11:21 ` patch 'ethdev: fix ESP packet type description' " Kevin Traynor
2023-12-07 11:21 ` patch 'net/hns3: fix ignored reset event' " Kevin Traynor
2023-12-07 11:21 ` patch 'net/hns3: fix reset event status' " Kevin Traynor
2023-12-07 11:21 ` Kevin Traynor [this message]
2023-12-07 11:21 ` patch 'net/af_xdp: make compatible with libbpf 0.8.0' " Kevin Traynor
2023-12-07 14:16   ` Kevin Traynor
2023-12-11 12:44     ` Loftus, Ciara
2023-12-11 15:27       ` Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231207112116.769502-21-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=haijie1@huawei.com \
    --cc=huangdengdui@huawei.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).