Re: [tip: sched/core] sched/topology: Introduce sched_group::flags

From: Vincent Guittot
Date: Wed May 24 2023 - 09:03:26 EST


On Tue, 23 May 2023 at 12:59, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> On Tue, Oct 05, 2021 at 02:12:02PM -0000, tip-bot2 for Ricardo Neri wrote:
>
> > index 4e8698e..c56faae 100644
> > --- a/kernel/sched/topology.c
> > +++ b/kernel/sched/topology.c
> > @@ -716,8 +716,20 @@ cpu_attach_domain(struct sched_domain *sd, struct root_domain *rd, int cpu)
> > tmp = sd;
> > sd = sd->parent;
> > destroy_sched_domain(tmp);
> > - if (sd)
> > + if (sd) {
> > + struct sched_group *sg = sd->groups;
> > +
> > + /*
> > + * sched groups hold the flags of the child sched
> > + * domain for convenience. Clear such flags since
> > + * the child is being destroyed.
> > + */
> > + do {
> > + sg->flags = 0;
> > + } while (sg != sd->groups);
>
>
> I happened to be reading this here code and aren't we missing:
>
> sg = sg->next;
>
> somewhere in that loop?

Yes, I missed that.

That being said, the only reason for sd to be degenerate is that there
is only 1 group. Otherwise we will keep it and degenerate parents
instead