linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ernst Schwab" <eschwab-BGeptl67XyCzQB+pC5nmwQ@public.gmane.org>
To: "Grant Likely" <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
Cc: David Brownell
	<dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	yi.li-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH 1/5] spi: spi_lock_bus and spi_unlock_bus
Date: Wed, 17 Feb 2010 01:16:44 +0100	[thread overview]
Message-ID: <552DB282258F46CE995A09EF352B1094@pces> (raw)
In-Reply-To: fa686aa41002161243y6e24e439yff54a28cbe295de3@mail.gmail.com

Grant Likely wrote:

> This series seems to try and solve the problem the hard way, and by
> creating a new locking scheme (and as history shows, new locking
> schemes are *alwasy* broken).
> Why is the locking getting pushed down to the bus driver level?  

The proposal, as well as the proposal of the underlying patches
for the blackfin uClinux solution, wants to minimize the risk
introduced by changes to the SPI layer - it tries to be as
noninvasive as possible.
Thus, it allows the use of the mmc_spi driver under the same conditions
as before (only one SPI device present), and makes its use even
safer than before - in case an SPI device is registered after the mmc_spi
driver. 
The mechanism to have the atomic transmission of SPI sequences moved 
to the SPI master driver is existent in (now) two master drivers 
and working, and until now, we have only the choice between
the "ASSUMING SPI bus stays unshared!/can't share SPI bus" 
pestilence now present in the kernel and the "need to modify the 
SPI master" cholera. 
I think anything beyond this would be a new locking scheme, which...

> It
> seems to me that the whole thing could be handled with common code and
> a mutex in the spi_master structure.  spi_sync would be easy to handle
> by putting a mutex around the spi_message submission.  spi_async would
> be a little harder since it needs to be atomic, but that could also be
> handled with a flag protected by a spinlock.

Maybe, but who can implement that in a quality required to make it to
the kernel? Any volunteers ;-)? I will test it.

> There is no need to specify the spi_device in the lock request.  Since
> the lock is exclusive, it is known that the only driver calling the
> locked API version must already hold the lock.

On multiple SPI buses, there can be one lock per master, as Ned mentioned.

I want to summarize the properties of the suggested patches:

- with only one SPI device requiring the locking (the mmc_spi), 
  the patches should not cause any change in timing / locking / sleeping,
  neither with an unmodified SPI master nor with a modified.
- with multiple SPI devices not requiring the locking, the patches
  should not cause any change in timing / locking / sleeping,
  neither with an unmodified SPI master nor with a modified.
- if the mmc_spi driver is registered before other SPI devices, 
  used with an unmodified master, malfunction or data loss will now
  be prevented by disabling the SPI devices coming after the mmc_spi; 
  the current solution is not able to do so beside the "ASSUMING SPI 
  bus stays unshared!" message.
- the mmc_spi driver is working together with other SPI devices and a
  modified master - two modified masters exist.
- the spi_lock_bus calls added to the mmc_spi can be used for an advanced
  locking scheme (any volunteers?)

For me, there seems to be no disadvantage in having this or a similar
solution as an intermediate step to the perfect solution 
(any volunteers?). 

Regards
Ernst

------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev

  parent reply	other threads:[~2010-02-17  0:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-16 19:44 [PATCH 0/5] spi/mmc_spi: SPI bus locking to use mmc_spi together with other SPI devices Ernst Schwab
     [not found] ` <20100216204450.e043eed8.eschwab-BGeptl67XyCzQB+pC5nmwQ@public.gmane.org>
2010-02-16 19:57   ` [PATCH 1/5] spi: spi_lock_bus and spi_unlock_bus Ernst Schwab
     [not found]     ` <20100216205720.ebe949a1.eschwab-BGeptl67XyCzQB+pC5nmwQ@public.gmane.org>
2010-02-16 20:43       ` Grant Likely
     [not found]         ` <fa686aa41002161243y6e24e439yff54a28cbe295de3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-16 21:16           ` Ned Forrester
     [not found]             ` <4B7B0B1C.8050407-/d+BM93fTQY@public.gmane.org>
2010-02-16 23:23               ` Grant Likely
2010-02-17  0:07           ` Mike Frysinger
2010-02-17  0:21             ` Ernst Schwab
2010-02-17  0:40               ` Mike Frysinger
     [not found]             ` <8bd0f97a1002161607m3c748ccegaffb83c42667287a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17  3:48               ` Grant Likely
     [not found]                 ` <fa686aa41002161948o31a48fc9kac263b0ac34f1a8d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17  4:34                   ` Mike Frysinger
     [not found]                     ` <8bd0f97a1002162034r2d3e397eq12ae0f0df1ae2adb-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17  4:47                       ` Grant Likely
     [not found]                         ` <fa686aa41002162047h4b4c9cdam2133baf3b7d0e27c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17  5:04                           ` Mike Frysinger
     [not found]                             ` <8bd0f97a1002162104u5291da69gbff20837f78c9cdf-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17  5:08                               ` Grant Likely
2010-02-17  4:37               ` Grant Likely
2010-02-17  0:16         ` Ernst Schwab [this message]
2010-02-17  4:32           ` Grant Likely
2010-02-17  7:35             ` Ernst Schwab
2010-02-17 13:30               ` Grant Likely
     [not found]                 ` <fa686aa41002170530i2ae007c2ia4f2ad185dfd2713-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-17 14:12                   ` Grant Likely

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=552DB282258F46CE995A09EF352B1094@pces \
    --to=eschwab-bgeptl67xyczqb+pc5nmwq@public.gmane.org \
    --cc=dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org \
    --cc=yi.li-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org \
    /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;
as well as URLs for NNTP newsgroup(s).