linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wolfram Sang <wsa@the-dreams.de>
To: Peter Rosin <peda@axentia.se>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
	"linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>,
	"linux-renesas-soc@vger.kernel.org" 
	<linux-renesas-soc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	Keerthy <j-keerthy@ti.com>, Tony Lindgren <tony@atomide.com>,
	Russell King <linux@armlinux.org.uk>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Stefan Lengfeld <contact@stefanchrist.eu>,
	Phil Reid <preid@electromag.com.au>,
	Tero Kristo <t-kristo@ti.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>
Subject: Re: [RFC PATCH v2 0/7] i2c: core: introduce atomic transfers
Date: Mon, 4 Mar 2019 23:48:56 +0100	[thread overview]
Message-ID: <20190304224856.w7egngqynl3hlabp@ninjato> (raw)
In-Reply-To: <71aaab62-2965-8ad8-61b9-02d02694919d@axentia.se>

[-- Attachment #1: Type: text/plain, Size: 3474 bytes --]

Hi Peda,

> The way I read this series, you are not giving atomic transfers priority. The

You are reading correctly. I could have made more clear that the issue
pointed out by Russell is not handled by this series but discussion
about it is welcome / needed to decide if we can take this series as is
or if we need to redesign it. But here we are anyhow :)

> only thing that happens is that if an xfer happens in atomic/irq context,
> trylock is used instead of an ordinary (unconditional) lock (this is just
> like it is already). If a mux is sitting in between the client device and
> the root adapter, the trylock operation will percolate to the root. Sure,
> there are more trylock ops that may fail and abort the xfer, but if
> everything is uncontended, then things should proceed in orderly fashion.
> Also, sure, the mux may need additional resources that are no longer
> available if the machine is half way down (or worse). But I don't see any
> fundamental *locking* issue with muxes that is different from the case
> without a mux.

Good, that was my conclusion as well. The series, as is, doesn't change
the locking behaviour, so that will work exactly as before. Or, it will
not work in the case described by Russell. Like before.

> That said, if you then want to introduce xfers that want to circumvent the
> locking, then parent-locked muxes are easier since the actual muxing operation
> is performed as an unlocked xfer (if one is needed) while the client device
> has grabbed the adapter lock "from the outside". Sure, there is a list of
> locks going up through the adapter tree to handle, but that can probably be
> handled in one place. I.e. the locking must have been avoided prior to the
> actual muxing operation, but the code to do so can be in one place. The

That was my gut feeling, too...

> mux-locked case is where the trouble is, since the muxing operation is done
> as a normal xfer and needs to be classified as a special xfer that just like
> the original client xfer also needs to break through any existing locks in
> the adapter tree. And those muxing xfers might come from anywhere, e.g.
> 
> 	- IO-expander controlling a gpio/pinctrl mux
> 	- dedicated I2C mux (e.g. the LTC4306)
> 	- regmap device
> 	- etc, who knows what muxing options will evolve?
> 
> So, any scheme that require a white-list will work poorly for mux-locked
> muxes, unless you can add some new grip/pinctrl/regmap flags to
> gpios/pins/registers so that the particular accesses can be white-listed.
> Adding those flags seem rather invasive?

... and sadly, this too. We would need the same kind of flag which I
described in my first paragraph of the original posting where I wanted
the flag to detect "unauthorized" uses of late I2C transfers. And this
is gonna be invasive. And I am not sure it is worth the effort.

I wonder what a reasonable effort is? Simply ignore the lock from the
"current" adapter and hope for the best that there is no mux or at
least no mux which needs interrupts / a lock attached to it?

> But of course, you need to actually do something about the added FIXME in
> the demux-pinctrl driver... BTW, that driver should forward ->smbus_xfer
> just like it does for ->master_xfer, no?

Yes. The idea of having two seperate SMBus controllers in one SoC which
would need demuxing is amusing, but still, it exists for I2C and you are
right.

Thanks,

   Wolfram


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2019-03-04 22:49 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-02 13:47 [RFC PATCH v2 0/7] i2c: core: introduce atomic transfers Wolfram Sang
2019-03-02 13:47 ` [RFC PATCH v2 1/7] i2c: apply coding style for struct i2c_adapter Wolfram Sang
2019-03-15 12:15   ` Simon Horman
2019-03-27 13:15   ` Wolfram Sang
2019-03-02 13:47 ` [RFC PATCH v2 2/7] i2c: core: use I2C locking behaviour also for SMBUS Wolfram Sang
2019-03-04 12:35   ` Geert Uytterhoeven
2019-03-15 12:17   ` Simon Horman
2019-03-02 13:47 ` [RFC PATCH v2 3/7] i2c: core: introduce callbacks for atomic transfers Wolfram Sang
2019-03-15 12:23   ` Simon Horman
2019-03-27 13:47     ` Wolfram Sang
2019-03-29  9:45       ` Simon Horman
2019-03-02 13:47 ` [RFC PATCH v2 4/7] i2c: demux: WIP: handle the new atomic callbacks Wolfram Sang
2019-03-15 12:32   ` Simon Horman
2019-03-02 13:47 ` [RFC PATCH v2 5/7] i2c: busses: omap: Add the master_xfer_irqless hook Wolfram Sang
2019-03-15 12:47   ` Simon Horman
2019-03-15 13:14     ` Andy Shevchenko
2019-03-27 13:50       ` Wolfram Sang
2019-03-29  9:45         ` Simon Horman
2019-03-02 13:47 ` [RFC PATCH v2 6/7] i2c: tegra-bpmp: convert to use new atomic callbacks Wolfram Sang
2019-03-04 12:25   ` Timo Alho
2019-03-04 12:59   ` Thierry Reding
2019-03-15 12:42   ` Simon Horman
2019-03-26 20:20   ` Stefan Lengfeld
2019-03-27 13:51     ` Wolfram Sang
2019-03-02 13:47 ` [RFC PATCH v2 7/7] i2c: algo: bit: HACK! add atomic callback Wolfram Sang
2019-03-02 16:22 ` [RFC PATCH v2 0/7] i2c: core: introduce atomic transfers Andy Shevchenko
2019-03-12 15:45   ` Wolfram Sang
2019-03-25 13:40     ` Wolfram Sang
2019-03-04 18:11 ` Peter Rosin
2019-03-04 22:48   ` Wolfram Sang [this message]
2019-03-07  0:02     ` Peter Rosin
2019-03-27 13:53       ` Wolfram Sang

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=20190304224856.w7egngqynl3hlabp@ninjato \
    --to=wsa@the-dreams.de \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=contact@stefanchrist.eu \
    --cc=j-keerthy@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=peda@axentia.se \
    --cc=preid@electromag.com.au \
    --cc=t-kristo@ti.com \
    --cc=tony@atomide.com \
    --cc=wsa+renesas@sang-engineering.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;
as well as URLs for NNTP newsgroup(s).