Backport more upstream patch to include all the fixes pushed upstream and add all the preliminary patch for multi-serdes support. While at it also move 2 patch in the 6xx numbering to the 000-1xx backport numbering to keep things tidy. All the affected patch manually and automatically refreshed. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> [ add comment, renumber patch, add more patch, fix PCS patch ] Link: https://github.com/openwrt/openwrt/pull/22479 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 6abcf751bc084804a9e5b3051442e8a2ce67f48a Mon Sep 17 00:00:00 2001
|
|
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Date: Mon, 5 Jan 2026 09:43:31 +0100
|
|
Subject: [PATCH] net: airoha: Fix schedule while atomic in airoha_ppe_deinit()
|
|
|
|
airoha_ppe_deinit() runs airoha_npu_ppe_deinit() in atomic context.
|
|
airoha_npu_ppe_deinit routine allocates ppe_data buffer with GFP_KERNEL
|
|
flag. Rely on rcu_replace_pointer in airoha_ppe_deinit routine in order
|
|
to fix schedule while atomic issue in airoha_npu_ppe_deinit() since we
|
|
do not need atomic context there.
|
|
|
|
Fixes: 00a7678310fe3 ("net: airoha: Introduce flowtable offload support")
|
|
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Link: https://patch.msgid.link/20260105-airoha-fw-ethtool-v2-1-3b32b158cc31@kernel.org
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
---
|
|
drivers/net/ethernet/airoha/airoha_ppe.c | 9 ++++++---
|
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/airoha/airoha_ppe.c
|
|
+++ b/drivers/net/ethernet/airoha/airoha_ppe.c
|
|
@@ -1547,13 +1547,16 @@ void airoha_ppe_deinit(struct airoha_eth
|
|
{
|
|
struct airoha_npu *npu;
|
|
|
|
- rcu_read_lock();
|
|
- npu = rcu_dereference(eth->npu);
|
|
+ mutex_lock(&flow_offload_mutex);
|
|
+
|
|
+ npu = rcu_replace_pointer(eth->npu, NULL,
|
|
+ lockdep_is_held(&flow_offload_mutex));
|
|
if (npu) {
|
|
npu->ops.ppe_deinit(npu);
|
|
airoha_npu_put(npu);
|
|
}
|
|
- rcu_read_unlock();
|
|
+
|
|
+ mutex_unlock(&flow_offload_mutex);
|
|
|
|
rhashtable_destroy(ð->ppe->l2_flows);
|
|
rhashtable_destroy(ð->flow_table);
|