Re: [PATCH] timer/migration: Remove buggy early return on deactivation [was Re: Unexplained long boot delays [Was Re: [GIT PULL] RCU changes for v6.9]]

Frederic Weisbecker
2024-03-26T17:18:43Z

Le Tue, Mar 26, 2024 at 05:41:00PM +0100, Anna-Maria Behnsen a écrit :
> Frederic Weisbecker <frederic@kernel.org> writes:
> Now propagation goes on as GRP0:0 is completely idle. When executing
> tmigr_update_events() in the next step of walking the hierarchy via
> tmigr_inactive_up(), the arguments for tmigr_update_events() are set in
> the following way:
>
> group = GRP1:0
> child = GRP0:0
>
> Then at the begin of tmigr_update_events() the group event of child is
> updated - so all ignored events are removed (T0i), and the
> child->groupevt and child->next_expiry is updated with T1. This
> reevaluated child->groupevt is then queued/updated in the GRP1:0
> timerqueue.
>
> So T1 will be handled!
>
> As there is no parent, the top level group event is updated (see goto
> label "check_toplvl") and T1 will be still the first event.

Bah! Good point, I got confused there...

>
> > Fix those issues with removing the buggy related early return. Ignored
> > child events must not prevent from evaluating the other events within
> > the same group.
>
> I would prefere to keep this early return but skip it, when there is
> !group->parent (only a single level in hierarchy).
>
> Then it would prevent taking the group lock and making some random
> event updates which are done nevertheless on the next iteration of the
> hierarchy walk.

Ok sounds like a good plan!

Thanks.

>
> Thanks,
>
> Anna-Maria
>