lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240210162704.5126478c@jic23-huawei>
Date: Sat, 10 Feb 2024 16:27:04 +0000
From: Jonathan Cameron <jic23@...nel.org>
To: Mike Looijmans <mike.looijmans@...ic.nl>
Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
 devicetree@...r.kernel.org, linux-iio@...r.kernel.org, Lars-Peter Clausen
 <lars@...afoo.de>, Liam Beguin <liambeguin@...il.com>, Liam Girdwood
 <lgirdwood@...il.com>, Maksim Kiselev <bigunclemax@...il.com>, Marcus
 Folkesson <marcus.folkesson@...il.com>, Marius Cristea
 <marius.cristea@...rochip.com>, Mark Brown <broonie@...nel.org>, Niklas
 Schnelle <schnelle@...ux.ibm.com>, Okan Sahin <okan.sahin@...log.com>,
 linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 2/2] iio: adc: ti-ads1298: Add driver

On Tue, 6 Feb 2024 18:38:29 +0100
Mike Looijmans <mike.looijmans@...ic.nl> wrote:

> On 06-02-2024 17:32, Andy Shevchenko wrote:
> > On Tue, Feb 06, 2024 at 04:44:03PM +0100, Mike Looijmans wrote:  
> >> On 06-02-2024 16:09, Andy Shevchenko wrote:  
> >>> On Tue, Feb 06, 2024 at 03:47:45PM +0100, Mike Looijmans wrote:  
> > ...
> >  
> >>> But it's up to you what to do with that.
> >>> Maybe Jonathan can advice something different.
> >>>  
> >> The spinlock also protects the call to spi_async().  
> > I don't get this. Locks usually protect the data and not the code.
> > Can you elaborate?
> >  
> Either the DRDY or SPI completion handler will call spi_async(), the 
> lock assures that it's only called by one.

Arguably it's protecting the destination buffer of the spi_async()
call.  We don't really care if we issue two reads (it's a waste
of time and we would store two sets of readings but meh), but we do
care about being sure that don't issue a second read into a buffer
that we are potentially simultaneously getting data back from.

There are comments where the release is to describe when it can 
be safely unlocked.

I'm not super keen on this whole structure but I don't really have a better
idea.  Who builds a device where you have no latched way of seeing
if there is new data? (some) Hardware folk love to assume they have a RTOS only
talking to their device and that no pulse signals will ever be missed.

We get to educate them when ever the opportunity arises :)

Jonathan

> 
> Usually the DRDY handler will call spi_async(). If the next DRDY arrives 
> before the spi_async transfer finishes, the SPI completion handler must 
> call spi_async() a.s.a.p. to also read the newly arrived sample. There's 
> no way to ask the chip whether there's data to read, so all the driver 
> can do is use the ISR to remember that DRDY did trigger.
> 
> The lock protects that the "busy" counter matches the actual pending 
> calls to spi_async, and also protects that only one handler will call 
> spi_async (and update the counter).
> 
> Maybe this picture helps:
> 
> DRDY ---+-----+-----+-----+-
> 
> SPI ------+------------+-+--
> 
> busy 00001100011111112211101
> 
> 


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ