mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Stephan Costa Barros <stephanbrrs8@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Mike Looijmans" <mike.looijmans@topic.nl>,
	"Andy Shevchenko" <andriy.shevchenko@intel.com>,
	"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/6] iio: adc: ti-ads1298: fix the data read path
Date: Mon, 2 Nov 2026 00:08:02 +0000	[thread overview]
Message-ID: <20261102000802.646dfd86@jic23-hlaptop> (raw)
In-Reply-To: <20261028021946.29877-1-stephanbrrs8@gmail.com>

On Tue, 27 Oct 2026 23:19:45 -0300
Stephan Costa Barros <stephanbrrs8@gmail.com> wrote:

> On Sun, 25 Oct 2026 23:06:01 +0000, Jonathan Cameron wrote:
> > This is a lot in one patch.  Can we break some of this
> > up into smaller changes?  The whole thing is probably
> > to complex for a stable tag, so focus on the most broken
> > aspects.  
> 
> Will do: one patch per fix in v3, the most broken first.
> 
> > This I'd like in a patch that does just this and allows the commit
> > message to say why simply using a single lock for the data buffers
> > would not be cleaner.  
> 
> OK. To check the argument before I write it: a driver mutex around
> write_cmd() and the regmap accessors would also stop a register access
> from rewriting a command. It does not help with rx_buffer, which an
> spi_async() started from the hard IRQ writes, so it cannot be under a
> sleeping lock and still needs its own cacheline. Separate buffers fix
> both without a new lock. If you would still rather have the mutex for
> the command path, I'll do that.

I'm fine with the approach you have here. I just want some more reasoning
in the description as cachelines can be quite large and so we need
to have a clear justification for people thinking of backporting the
change.

> > > After STOP, the conversion in progress still raises DRDY, so an RDATA
> > > transfer can be in flight when the core frees the active scan mask.
> > > Track in the driver whether samples go to the buffer, wait in
> > > predisable for the last DRDY and its transfer, and push the sample
> > > before marking the transfer done. update_scan_mode reset the transfer
> > > counter, which let a new transfer be queued over one in flight; wait
> > > for it instead.  

Too much cropping.  I had to go find what I replied to in order to
following the discussion! Put back above, indented as if you'd left
it there

> > Complicated sounding solution. Can we claim buffered mode instead?
> > That would ensure the update_scan_mode and this don't race and mostly
> > would be taking an uncontended lock.  

> 
> I don't see how to do it where the race is. The sample is pushed from
> ads1298_rdata_complete(), the completion of that spi_async(), which the
> SPI core "invokes in a context which can't sleep".

Ah.  I'd missed that complexity and was assuming this was a normal
threaded interrupt handler.  One simplification here would be to stop using
async spi and instead just use synchronous spi in an interrupt thread which
is how most drivers handle similar flows.

> iio_device_try_claim_buffer_mode() takes mlock, and the core holds mlock
> while it calls predisable, so the completion would also wait on the
> teardown it races with.

yeah. I got this wrong in another reply I sent today. Indeed, the lock
is not conditional even though it acts like a conditional lock in the
outer call.  We need to be able to queue up multiple users of that
state on the lock so it can't be conditional wrt to mlock.

Added checking the existing places we grab the buffer claim to my todo
list for likely bugs :(


Jonathan



  reply	other threads:[~2026-11-02  0:08 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-24 23:13 [PATCH v2 0/6] iio: adc: ti-ads1298: fixes, and ADS1299 support Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 1/6] iio: adc: ti-ads1298: fix the data read path Stephan Costa Barros
2026-10-25 20:14   ` Andy Shevchenko
2026-10-28  2:39     ` Stephan Costa Barros
2026-10-25 23:06   ` Jonathan Cameron
2026-10-28  2:19     ` Stephan Costa Barros
2026-11-02  0:08       ` Jonathan Cameron [this message]
     [not found]         ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.ed949772-52db-42ef-8d2c-847df5a618d7.250833dd-44db-45a9-a0fe-3a8f8120e7b7@emailsignatures365.codetwo.com>
2026-11-02  6:02           ` Mike Looijmans
2026-10-24 23:13 ` [PATCH v2 2/6] iio: adc: ti-ads1298: fix power-up and clock handling Stephan Costa Barros
2026-10-25 20:18   ` Andy Shevchenko
2026-10-25 23:07   ` Jonathan Cameron
2026-10-26  6:27   ` Mike Looijmans
2026-10-28  2:19     ` Stephan Costa Barros
2026-10-28  6:47       ` Mike Looijmans
2026-10-24 23:13 ` [PATCH v2 3/6] iio: adc: ti-ads1298: fix scale, ID check, regmap and Kconfig Stephan Costa Barros
2026-10-25 23:12   ` Jonathan Cameron
2026-10-24 23:13 ` [PATCH v2 4/6] iio: adc: ti-ads1298: prepare for more chip families Stephan Costa Barros
2026-10-25 20:27   ` Andy Shevchenko
2026-10-28  2:22     ` Stephan Costa Barros
2026-10-25 23:26   ` Jonathan Cameron
2026-10-28  2:22     ` Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 5/6] dt-bindings: iio: adc: ti,ads1298: add ADS1299 Stephan Costa Barros
2026-10-27  8:04   ` Krzysztof Kozlowski
2026-10-24 23:13 ` [PATCH v2 6/6] iio: adc: ti-ads1298: add ADS1299 support Stephan Costa Barros
2026-10-25 20:34   ` Andy Shevchenko
2026-10-28  2:30     ` Stephan Costa Barros
2026-10-25 23:34   ` Jonathan Cameron
2026-10-28  2:26     ` Stephan Costa Barros
2026-11-02  0:14       ` Jonathan Cameron

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=20261102000802.646dfd86@jic23-hlaptop \
    --to=jic23@kernel.org \
    --cc=andriy.shevchenko@intel.com \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=krzk+dt@kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mike.looijmans@topic.nl \
    --cc=nuno.sa@analog.com \
    --cc=robh@kernel.org \
    --cc=stephanbrrs8@gmail.com \
    --cc=u.kleine-koenig@baylibre.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®