linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Bob Pearson <rpearsonhpe@gmail.com>
Cc: jgg@nvidia.com, zyjzyj2000@gmail.com,
	matsuda-daisuke@fujitsu.com, lizhijian@fujitsu.com,
	linux-rdma@vger.kernel.org, jenny.hack@hpe.com,
	ian.ziemba@hpe.com
Subject: Re: [PATCH for-next 15/16] RDMA/rxe: Add workqueue support for tasks
Date: Tue, 18 Oct 2022 11:59:54 +0300	[thread overview]
Message-ID: <Y05rCgMya/D7VBV9@unreal> (raw)
In-Reply-To: <20221018043345.4033-16-rpearsonhpe@gmail.com>

On Mon, Oct 17, 2022 at 11:33:46PM -0500, Bob Pearson wrote:
> Add a third task type RXE_TASK_TYPE_WORKQUEUE to rxe_task.c.

Why do you need an extra type and not instead of RXE_TASK_TYPE_TASKLET?

> 
> Signed-off-by: Ian Ziemba <ian.ziemba@hpe.com>
> Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
> ---
>  drivers/infiniband/sw/rxe/rxe.c      |  9 ++-
>  drivers/infiniband/sw/rxe/rxe_task.c | 84 ++++++++++++++++++++++++++++
>  drivers/infiniband/sw/rxe/rxe_task.h | 10 +++-
>  3 files changed, 101 insertions(+), 2 deletions(-)

<...>

> +static struct workqueue_struct *rxe_wq;
> +
> +int rxe_alloc_wq(void)
> +{
> +	rxe_wq = alloc_workqueue("rxe_wq", WQ_MEM_RECLAIM |
> +				WQ_HIGHPRI | WQ_CPU_INTENSIVE |
> +				WQ_SYSFS, WQ_MAX_ACTIVE);

Are you sure that all these flags can be justified? WQ_MEM_RECLAIM?

> +
> +	if (!rxe_wq)
> +		return -ENOMEM;
> +
> +	return 0;
> +}

<...>

> +static void work_sched(struct rxe_task *task)
> +{
> +	if (!task->valid)
> +		return;
> +
> +	queue_work(rxe_wq, &task->work);
> +}
> +
> +static void work_do_task(struct work_struct *work)
> +{
> +	struct rxe_task *task = container_of(work, typeof(*task), work);
> +
> +	if (!task->valid)
> +		return;

How can it be that submitted task is not valid? Especially without any
locking.

> +
> +	do_task(task);
> +}

Thanks

> +

  reply	other threads:[~2022-10-18  9:00 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18  4:33 [PATCH for-next 00/16] Implement work queues for rdma_rxe Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 01/16] RDMA/rxe: Remove init of task locks from rxe_qp.c Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 02/16] RDMA/rxe: Removed unused name from rxe_task struct Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 03/16] RDMA/rxe: Split rxe_run_task() into two subroutines Bob Pearson
2022-10-18  4:33 ` [PATCH 04/16] for-next RDMA/rxe: Make rxe_do_task static Bob Pearson
2022-10-19  9:39   ` matsuda-daisuke
2022-10-18  4:33 ` [PATCH for-next 05/16] RDMA/rxe: Rename task->state_lock to task->lock Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 06/16] RDMA/rxe: Make task interface pluggable Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 07/16] RDMA/rxe: Simplify reset state handling in rxe_resp.c Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 08/16] RDMA/rxe: Split rxe_drain_resp_pkts() Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 09/16] RDMA/rxe: Handle qp error in rxe_resp.c Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 10/16] RDMA/rxe: Cleanup comp tasks in rxe_qp.c Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 11/16] RDMA/rxe: Remove __rxe_do_task() Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 12/16] RDMA/rxe: Make tasks schedule each other Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 13/16] RDMA/rxe: Implement disable/enable_task() Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 14/16] RDMA/rxe: Replace TASK_STATE_START by TASK_STATE_IDLE Bob Pearson
2022-10-18  4:33 ` [PATCH for-next 15/16] RDMA/rxe: Add workqueue support for tasks Bob Pearson
2022-10-18  8:59   ` Leon Romanovsky [this message]
2022-10-18 15:18     ` Bob Pearson
2022-10-18 17:52       ` Leon Romanovsky
2022-10-20  9:28       ` matsuda-daisuke
2022-10-18  4:33 ` [PATCH for-next 16/16] RDMA/rxe: Add parameters to control task type Bob Pearson
2022-10-18  9:02   ` Leon Romanovsky
2022-10-18 15:22     ` Bob Pearson
2022-10-18 17:55       ` Leon Romanovsky
2022-10-20 15:02 ` [PATCH for-next 00/16] Implement work queues for rdma_rxe haris iqbal
2022-10-21  2:46   ` matsuda-daisuke
2022-10-21  3:40     ` Bob Pearson
2022-10-21  6:02   ` Bob Pearson

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=Y05rCgMya/D7VBV9@unreal \
    --to=leon@kernel.org \
    --cc=ian.ziemba@hpe.com \
    --cc=jenny.hack@hpe.com \
    --cc=jgg@nvidia.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=lizhijian@fujitsu.com \
    --cc=matsuda-daisuke@fujitsu.com \
    --cc=rpearsonhpe@gmail.com \
    --cc=zyjzyj2000@gmail.com \
    /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).