All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Righi <arighi@nvidia.com>
To: Jake Hillion <jake@hillion.co.uk>
Cc: tj@kernel.org, changwoo@igalia.com, sched-ext@meta.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sched_ext: create_dsq: Return -EEXIST on duplicate request
Date: Wed, 26 Mar 2025 07:08:46 +0100	[thread overview]
Message-ID: <Z-OZ7tJWhRZbUk1l@gpd3> (raw)
In-Reply-To: <20250325224041.14088-1-jake@hillion.co.uk>

Hi Jake,

On Tue, Mar 25, 2025 at 10:41:52PM +0000, Jake Hillion wrote:
> create_dsq and therefore the scx_bpf_create_dsq kfunc currently silently
> ignore duplicate entries. As a sched_ext scheduler is creating each DSQ
> for a different purpose this is surprising behaviour.
> 
> Replace rhashtable_insert_fast which ignores duplicates with
> rhashtable_lookup_insert_fast that reports duplicates (though doesn't
> return their value). The rest of the code is structured correctly and
> this now returns -EEXIST.
> 
> Tested by adding an extra scx_bpf_create_dsq to scx_simple. Previously
> this was ignored, now init fails with a -17 code. Also ran scx_lavd
> which continued to work well.
> 
> Signed-off-by: Jake Hillion <jake@hillion.co.uk>

Nice catch! It'd be nice to test the correct behavior in
tools/testing/selftests/sched_ext/create_dsq.bpf.c, maybe you can send a
separate patch for this. In the meantime, this one looks good to me.

Acked-by: Andrea Righi <arighi@nvidia.com>

Thanks,
-Andrea

> ---
>  kernel/sched/ext.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
> index 21575d39c376..b47be2729ece 100644
> --- a/kernel/sched/ext.c
> +++ b/kernel/sched/ext.c
> @@ -4171,8 +4171,8 @@ static struct scx_dispatch_q *create_dsq(u64 dsq_id, int node)
>  
>  	init_dsq(dsq, dsq_id);
>  
> -	ret = rhashtable_insert_fast(&dsq_hash, &dsq->hash_node,
> -				     dsq_hash_params);
> +	ret = rhashtable_lookup_insert_fast(&dsq_hash, &dsq->hash_node,
> +					    dsq_hash_params);
>  	if (ret) {
>  		kfree(dsq);
>  		return ERR_PTR(ret);
> -- 
> 2.47.2
> 
> 

  reply	other threads:[~2025-03-26  6:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-25 22:41 [PATCH] sched_ext: create_dsq: Return -EEXIST on duplicate request Jake Hillion
2025-03-26  6:08 ` Andrea Righi [this message]
2025-03-26 20:33 ` Tejun Heo

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=Z-OZ7tJWhRZbUk1l@gpd3 \
    --to=arighi@nvidia.com \
    --cc=changwoo@igalia.com \
    --cc=jake@hillion.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sched-ext@meta.com \
    --cc=tj@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.