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:
[...]

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;
Hi, Marco

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!