Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [PATCH v8 08/25] timer: Rework idle logic | Date | Tue, 10 Oct 2023 13:48:50 +0200 |
| |
On Tue, Oct 10 2023 at 13:19, Frederic Weisbecker wrote: > On Tue, Oct 10, 2023 at 12:15:09AM +0200, Thomas Gleixner wrote: >> > + base->is_idle = time_after(nextevt, basej + 1); >> >> This is wrongly ordered. base->is_idle must be updated _after_ >> evaluating base->timers_pending because the below can change nextevt, >> no? >> >> > + if (base->timers_pending) { >> > + /* If we missed a tick already, force 0 delta */ >> > + if (time_before(nextevt, basej)) >> > + nextevt = basej; >> > + expires = basem + (u64)(nextevt - basej) * TICK_NSEC; > > I suspect it doesn't matter in pratice: base->is_idle will remain false > if it's before/equal jiffies. > > Still it hurts the eyes so I agree the re-ordering should happen here and > this will even simplify a bit the next patch.
Right. Anna-Maria just pointed that out to me before, but we are all in violent agreement that it sucks :)
| |