Re: [PATCH] RDMA/rxe: Replace use of system_unbound_wq with system_dfl_wq
From: Zhu Yanjun
Date: Wed Mar 18 2026 - 10:55:54 EST
在 2026/3/18 5:20, Marco Crivellari 写道:
On Tue, Mar 17, 2026 at 5:24 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote:Hi, Marco
[...]
Actually, RXE already have one workqueue in rxe_alloc_wq(), just use it.
Hi Leon,
I noticed the workqueue is declared as static into a C file. So I
changed it a bit, tell me if
it's not the right approach.
You can see the diff below:
---
diff --git a/drivers/infiniband/sw/rxe/rxe.h b/drivers/infiniband/sw/rxe/rxe.h
index ff8cd53f5f28..c56bae376c7f 100644
--- a/drivers/infiniband/sw/rxe/rxe.h
+++ b/drivers/infiniband/sw/rxe/rxe.h
@@ -121,4 +121,6 @@ void rxe_port_up(struct rxe_dev *rxe);
void rxe_port_down(struct rxe_dev *rxe);
void rxe_set_port_state(struct rxe_dev *rxe);
+extern struct workqueue_struct *rxe_wq;
https://patchwork.kernel.org/project/linux-rdma/patch/20260318025739.5058-1-yanjun.zhu@xxxxxxxxx/
Please see the above link. A fix has already been ready for this problem.
Zhu Yanjun
+
#endif /* RXE_H */
diff --git a/drivers/infiniband/sw/rxe/rxe_odp.c
b/drivers/infiniband/sw/rxe/rxe_odp.c
index d440c8cbaea5..ff904d5e54a7 100644
--- a/drivers/infiniband/sw/rxe/rxe_odp.c
+++ b/drivers/infiniband/sw/rxe/rxe_odp.c
@@ -545,7 +545,7 @@ static int rxe_ib_advise_mr_prefetch(struct ib_pd *ibpd,
work->frags[i].mr = mr;
}
- queue_work(system_dfl_wq, &work->work);
+ queue_work(rxe_wq, &work->work);
return 0;
diff --git a/drivers/infiniband/sw/rxe/rxe_task.c
b/drivers/infiniband/sw/rxe/rxe_task.c
index f522820b950c..801d06c969c9 100644
--- a/drivers/infiniband/sw/rxe/rxe_task.c
+++ b/drivers/infiniband/sw/rxe/rxe_task.c
@@ -6,7 +6,7 @@
#include "rxe.h"
-static struct workqueue_struct *rxe_wq;
+struct workqueue_struct *rxe_wq;
int rxe_alloc_wq(void)
{
---
Thanks!