From: pure.logic@nexus-software.ie (Bryan O'Donoghue)
To: linux-arm-kernel@lists.infradead.org
Subject: [GIT PULL] Greybus driver subsystem for 4.9-rc1
Date: Thu, 15 Sep 2016 12:48:08 +0100 [thread overview]
Message-ID: <1473940088.10230.65.camel@nexus-software.ie> (raw)
In-Reply-To: <20160915112029.GC6718@leverpostej>
On Thu, 2016-09-15 at 12:20 +0100, Mark Rutland wrote:
> Hi,
>
> More questions below. Perhaps some of these will be implicitly
> answered
> when the linearised patches appear, and I'm happy to wait until then
> to
> continue the discussion, as I suspect otherwise we're all likely to
> end
> up exasperated.
>
> Please do Cc me on those.
>
> Regardless, until those appear and a reasonable time has been given
> for
> replies, my comments regarding the lack of review stand, as does my
> NAK
> for the series.
>
> On Thu, Sep 15, 2016 at 11:35:56AM +0100, Bryan O'Donoghue wrote:
> >
> > On Thu, 2016-09-15 at 11:13 +0100, Mark Rutland wrote:
> > >
> > > On Thu, Sep 15, 2016 at 10:35:33AM +0100, Bryan O'Donoghue wrote:
> > > >
> > > > ?
> > > I don't think the history matters,?
> > Your comment seemed to indicate you thought we were reading a
> > architectural timer directly - which we aren't.
> Sure, and as I pointed out, the comment in the HEAD commit still
> claims
> it does, even if the code doesn't. This is at best, confusing, and
> the
> history of how it came to be there doesn't really matter...
TBH a whole git history will invariably contain things developers did,
thought better of and then backed out as is the case here.
>
> >
> > >
> > > and I don't think that one can rely
> > > on get_cycles() in this manner outside of arch code.
> > I don't follow your meaning. What's wrong with get_cycles() ?
> > You've
> > already said you don't think reading an architectural timer
> > directly is
> > correct.
> I pointed out a number of issues in my previous reply.
On MSM8994 the timer backing get_cycles() is one of the MMIO
architectural timers (which is why I switched over in the end). There's
not much else that can be done bar custom silicon - this particular
timer is as good as it gets, more of a "how do we synchronise time with
the hardware we have" than a "lets design in a feature to synchronise
time" - which was something we were focusing in on for later
silicon...?
>
> For example, you have absolutely no guarantee as to what backs
> get_cycles(). Despite this, the code assumes that get_cycles() is
> backed
> by something running at the frequency described in a
> "google,greybus-frame-time-counter" node.
>
> Even if this *happens* to match what some piece of arch code provides
> today on some platform, it is in no way *guaranteed*.
That's the point though, if you declare "google,greybus-frame-time-
counter" in your platform code - then you can use 'get_cycles()' in
this manner - if not - then you need to take steps in your own new
platform to provide that same level of functionality. You could switch
to an MSM8996 or an MSM8998 declare this node and bob's your uncle.
OTOH declaring this node on x86 would be a bit pointless. You'd be
better off providing a timer on a PCI bar, and binding that into
greybus with some x86/x86-platform code...
>
> >
> > The objective is to read one of the free-running counters in
> > MSM8994,
> > clocked by the PMIC. The refclk provided by PMIC is distributed to
> > each
> > processor in the system.
> >
> > >
> > > ?Looking at the
> > > state of the tree [1] as of the final commit [2] in the greybus
> > > branch,
> > > my points still stand:
> > >
> > > * The "google,greybus-frame-time-counter" node is superfluous. It
> > > does
> > > ? not describe a particular device,
> > It describes a timer running @ 19.2MHz, clocked by PMIC refclk.
> ... which you assume is whatever backs get_cycles(), which you in
> practice assume is the architected timer. For which we *already* have
> a
> binding and driver.
It's a requirement rather than assumption. If you declare that node,
it's assumed the timer driving get_cycles() does what it says on the
greybus-frame-time-counter tin.
> > > ?and duplicates information we have ? elsewhere.
> > Can you give an example ?
> Trivially, the CNTFRQ register in the architected timer (which is
> common
> across MMIO/sysreg), which you can query with arch_timer_get_rate().
>
> Note that isn't guaranteed to match get_cycles() either. You need a
> better API to call.
In that case a DT entry makes sense I'd say.
> You should definitely interrogate the relevant driver, somehow.
Hrmm. TBH if we are ruling out arch_timer_get_rate() then I think a DT
entry (which BTW is greybus specific) is the more intelligent way
forward. The greybus platform implementer needs to understand the
dependencies and take action to meet those dependencies should he or
she wish to support this feature.
I'm not opposed necessarily to calling arch_timer_get_rate() instead of
a DT binding, assuming it works, and drawing a line under it for
MSM8994. As I've said it's up to a system architect for other platforms
to go and do the necessary design to support this feature and this will
almost certainly require new platform code both here and in other
places anyway.
>
> Without a higher-level view of what you're trying to achieve, it's
> not
> clear to me whether get_cycles() is the right interface.
I appreciate that.
---
bod
WARNING: multiple messages have this Message-ID (diff)
From: "Bryan O'Donoghue" <pure.logic@nexus-software.ie>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
linux-kernel@vger.kernel.org,
Johan Hovold <johan@hovoldconsulting.com>,
Rui Miguel Silva <rmfrfs@gmail.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Sandeep Patil <sspatil@google.com>,
Matt Porter <mporter@kernel.crashing.org>,
John Stultz <john.stultz@linaro.org>,
Rob Herring <robh@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Alex Elder <elder@linaro.org>, David Lin <dtwlin@google.com>,
Vaibhav Agarwal <vaibhav.agarwal@linaro.org>,
Mark Greer <mgreer@animalcreek.com>,
marc.zyngier@arm.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [GIT PULL] Greybus driver subsystem for 4.9-rc1
Date: Thu, 15 Sep 2016 12:48:08 +0100 [thread overview]
Message-ID: <1473940088.10230.65.camel@nexus-software.ie> (raw)
In-Reply-To: <20160915112029.GC6718@leverpostej>
On Thu, 2016-09-15 at 12:20 +0100, Mark Rutland wrote:
> Hi,
>
> More questions below. Perhaps some of these will be implicitly
> answered
> when the linearised patches appear, and I'm happy to wait until then
> to
> continue the discussion, as I suspect otherwise we're all likely to
> end
> up exasperated.
>
> Please do Cc me on those.
>
> Regardless, until those appear and a reasonable time has been given
> for
> replies, my comments regarding the lack of review stand, as does my
> NAK
> for the series.
>
> On Thu, Sep 15, 2016 at 11:35:56AM +0100, Bryan O'Donoghue wrote:
> >
> > On Thu, 2016-09-15 at 11:13 +0100, Mark Rutland wrote:
> > >
> > > On Thu, Sep 15, 2016 at 10:35:33AM +0100, Bryan O'Donoghue wrote:
> > > >
> > > >
> > > I don't think the history matters,
> > Your comment seemed to indicate you thought we were reading a
> > architectural timer directly - which we aren't.
> Sure, and as I pointed out, the comment in the HEAD commit still
> claims
> it does, even if the code doesn't. This is at best, confusing, and
> the
> history of how it came to be there doesn't really matter...
TBH a whole git history will invariably contain things developers did,
thought better of and then backed out as is the case here.
>
> >
> > >
> > > and I don't think that one can rely
> > > on get_cycles() in this manner outside of arch code.
> > I don't follow your meaning. What's wrong with get_cycles() ?
> > You've
> > already said you don't think reading an architectural timer
> > directly is
> > correct.
> I pointed out a number of issues in my previous reply.
On MSM8994 the timer backing get_cycles() is one of the MMIO
architectural timers (which is why I switched over in the end). There's
not much else that can be done bar custom silicon - this particular
timer is as good as it gets, more of a "how do we synchronise time with
the hardware we have" than a "lets design in a feature to synchronise
time" - which was something we were focusing in on for later
silicon...
>
> For example, you have absolutely no guarantee as to what backs
> get_cycles(). Despite this, the code assumes that get_cycles() is
> backed
> by something running at the frequency described in a
> "google,greybus-frame-time-counter" node.
>
> Even if this *happens* to match what some piece of arch code provides
> today on some platform, it is in no way *guaranteed*.
That's the point though, if you declare "google,greybus-frame-time-
counter" in your platform code - then you can use 'get_cycles()' in
this manner - if not - then you need to take steps in your own new
platform to provide that same level of functionality. You could switch
to an MSM8996 or an MSM8998 declare this node and bob's your uncle.
OTOH declaring this node on x86 would be a bit pointless. You'd be
better off providing a timer on a PCI bar, and binding that into
greybus with some x86/x86-platform code...
>
> >
> > The objective is to read one of the free-running counters in
> > MSM8994,
> > clocked by the PMIC. The refclk provided by PMIC is distributed to
> > each
> > processor in the system.
> >
> > >
> > > Looking at the
> > > state of the tree [1] as of the final commit [2] in the greybus
> > > branch,
> > > my points still stand:
> > >
> > > * The "google,greybus-frame-time-counter" node is superfluous. It
> > > does
> > > not describe a particular device,
> > It describes a timer running @ 19.2MHz, clocked by PMIC refclk.
> ... which you assume is whatever backs get_cycles(), which you in
> practice assume is the architected timer. For which we *already* have
> a
> binding and driver.
It's a requirement rather than assumption. If you declare that node,
it's assumed the timer driving get_cycles() does what it says on the
greybus-frame-time-counter tin.
> > > and duplicates information we have elsewhere.
> > Can you give an example ?
> Trivially, the CNTFRQ register in the architected timer (which is
> common
> across MMIO/sysreg), which you can query with arch_timer_get_rate().
>
> Note that isn't guaranteed to match get_cycles() either. You need a
> better API to call.
In that case a DT entry makes sense I'd say.
> You should definitely interrogate the relevant driver, somehow.
Hrmm. TBH if we are ruling out arch_timer_get_rate() then I think a DT
entry (which BTW is greybus specific) is the more intelligent way
forward. The greybus platform implementer needs to understand the
dependencies and take action to meet those dependencies should he or
she wish to support this feature.
I'm not opposed necessarily to calling arch_timer_get_rate() instead of
a DT binding, assuming it works, and drawing a line under it for
MSM8994. As I've said it's up to a system architect for other platforms
to go and do the necessary design to support this feature and this will
almost certainly require new platform code both here and in other
places anyway.
>
> Without a higher-level view of what you're trying to achieve, it's
> not
> clear to me whether get_cycles() is the right interface.
I appreciate that.
---
bod
next prev parent reply other threads:[~2016-09-15 11:48 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-14 10:09 [GIT PULL] Greybus driver subsystem for 4.9-rc1 Greg KH
2016-09-14 17:36 ` Mark Rutland
2016-09-14 17:36 ` Mark Rutland
2016-09-14 18:07 ` Greg KH
2016-09-14 18:07 ` Greg KH
2016-09-14 18:29 ` Greg KH
2016-09-14 18:29 ` Greg KH
2016-09-14 19:05 ` Joe Perches
2016-09-14 19:05 ` Joe Perches
2016-09-15 9:35 ` Bryan O'Donoghue
2016-09-15 9:35 ` Bryan O'Donoghue
2016-09-15 10:13 ` Mark Rutland
2016-09-15 10:13 ` Mark Rutland
2016-09-15 10:35 ` Bryan O'Donoghue
2016-09-15 10:35 ` Bryan O'Donoghue
2016-09-15 10:47 ` Bryan O'Donoghue
2016-09-15 10:47 ` Bryan O'Donoghue
2016-09-15 11:20 ` Mark Rutland
2016-09-15 11:20 ` Mark Rutland
2016-09-15 11:48 ` Bryan O'Donoghue [this message]
2016-09-15 11:48 ` Bryan O'Donoghue
2016-09-15 12:46 ` Mark Rutland
2016-09-15 12:46 ` Mark Rutland
2016-09-15 15:40 ` Bryan O'Donoghue
2016-09-15 15:40 ` Bryan O'Donoghue
2016-09-15 15:47 ` Mark Rutland
2016-09-15 15:47 ` Mark Rutland
2016-09-15 16:09 ` Bryan O'Donoghue
2016-09-15 16:09 ` Bryan O'Donoghue
2016-09-14 20:07 ` Rob Herring
2016-09-14 20:07 ` Rob Herring
2016-09-15 10:17 ` Greg KH
2016-09-15 10:17 ` Greg KH
2016-09-15 11:02 ` Bryan O'Donoghue
2016-09-15 11:02 ` Bryan O'Donoghue
[not found] ` <20160915122141.650632149@bubbles.kroah.org>
[not found] ` <20160915122234.640367870@bubbles.kroah.org>
2016-09-15 13:16 ` [patch 11/32] greybus: camera driver Laurent Pinchart
2016-09-15 14:45 ` [GIT PULL] Greybus driver subsystem for 4.9-rc1 Mark Brown
2016-09-16 6:05 ` Greg KH
2016-09-16 10:18 ` Mark Brown
2016-09-16 13:22 ` Greg KH
2016-09-16 14:24 ` Greg KH
2016-09-20 6:41 ` Greg KH
2016-09-20 7:12 ` Vaibhav Agarwal
2016-09-16 12:18 ` Arnd Bergmann
2016-09-21 13:02 ` Mark Rutland
2016-09-21 14:13 ` Greg KH
2016-09-16 6:40 ` [patch 00/32] Greybus driver subsystem Greg KH
2016-09-16 6:41 ` [patch 02/32] greybus: interface control logic Greg KH
2016-09-16 13:22 ` [patch 03/32] greybus: operations logic Greg KH
2016-09-16 13:23 ` [patch 04/32] greybus: host driver framework Greg KH
2016-09-16 13:23 ` [patch 05/32] greybus: trace.h Greg KH
2016-09-16 13:23 ` [patch 06/32] greybus: svc driver/watchdog Greg KH
2016-09-16 13:23 ` [patch 07/32] greybus: core code Greg KH
2016-09-16 13:24 ` [patch 08/32] greybus: bootrom driver Greg KH
2016-09-16 13:24 ` [patch 09/32] greybus: firmware download class driver Greg KH
2016-09-16 13:24 ` [patch 10/32] greybus: audio driver Greg KH
2016-09-16 13:25 ` [patch 11/32] greybus: camera driver Greg KH
2016-09-16 13:25 ` [patch 12/32] greybus: es2 host driver Greg KH
2016-10-07 13:43 ` Pavel Machek
2016-09-16 14:09 ` [patch 13/32] greybus: HID driver Greg KH
2016-09-16 14:10 ` [patch 14/32] greybus: LED driver Greg KH
2016-10-07 13:36 ` Pavel Machek
2016-10-07 13:41 ` Greg KH
2016-09-16 14:10 ` [patch 15/32] greybus: logging driver Greg KH
2016-09-16 14:10 ` [patch 16/32] greybus: loopback driver Greg KH
2016-09-16 14:10 ` [patch 17/32] greybus: power supply driver Greg KH
2016-10-07 13:49 ` Pavel Machek
2016-10-07 14:12 ` Greg KH
2016-10-07 18:15 ` Pavel Machek
2016-09-16 14:11 ` [patch 18/32] greybus: raw driver Greg KH
2016-09-16 14:11 ` [patch 19/32] greybus: timesync driver Greg KH
2016-09-16 14:11 ` [patch 20/32] greybus: vibrator driver Greg KH
2016-09-16 14:19 ` [patch 21/32] greybus: arche platform driver Greg KH
2016-09-16 14:20 ` [patch 22/32] greybus: bridged phy bus code Greg KH
2016-09-16 14:20 ` [patch 23/32] greybus: bridged phy gpio driver Greg KH
2016-09-16 14:20 ` [patch 24/32] greybus: bridged phy i2c driver Greg KH
2016-09-16 14:20 ` [patch 25/32] greybus: bridged phy pwm driver Greg KH
2016-09-16 14:21 ` [patch 26/32] greybus: bridged phy sdio driver Greg KH
2016-09-16 14:21 ` [patch 27/32] greybus: bridged phy spi driver Greg KH
2016-09-16 14:21 ` [patch 28/32] greybus: bridged phy uart driver Greg KH
2016-09-16 14:21 ` [patch 29/32] greybus: bridged phy usb driver Greg KH
2016-09-16 14:22 ` [patch 30/32] greybus: tools Greg KH
2016-09-16 14:22 ` [patch 31/32] greybus: documentation Greg KH
2016-09-16 14:22 ` [patch 32/32] greybus: add to the build Greg KH
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=1473940088.10230.65.camel@nexus-software.ie \
--to=pure.logic@nexus-software.ie \
--cc=linux-arm-kernel@lists.infradead.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.