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
next prev 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).