All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfram Sang <wsa@the-dreams.de>
To: Peter Rosin <peda@axentia.se>
Cc: linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	Peter Korsgaard <peter.korsgaard@barco.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jonathan Cameron <jic23@kernel.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald <pmeerw@pmeerw.net>,
	Antti Palosaari <crope@iki.fi>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	Grant Likely <grant.likely@linaro.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Kalle Valo <kvalo@codeaurora.org>, Jiri Slaby <jslaby@suse.com>,
	Daniel Baluta <daniel.baluta@intel.com>,
	Lucas De Marchi <lucas.demarchi@intel.com>,
	Adriana Reus <adriana.reus@intel.com>,
	Matt Ranostay <matt.ranostay@intel.com>,
	Krzysztof Kozlowski <k.kozlo>
Subject: Re: [PATCH v7 16/24] i2c: allow adapter drivers to override the adapter locking
Date: Tue, 3 May 2016 23:38:08 +0200	[thread overview]
Message-ID: <20160503213807.GA2018@tetsubishi> (raw)
In-Reply-To: <1461165484-2314-17-git-send-email-peda@axentia.se>

On Wed, Apr 20, 2016 at 05:17:56PM +0200, Peter Rosin wrote:
> Add i2c_lock_bus() and i2c_unlock_bus(), which call the new lock_bus and
> unlock_bus ops in the adapter. These funcs/ops take an additional flags
> argument that indicates for what purpose the adapter is locked.
> 
> There are two flags, I2C_LOCK_ADAPTER and I2C_LOCK_SEGMENT, but they are
> both implemented the same. For now. Locking the adapter means that the
> whole bus is locked, locking the segment means that only the current bus
> segment is locked (i.e. i2c traffic on the parent side of mux is still
> allowed even if the child side of the mux is locked.
> 
> Also support a trylock_bus op (but no function to call it, as it is not
> expected to be needed outside of the i2c core).
> 
> Implement i2c_lock_adapter/i2c_unlock_adapter in terms of the new locking
> scheme (i.e. lock with the I2C_LOCK_ADAPTER flag).
> 
> Annotate some of the locking with explicit I2C_LOCK_SEGMENT flags.

Can you explain a little why it is SEGMENT and not ADAPTER here? That
probably makes it easier to get into this patch.

And to double check my understanding: I was surprised to not see any
i2c_lock_adapter() or I2C_LOCK_ADAPTER in action. This is because muxes
call I2C_LOCK_SEGMENT on their parent which in case of the parent being
the root adapter is essentially the same as I2C_LOCK_ADAPTER. Correct?

> 
> Signed-off-by: Peter Rosin <peda@axentia.se>
> ---
>  drivers/i2c/i2c-core.c | 46 ++++++++++++++++++++++++++++------------------
>  include/linux/i2c.h    | 28 ++++++++++++++++++++++++++--
>  2 files changed, 54 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 0f2f8484e8ec..21f46d011c33 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -960,10 +960,12 @@ static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
>  }
>  
>  /**
> - * i2c_lock_adapter - Get exclusive access to an I2C bus segment
> + * i2c_adapter_lock_bus - Get exclusive access to an I2C bus segment
>   * @adapter: Target I2C bus segment
> + * @flags: I2C_LOCK_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT
> + *	locks only this branch in the adapter tree
>   */

I think this kerneldoc should be moved to i2c_lock_adapter and/or
i2c_lock_bus() which are now in i2c.h. This is what users will use, not
this static, adapter-specific implementation. I think it is enough to
have a comment here explaining what is special in handling adapters.

Thanks,

   Wolfram

WARNING: multiple messages have this Message-ID (diff)
From: Wolfram Sang <wsa@the-dreams.de>
To: Peter Rosin <peda@axentia.se>
Cc: linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	Peter Korsgaard <peter.korsgaard@barco.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jonathan Cameron <jic23@kernel.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald <pmeerw@pmeerw.net>,
	Antti Palosaari <crope@iki.fi>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	Grant Likely <grant.likely@linaro.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Kalle Valo <kvalo@codeaurora.org>, Jiri Slaby <jslaby@suse.com>,
	Daniel Baluta <daniel.baluta@intel.com>,
	Lucas De Marchi <lucas.demarchi@intel.com>,
	Adriana Reus <adriana.reus@intel.com>,
	Matt Ranostay <matt.ranostay@intel.com>,
	Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Terry Heo <terryheo@google.com>, Arnd Bergmann <arnd@arndb.de>,
	Tommi Rantala <tt.rantala@gmail.com>,
	Crestez Dan Leonard <leonard.crestez@intel.com>,
	linux-i2c@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-iio@vger.kernel.org, linux-media@vger.kernel.org,
	devicetree@vger.kernel.org, Peter Rosin <peda@lysator.liu.se>
Subject: Re: [PATCH v7 16/24] i2c: allow adapter drivers to override the adapter locking
Date: Tue, 3 May 2016 23:38:08 +0200	[thread overview]
Message-ID: <20160503213807.GA2018@tetsubishi> (raw)
In-Reply-To: <1461165484-2314-17-git-send-email-peda@axentia.se>

On Wed, Apr 20, 2016 at 05:17:56PM +0200, Peter Rosin wrote:
> Add i2c_lock_bus() and i2c_unlock_bus(), which call the new lock_bus and
> unlock_bus ops in the adapter. These funcs/ops take an additional flags
> argument that indicates for what purpose the adapter is locked.
> 
> There are two flags, I2C_LOCK_ADAPTER and I2C_LOCK_SEGMENT, but they are
> both implemented the same. For now. Locking the adapter means that the
> whole bus is locked, locking the segment means that only the current bus
> segment is locked (i.e. i2c traffic on the parent side of mux is still
> allowed even if the child side of the mux is locked.
> 
> Also support a trylock_bus op (but no function to call it, as it is not
> expected to be needed outside of the i2c core).
> 
> Implement i2c_lock_adapter/i2c_unlock_adapter in terms of the new locking
> scheme (i.e. lock with the I2C_LOCK_ADAPTER flag).
> 
> Annotate some of the locking with explicit I2C_LOCK_SEGMENT flags.

Can you explain a little why it is SEGMENT and not ADAPTER here? That
probably makes it easier to get into this patch.

And to double check my understanding: I was surprised to not see any
i2c_lock_adapter() or I2C_LOCK_ADAPTER in action. This is because muxes
call I2C_LOCK_SEGMENT on their parent which in case of the parent being
the root adapter is essentially the same as I2C_LOCK_ADAPTER. Correct?

> 
> Signed-off-by: Peter Rosin <peda@axentia.se>
> ---
>  drivers/i2c/i2c-core.c | 46 ++++++++++++++++++++++++++++------------------
>  include/linux/i2c.h    | 28 ++++++++++++++++++++++++++--
>  2 files changed, 54 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 0f2f8484e8ec..21f46d011c33 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -960,10 +960,12 @@ static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
>  }
>  
>  /**
> - * i2c_lock_adapter - Get exclusive access to an I2C bus segment
> + * i2c_adapter_lock_bus - Get exclusive access to an I2C bus segment
>   * @adapter: Target I2C bus segment
> + * @flags: I2C_LOCK_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT
> + *	locks only this branch in the adapter tree
>   */

I think this kerneldoc should be moved to i2c_lock_adapter and/or
i2c_lock_bus() which are now in i2c.h. This is what users will use, not
this static, adapter-specific implementation. I think it is enough to
have a comment here explaining what is special in handling adapters.

Thanks,

   Wolfram

  parent reply	other threads:[~2016-05-03 21:38 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-20 15:17 [PATCH v7 00/24] i2c mux cleanup and locking update Peter Rosin
2016-04-20 15:17 ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 01/24] i2c-mux: add common data for every i2c-mux instance Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 02/24] i2c: i2c-mux-gpio: convert to use an explicit i2c mux core Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 03/24] i2c: i2c-mux-pinctrl: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 04/24] i2c: i2c-arb-gpio-challenge: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 05/24] i2c: i2c-mux-pca9541: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 06/24] i2c: i2c-mux-pca954x: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 07/24] i2c: i2c-mux-reg: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 08/24] iio: imu: inv_mpu6050: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-22 11:37   ` [PATCH v8 " Peter Rosin
2016-04-22 11:37     ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 09/24] [media] m88ds3103: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 10/24] [media] rtl2830: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 11/24] [media] rtl2832: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 12/24] [media] si2168: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 13/24] [media] cx231xx: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 14/24] of/unittest: " Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 15/24] i2c-mux: drop old unused i2c-mux api Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 16/24] i2c: allow adapter drivers to override the adapter locking Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-28 20:50   ` Wolfram Sang
2016-04-28 20:50     ` Wolfram Sang
2016-04-28 21:08     ` Peter Rosin
2016-04-28 21:08       ` Peter Rosin
2016-04-29  7:16       ` Wolfram Sang
2016-04-29  7:16         ` Wolfram Sang
2016-04-29  9:16         ` Peter Rosin
2016-04-29  9:16           ` Peter Rosin
     [not found]           ` <357e6fda-73b3-fb7f-c341-97f09af1943f-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2016-05-02 19:20             ` Antti Palosaari
2016-05-02 19:20               ` Antti Palosaari
2016-05-03 21:39           ` Wolfram Sang
2016-05-03 21:39             ` Wolfram Sang
2016-05-04 14:10             ` Peter Rosin
2016-05-04 14:10               ` Peter Rosin
2016-05-04 16:38               ` Wolfram Sang
2016-05-04 16:38                 ` Wolfram Sang
2016-05-03 21:38   ` Wolfram Sang [this message]
2016-05-03 21:38     ` Wolfram Sang
2016-05-04 10:01     ` Peter Rosin
2016-05-04 10:01       ` Peter Rosin
2016-05-04 12:07       ` Wolfram Sang
2016-05-04 12:07         ` Wolfram Sang
2016-04-20 15:17 ` [PATCH v7 17/24] i2c: muxes always lock the parent adapter Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:17 ` [PATCH v7 18/24] i2c-mux: relax locking of the top i2c adapter during mux-locked muxing Peter Rosin
2016-04-20 15:17   ` Peter Rosin
     [not found]   ` <1461165484-2314-19-git-send-email-peda-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2016-05-03 21:38     ` Wolfram Sang
2016-05-03 21:38       ` Wolfram Sang
2016-04-20 15:17 ` [PATCH v7 19/24] i2c-mux: document i2c muxes and elaborate on parent-/mux-locked muxes Peter Rosin
2016-04-20 15:17   ` Peter Rosin
2016-04-20 15:18 ` [PATCH v7 20/24] iio: imu: inv_mpu6050: change the i2c gate to be mux-locked Peter Rosin
2016-04-20 15:18   ` Peter Rosin
2016-04-20 15:18 ` [PATCH v7 21/24] [media] si2168: " Peter Rosin
2016-04-20 15:18   ` Peter Rosin
2016-04-20 15:18 ` [PATCH v7 22/24] [media] rtl2832: " Peter Rosin
2016-04-20 15:18   ` Peter Rosin
2016-04-28 21:47   ` Wolfram Sang
2016-04-28 21:47     ` Wolfram Sang
2016-04-29  4:41     ` Peter Rosin
2016-04-29  4:41       ` Peter Rosin
     [not found]       ` <4ae65dd6-1197-11d6-ef0a-714c0525cf3a-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2016-04-29  6:57         ` Wolfram Sang
2016-04-29  6:57           ` Wolfram Sang
2016-04-20 15:18 ` [PATCH v7 23/24] [media] rtl2832_sdr: get rid of empty regmap wrappers Peter Rosin
2016-04-20 15:18   ` Peter Rosin
2016-04-20 15:18 ` [PATCH v7 24/24] [media] rtl2832: regmap is aware of lockdep, drop local locking hack Peter Rosin
2016-04-20 15:18   ` Peter Rosin
2016-04-20 20:52 ` [PATCH v7 00/24] i2c mux cleanup and locking update Wolfram Sang
2016-04-20 20:52   ` Wolfram Sang
2016-04-21  1:10 ` Antti Palosaari
2016-04-21  1:10   ` Antti Palosaari
     [not found] ` <1461165484-2314-1-git-send-email-peda-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2016-04-21 12:33   ` Crestez Dan Leonard
2016-04-21 12:33     ` Crestez Dan Leonard

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=20160503213807.GA2018@tetsubishi \
    --to=wsa@the-dreams.de \
    --cc=adriana.reus@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=corbet@lwn.net \
    --cc=crope@iki.fi \
    --cc=daniel.baluta@intel.com \
    --cc=davem@davemloft.net \
    --cc=frowand.list@gmail.com \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jic23@kernel.org \
    --cc=jslaby@suse.com \
    --cc=knaack.h@gmx.de \
    --cc=kvalo@codeaurora.org \
    --cc=lars@metafoo.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lucas.demarchi@intel.com \
    --cc=matt.ranostay@intel.com \
    --cc=mchehab@osg.samsung.com \
    --cc=peda@axentia.se \
    --cc=peter.korsgaard@barco.com \
    --cc=pmeerw@pmeerw.net \
    --cc=robh+dt@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.