From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: <mturquette@baylibre.com>, <cw00.choi@samsung.com>,
<lee.jones@linaro.org>, <myungjoo.ham@samsung.com>,
<devicetree@vger.kernel.org>, <linux-clk@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
<patches@opensource.wolfsonmicro.com>
Subject: Re: [PATCH v3 2/4] clk: arizona: Add clock driver for the Arizona devices
Date: Tue, 10 May 2016 10:58:48 +0100 [thread overview]
Message-ID: <20160510095848.GI1646@localhost.localdomain> (raw)
In-Reply-To: <20160509214829.GQ3492@codeaurora.org>
On Mon, May 09, 2016 at 02:48:29PM -0700, Stephen Boyd wrote:
> On 05/09, Charles Keepax wrote:
> > On Fri, May 06, 2016 at 05:55:01PM -0700, Stephen Boyd wrote:
> > > I've applied this to clk-next but still have a question, see
> > > below.
> > >
> > > On 01/08, Charles Keepax wrote:
> > Apologies, I have been working on a v4 that includes these
> > improvements. It does indeed look much nicer using assigned
> > parents etc. I think it might be best to drop these for now until
> > those are ready to send.
>
> Ok sure. I've dropped them.
Cool thanks.
>
> >
> > The only problem I really have left to sort out before I can send
> > it are some locking issues. It is quite tricky to get interaction
> > between the clocking and SPI frameworks to play nicely. The SPI
> > framework will sometimes punt the actually processing for the
> > transfer to a worker thread which will often perform operations
> > on clocks required for the SPI. Because this is a seperate
> > thread it isn't handled by the re-enterant locking in the clock
> > framework. I had been working around this using async transfers
> > for the SPI, but even then I have since found you can get lockdep
> > warnings because of the potential mutex inversion (SPI mutex and
> > the clock one).
> >
> > Any suggestions on this front would be greatly appreciated?
> >
>
> The fix is to always prepare the first clk right? That way we
> avoid any deadlock scenario.
Yeah, been looking at that, the problem is our parts get used
in a fairly wide array of places and it tends to be up to the
individual SPI driver how the clocks are controlled. So feels a
bit like SPI driver whack a mole, perhaps something could be done
through the SPI core itself through.
>
> We've been slowly working our way toward an alternate solution,
> which is to have one mutex per clk so that different parts of the
> clk tree can be locked independently, but so far that's blocked
> on drivers re-entering the clk framework with clk consumer APIs
> from within the clk_ops callbacks. Hopefully coordinated clk rate
> switches will allow us to get rid of those situations and then we
> can go and make sure all drivers aren't relying on the big
> prepare mutex to keep their drivers safe from concurrent accesses
> and finally move to one mutex per clk. This is a long term goal
> though so I wouldn't depend on this happening anytime soon.
Thanks, really good to hear some thoughts on this. I had been
coming to the conclusion here that individual prepare locks was
the right course of action. I had tried some changes to allow
individual clock drivers to specify prepare_lock and unlock
callbacks and then having the clock core fall back to the global
lock if the driver didn't have these. Which is a sort of half way
house to individual locks, but its still quite easy to run into
mutex inversions with all the other clocks still sharing a global
lock.
Thanks,
Charles
WARNING: multiple messages have this Message-ID (diff)
From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: mturquette@baylibre.com, cw00.choi@samsung.com,
lee.jones@linaro.org, myungjoo.ham@samsung.com,
devicetree@vger.kernel.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org,
patches@opensource.wolfsonmicro.com
Subject: Re: [PATCH v3 2/4] clk: arizona: Add clock driver for the Arizona devices
Date: Tue, 10 May 2016 10:58:48 +0100 [thread overview]
Message-ID: <20160510095848.GI1646@localhost.localdomain> (raw)
In-Reply-To: <20160509214829.GQ3492@codeaurora.org>
On Mon, May 09, 2016 at 02:48:29PM -0700, Stephen Boyd wrote:
> On 05/09, Charles Keepax wrote:
> > On Fri, May 06, 2016 at 05:55:01PM -0700, Stephen Boyd wrote:
> > > I've applied this to clk-next but still have a question, see
> > > below.
> > >
> > > On 01/08, Charles Keepax wrote:
> > Apologies, I have been working on a v4 that includes these
> > improvements. It does indeed look much nicer using assigned
> > parents etc. I think it might be best to drop these for now until
> > those are ready to send.
>
> Ok sure. I've dropped them.
Cool thanks.
>
> >
> > The only problem I really have left to sort out before I can send
> > it are some locking issues. It is quite tricky to get interaction
> > between the clocking and SPI frameworks to play nicely. The SPI
> > framework will sometimes punt the actually processing for the
> > transfer to a worker thread which will often perform operations
> > on clocks required for the SPI. Because this is a seperate
> > thread it isn't handled by the re-enterant locking in the clock
> > framework. I had been working around this using async transfers
> > for the SPI, but even then I have since found you can get lockdep
> > warnings because of the potential mutex inversion (SPI mutex and
> > the clock one).
> >
> > Any suggestions on this front would be greatly appreciated?
> >
>
> The fix is to always prepare the first clk right? That way we
> avoid any deadlock scenario.
Yeah, been looking at that, the problem is our parts get used
in a fairly wide array of places and it tends to be up to the
individual SPI driver how the clocks are controlled. So feels a
bit like SPI driver whack a mole, perhaps something could be done
through the SPI core itself through.
>
> We've been slowly working our way toward an alternate solution,
> which is to have one mutex per clk so that different parts of the
> clk tree can be locked independently, but so far that's blocked
> on drivers re-entering the clk framework with clk consumer APIs
> from within the clk_ops callbacks. Hopefully coordinated clk rate
> switches will allow us to get rid of those situations and then we
> can go and make sure all drivers aren't relying on the big
> prepare mutex to keep their drivers safe from concurrent accesses
> and finally move to one mutex per clk. This is a long term goal
> though so I wouldn't depend on this happening anytime soon.
Thanks, really good to hear some thoughts on this. I had been
coming to the conclusion here that individual prepare locks was
the right course of action. I had tried some changes to allow
individual clock drivers to specify prepare_lock and unlock
callbacks and then having the clock core fall back to the global
lock if the driver didn't have these. Which is a sort of half way
house to individual locks, but its still quite easy to run into
mutex inversions with all the other clocks still sharing a global
lock.
Thanks,
Charles
next prev parent reply other threads:[~2016-05-10 9:58 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-08 11:29 [PATCH v3 1/4] extcon: arizona: Remove enable/disable of 32k clock Charles Keepax
2016-01-08 11:29 ` Charles Keepax
2016-01-08 11:29 ` [PATCH v3 2/4] clk: arizona: Add clock driver for the Arizona devices Charles Keepax
2016-01-08 11:29 ` Charles Keepax
2016-05-07 0:55 ` Stephen Boyd
2016-05-07 0:55 ` Stephen Boyd
2016-05-09 10:47 ` Charles Keepax
2016-05-09 10:47 ` Charles Keepax
2016-05-09 21:48 ` Stephen Boyd
2016-05-10 9:58 ` Charles Keepax [this message]
2016-05-10 9:58 ` Charles Keepax
2016-01-08 11:29 ` [PATCH v3 3/4] mfd: arizona: Switch to using clock driver for 32k clock Charles Keepax
2016-01-08 11:29 ` Charles Keepax
2016-01-11 10:25 ` Lee Jones
2016-01-11 11:03 ` Charles Keepax
2016-01-11 11:03 ` Charles Keepax
2016-05-07 0:55 ` Stephen Boyd
2016-05-09 7:44 ` Lee Jones
2016-05-09 19:34 ` Stephen Boyd
2016-05-10 7:41 ` Lee Jones
2016-01-08 11:29 ` [PATCH v3 4/4] mfd: arizona: Add device tree binding documentation for new clock driver Charles Keepax
2016-01-08 11:29 ` Charles Keepax
2016-01-11 10:23 ` Lee Jones
2016-05-07 0:47 ` Stephen Boyd
2016-05-07 0:49 ` Stephen Boyd
2016-01-25 6:24 ` [PATCH v3 1/4] extcon: arizona: Remove enable/disable of 32k clock Chanwoo Choi
2016-01-25 6:24 ` Chanwoo Choi
2016-05-07 0:50 ` Stephen Boyd
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=20160510095848.GI1646@localhost.localdomain \
--to=ckeepax@opensource.wolfsonmicro.com \
--cc=cw00.choi@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=lee.jones@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=myungjoo.ham@samsung.com \
--cc=patches@opensource.wolfsonmicro.com \
--cc=sboyd@codeaurora.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.