Re: [PATCH] RDMA/rxe: Replace use of system_unbound_wq with system_dfl_wq

From: Leon Romanovsky

Date: Wed Mar 18 2026 - 11:09:47 EST


On Wed, Mar 18, 2026 at 01:20:01PM +0100, Marco Crivellari wrote:
> 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.

Your fix is the most accurate and technically sound among all proposals.

Thanks

> 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;
> +
> #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!
>
> --
>
> Marco Crivellari
>
> L3 Support Engineer