lkml.org 
[lkml]   [2022]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v4 05/16] add_timer_on(): Make sure callers have TIMER_PINNED flag
On Fri, Nov 04, 2022 at 03:57:26PM +0100, Anna-Maria Behnsen wrote:
> The implementation of the hierachical timer pull model will change the
> timer bases per CPU. Timers, that have to expire on a specific CPU, require
> the TIMER_PINNED flag. Otherwise they will be queued on the dedicated CPU
> but in global timer base and those timers could also expire on other
> CPUs. Timers with TIMER_DEFERRABLE flag end up in a separate base anyway
> and are executed on the local CPU only.
>
> Therefore add the missing TIMER_PINNED flag for those callers who use
> add_timer_on() without the flag. No functional change.

You're fixing the current callers but what about the future ones?

add_timer_on() should always guarantee that a timer runs on the
right destination, which is not the case after your patchset if the
timer hasn't been set to TIMER_PINNED.

Therefore I think we should either have:

* add_timer_on() enforce TIMER_PINNED (doesn't work because if the timer is
later called with mod_timer(), we should expect it to run anywhere)

or

* add_timer_on() warns if !TIMER_PINNED

or

* have an internal flag TIMER_LOCAL, that is turned on when
add_timer_on() is called or add_timer()/mod_timer() is called
on a TIMER_PINNED. Otherwise it is turned off.

The last solution should work with existing API and you don't need to
chase the current and future users of add_timer_on().

Thanks.

\
 
 \ /
  Last update: 2022-11-04 17:45    [W:0.204 / U:1.616 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site