Hello, On Mon Feb 19, 2024 at 3:19 PM CET, Linus Walleij wrote: > On Thu, Feb 15, 2024 at 5:52 PM Théo Lebrun <theo.lebrun@xxxxxxxxxxx> wrote: > > > Replace the completion by a waitqueue for synchronization from IRQ > > handler to task. For short timeouts, use hrtimers, else use timers. > > Usecase: avoid blocking the I2C bus for too long when an issue occurs. > > > > The threshold picked is one jiffy: if timeout is below that, use > > hrtimers. This threshold is NOT configurable. > > > > Implement behavior but do NOT change fetching of timeout. This means the > > timeout is unchanged (200ms) and the hrtimer case will never trigger. > > > > A waitqueue is used because it supports both desired timeout approaches. > > See wait_event_timeout() and wait_event_hrtimeout(). An atomic boolean > > serves as synchronization condition. > > > > Signed-off-by: Théo Lebrun <theo.lebrun@xxxxxxxxxxx> > > Part of me want to go and fix completions to handle hrtimer timeouts > for submicrosecond timeouts, BUT I realized that this is a bit thick > request for a simple driver, so just a suggestion for something we could > do one day. This is fine with me. > Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Indeed having to switch to another abstraction because we desire another timeout method is nonsensical. Completion supporting hrtimeouts would make sense. As you said though, this is too much for a simple driver. Thanks, -- Théo Lebrun, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ------------------------------------------------------------------------