All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Théo Lebrun" <theo.lebrun@bootlin.com>
To: "Linus Walleij" <linus.walleij@linaro.org>
Cc: "Andi Shyti" <andi.shyti@kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-i2c@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mips@vger.kernel.org>,
	"Gregory Clement" <gregory.clement@bootlin.com>,
	"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>
Subject: Re: [PATCH 07/13] i2c: nomadik: support short xfer timeouts using waitqueue & hrtimer
Date: Mon, 19 Feb 2024 15:31:45 +0100	[thread overview]
Message-ID: <CZ94MU7BQIOE.2KYB4TWVOJISN@bootlin.com> (raw)
In-Reply-To: <CACRpkdYC=vVBA-s6GmsaED=NdXfsr0JDzzF+x8q8C3tqQ0F8YQ@mail.gmail.com>

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@bootlin.com> 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@bootlin.com>
>
> 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@linaro.org>

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

------------------------------------------------------------------------


WARNING: multiple messages have this Message-ID (diff)
From: "Théo Lebrun" <theo.lebrun@bootlin.com>
To: "Linus Walleij" <linus.walleij@linaro.org>
Cc: "Andi Shyti" <andi.shyti@kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-i2c@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mips@vger.kernel.org>,
	"Gregory Clement" <gregory.clement@bootlin.com>,
	"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>
Subject: Re: [PATCH 07/13] i2c: nomadik: support short xfer timeouts using waitqueue & hrtimer
Date: Mon, 19 Feb 2024 15:31:45 +0100	[thread overview]
Message-ID: <CZ94MU7BQIOE.2KYB4TWVOJISN@bootlin.com> (raw)
In-Reply-To: <CACRpkdYC=vVBA-s6GmsaED=NdXfsr0JDzzF+x8q8C3tqQ0F8YQ@mail.gmail.com>

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@bootlin.com> 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@bootlin.com>
>
> 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@linaro.org>

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

------------------------------------------------------------------------


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2024-02-19 14:31 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-15 16:52 [PATCH 00/13] Add Mobileye EyeQ5 support to the Nomadik I2C controller & use hrtimers for timeouts Théo Lebrun
2024-02-15 16:52 ` Théo Lebrun
2024-02-15 16:52 ` [PATCH 01/13] dt-bindings: i2c: nomadik: add timeout-usecs property bindings Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-16  2:27   ` Rob Herring
2024-02-16  2:27     ` Rob Herring
2024-02-16  9:16     ` Théo Lebrun
2024-02-16  9:16       ` Théo Lebrun
2024-02-16  9:17       ` Krzysztof Kozlowski
2024-02-16  9:17         ` Krzysztof Kozlowski
2024-02-19 14:06       ` Linus Walleij
2024-02-19 14:06         ` Linus Walleij
2024-02-19 14:29         ` Théo Lebrun
2024-02-19 14:29           ` Théo Lebrun
2024-02-21 16:58           ` Théo Lebrun
2024-02-21 16:58             ` Théo Lebrun
2024-02-21 17:43             ` Wolfram Sang
2024-02-21 17:43               ` Wolfram Sang
2024-02-22 17:14               ` Rob Herring
2024-02-22 17:14                 ` Rob Herring
2024-02-22 19:28                 ` Wolfram Sang
2024-02-22 19:28                   ` Wolfram Sang
2024-02-23 16:34                   ` Rob Herring
2024-02-23 16:34                     ` Rob Herring
2024-02-26  8:41                     ` Wolfram Sang
2024-02-26  8:41                       ` Wolfram Sang
2024-02-15 16:52 ` [PATCH 02/13] dt-bindings: i2c: nomadik: add mobileye,eyeq5-i2c bindings and example Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-15 19:26   ` Rob Herring
2024-02-15 19:26     ` Rob Herring
2024-02-16  2:22   ` Rob Herring
2024-02-16  2:22     ` Rob Herring
2024-02-16 10:18     ` Théo Lebrun
2024-02-16 10:18       ` Théo Lebrun
2024-02-16 10:33       ` Krzysztof Kozlowski
2024-02-16 10:33         ` Krzysztof Kozlowski
2024-02-16 10:40         ` Théo Lebrun
2024-02-16 10:40           ` Théo Lebrun
2024-02-17  8:25           ` Krzysztof Kozlowski
2024-02-17  8:25             ` Krzysztof Kozlowski
2024-02-19 13:41             ` Théo Lebrun
2024-02-19 13:41               ` Théo Lebrun
2024-02-20  9:49               ` Krzysztof Kozlowski
2024-02-20  9:49                 ` Krzysztof Kozlowski
2024-02-15 16:52 ` [PATCH 03/13] dt-bindings: hwmon: lm75: add label property Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-16  7:41   ` Krzysztof Kozlowski
2024-02-16  7:41     ` Krzysztof Kozlowski
2024-02-16  8:00     ` Krzysztof Kozlowski
2024-02-16  8:00       ` Krzysztof Kozlowski
2024-02-16 10:22       ` Théo Lebrun
2024-02-16 10:22         ` Théo Lebrun
2024-02-24 17:30   ` Guenter Roeck
2024-02-24 17:30     ` Guenter Roeck
2024-02-26  7:43     ` Krzysztof Kozlowski
2024-02-26  7:43       ` Krzysztof Kozlowski
2024-02-15 16:52 ` [PATCH 04/13] i2c: nomadik: rename private struct pointers from dev to priv Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:12   ` Linus Walleij
2024-02-19 14:12     ` Linus Walleij
2024-02-15 16:52 ` [PATCH 05/13] i2c: nomadik: simplify IRQ masking logic Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:15   ` Linus Walleij
2024-02-19 14:15     ` Linus Walleij
2024-02-15 16:52 ` [PATCH 06/13] i2c: nomadik: use bitops helpers Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:16   ` Linus Walleij
2024-02-19 14:16     ` Linus Walleij
2024-02-15 16:52 ` [PATCH 07/13] i2c: nomadik: support short xfer timeouts using waitqueue & hrtimer Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:19   ` Linus Walleij
2024-02-19 14:19     ` Linus Walleij
2024-02-19 14:31     ` Théo Lebrun [this message]
2024-02-19 14:31       ` Théo Lebrun
2024-02-15 16:52 ` [PATCH 08/13] i2c: nomadik: replace jiffies by ktime for FIFO flushing timeout Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:21   ` Linus Walleij
2024-02-19 14:21     ` Linus Walleij
2024-02-19 14:38     ` Théo Lebrun
2024-02-19 14:38       ` Théo Lebrun
2024-02-19 14:53       ` Linus Walleij
2024-02-19 14:53         ` Linus Walleij
2024-02-15 16:52 ` [PATCH 09/13] i2c: nomadik: fetch timeout-usecs property from devicetree Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:22   ` Linus Walleij
2024-02-19 14:22     ` Linus Walleij
2024-02-27 12:14   ` Wolfram Sang
2024-02-27 12:14     ` Wolfram Sang
2024-02-27 13:38     ` Théo Lebrun
2024-02-27 13:38       ` Théo Lebrun
2024-02-28 10:49       ` Wolfram Sang
2024-02-28 10:49         ` Wolfram Sang
2024-02-28 13:39         ` Théo Lebrun
2024-02-28 13:39           ` Théo Lebrun
2024-02-29  9:25           ` Wolfram Sang
2024-02-29  9:25             ` Wolfram Sang
2024-02-29  9:31             ` Théo Lebrun
2024-02-29  9:31               ` Théo Lebrun
2024-02-15 16:52 ` [PATCH 10/13] i2c: nomadik: support Mobileye EyeQ5 I2C controller Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-19 14:35   ` Linus Walleij
2024-02-19 14:35     ` Linus Walleij
2024-02-19 14:52     ` Théo Lebrun
2024-02-19 14:52       ` Théo Lebrun
2024-02-19 16:27       ` Théo Lebrun
2024-02-19 16:27         ` Théo Lebrun
2024-02-15 16:52 ` [PATCH 11/13] MIPS: mobileye: eyeq5: add 5 I2C controller nodes Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-15 16:52 ` [PATCH 12/13] MIPS: mobileye: eyeq5: add evaluation board I2C temp sensor Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-16  7:59   ` Krzysztof Kozlowski
2024-02-16  7:59     ` Krzysztof Kozlowski
2024-02-15 16:52 ` [PATCH 13/13] MIPS: mobileye: eyeq5: add resets to I2C controllers Théo Lebrun
2024-02-15 16:52   ` Théo Lebrun
2024-02-16  7:59   ` Krzysztof Kozlowski
2024-02-16  7:59     ` Krzysztof Kozlowski
2024-02-16  9:05     ` Théo Lebrun
2024-02-16  9:05       ` Théo Lebrun
2024-02-16  9:17       ` Krzysztof Kozlowski
2024-02-16  9:17         ` Krzysztof Kozlowski
2024-02-16 10:26         ` Théo Lebrun
2024-02-16 10:26           ` Théo Lebrun
2024-02-19 14:11 ` [PATCH 00/13] Add Mobileye EyeQ5 support to the Nomadik I2C controller & use hrtimers for timeouts Linus Walleij
2024-02-19 14:11   ` Linus Walleij
2024-02-19 14:22   ` Théo Lebrun
2024-02-19 14:22     ` Théo Lebrun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CZ94MU7BQIOE.2KYB4TWVOJISN@bootlin.com \
    --to=theo.lebrun@bootlin.com \
    --cc=andi.shyti@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregory.clement@bootlin.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=tawfik.bayouk@mobileye.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tsbogend@alpha.franken.de \
    --cc=vladimir.kondratiev@mobileye.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.