All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Yiwei Lin <s921975628@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Davidlohr Bueso <dave@stgolabs.net>,
	Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] rbtree: update augmented data on the way down in rb_add_augmented_cached()
Date: Mon, 28 Sep 2026 17:00:01 +0200	[thread overview]
Message-ID: <20260928150001.GG4121620@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <20260928140513.GF4121620@noisy.programming.kicks-ass.net>

On Mon, Sep 28, 2026 at 04:05:13PM +0200, Peter Zijlstra wrote:
> On Mon, Sep 28, 2026 at 03:37:33PM +0200, Peter Zijlstra wrote:
> > On Mon, Sep 28, 2026 at 08:26:10PM +0800, Yiwei Lin wrote:
> > 
> > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> > > index 7455a83a6a990..60db4624b9897 100644
> > > --- a/kernel/sched/fair.c
> > > +++ b/kernel/sched/fair.c
> > > @@ -1066,9 +1066,20 @@ static inline bool min_vruntime_update(struct sched_entity *se, bool exit)
> > >  	       se->max_slice == old_max_slice;
> > >  }
> > >  
> > > +/*
> > > + * Fold @new's subtree data into @se, for each @se on @new's insertion path.
> > > + */
> > > +static inline void
> > > +min_vruntime_merge(struct sched_entity *se, struct sched_entity *new)
> > > +{
> > > +	__min_vruntime_update(se, &new->run_node);
> > > +	__min_slice_update(se, &new->run_node);
> > > +	__max_slice_update(se, &new->run_node);
> > > +}
> > >  
> > 
> > So min_vruntime_update() can be written in terms of this helper like:
> > 
> > static inline bool min_vruntime_update(struct sched_entity *se, bool exit)
> > {
> > 	u64 old_min_vruntime = se->min_vruntime;
> > 	u64 old_min_slice = se->min_slice;
> > 	u64 old_max_slice = se->max_slice;
> > 	struct rb_node *node = &se->run_node;
> > 
> > 	se->min_vruntime = se->vruntime;
> > 	se->min_slice = se->slice;
> > 	se->max_slice = se->slice;
> > 
> > 	min_vruntime_merge(se, node->rb_right);
> > 	min_vruntime_merge(se, node->rb_left);
> > 
> > 	return se->min_vruntime == old_min_vruntime &&
> > 	       se->min_slice == old_min_slice &&
> > 	       se->max_slice == old_max_slice;
> > }
> > 
> > And that is *very* close to being generalizable, obviating the need for
> > RBCOMPUTE. Does your LLM see a way to make that happen?

Also, since you're poking at things here, can you please include a patch
to rename RB_DECLARE_CALLBACKS_MAX()'s RBCOMPUTE, it is totally
different from the earlier RBCOMPUTE. Them sharing a name is highly
confusing.

Perhaps rename to something like RBVALUE?

  reply	other threads:[~2026-09-28 15:00 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 12:26 [PATCH 0/3] rbtree: fix rb_add_augmented_cached() descent and exercise rb_add*() helpers in rbtree_test Yiwei Lin
2026-09-28 12:26 ` [PATCH 1/3] rbtree_test: use rb_add() and rb_add_cached() for the basic tests Yiwei Lin
2026-09-28 12:26 ` [PATCH 2/3] rbtree: update augmented data on the way down in rb_add_augmented_cached() Yiwei Lin
2026-09-28 13:37   ` Peter Zijlstra
2026-09-28 14:05     ` Peter Zijlstra
2026-09-28 15:00       ` Peter Zijlstra [this message]
2026-09-28 19:15       ` Yiwei Lin
2026-09-28 21:37       ` Peter Zijlstra
2026-09-29  5:24         ` Yiwei Lin
2026-09-29  7:40           ` Peter Zijlstra
2026-09-28 12:26 ` [PATCH 3/3] rbtree_test: use rb_add_augmented_cached() for the cached augmented test Yiwei Lin

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=20260928150001.GG4121620@noisy.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=corbet@lwn.net \
    --cc=dave@stgolabs.net \
    --cc=juri.lelli@redhat.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=s921975628@gmail.com \
    --cc=vincent.guittot@linaro.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.