public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Olof Johansson <olof@lixom.net>, marc.zyngier@arm.com
Cc: Naveen Krishna Chatradhi <ch.naveen@samsung.com>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	"naveenkrishna.ch@gmail.com" <naveenkrishna.ch@gmail.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"cpgs@samsung.com" <cpgs@samsung.com>,
	Thomas Abraham <thomas.ab@samsung.com>,
	Rob Herring <robh@kernel.org>
Subject: Re: [PATCH 11/14] arm64: dts: Add initial device tree support for EXYNOS7
Date: Thu, 28 Aug 2014 18:03:06 +0100	[thread overview]
Message-ID: <20140828170306.GQ14650@leverpostej> (raw)
In-Reply-To: <CAOesGMjY8wfAcq2fLgs=ZWHdiWtFqxr+ncUKTje0SnXqO-CCgQ@mail.gmail.com>

On Thu, Aug 28, 2014 at 05:28:22PM +0100, Olof Johansson wrote:
> On Thu, Aug 28, 2014 at 2:48 AM, Mark Rutland <mark.rutland@arm.com> wrote:
> > Hi,
> >
> >> > +   cpus {
> >> > +           #address-cells = <2>;
> >> > +           #size-cells = <0>;
> >>
> >> Why size-cells=2? Can you not fit a cpuid in 32 bits?
> >
> > As of commit 72aea393a2e7 (arm64: smp: honour #address-size when parsing
> > CPU reg property) Linux can handle single-cell cpu node reg entries
> > where /cpus/#address-cells = <1>.
> >
> > I can't make any guarantees about other code (e.g. bootloaders) which
> > might try to do things with cpu nodes, YMMV.
> 
> Ok. If address-cells is kept at 2 the unit address needs to be changed
> to "0,0". So one or the other has to be changed.

I'm happy either way.

I'm not sure the rest of the tree had "0," prefixes on all of the
unit-addresses for 64-bit addresses that were under 4GB, and I'm not
sure that existing dts consistently do that either.

Do we want to enforce that for all 64-bit unit-addresses?

> > [...]
> >
> >> > +   hsi2c_2: hsi2c@14E60000 {
> >>
> >> I much prefer lowercase hex in unit addresses (and reg entries) below. I
> >> know 32-bit uses uppercase, but let's switch going forward here.
> >
> > My preference also; I'm happy to enforce that on new dts.
> >
> > [...]
> >
> >> > +   timer {
> >> > +           compatible = "arm,armv8-timer";
> >> > +           interrupts = <1 13 0xff01>,
> >> > +                        <1 14 0xff01>,
> >> > +                        <1 11 0xff01>,
> >> > +                        <1 10 0xff01>;
> >> > +           clock-frequency = <24000000>;
> >> > +           use-clocksource-only;
> >> > +           use-physical-timer;
> >>
> >> These two properties are not standard, and I would expect any 64-bit
> >> platform to come with PSCI such that you have a way to initialize the
> >> virtual timers.
> >
> > Likewise with clock-frequency. It's not a full workaround, and it's not
> > hard to initialise CNTFRQ on each CPU.
> 
> Technically clock-frequency is documented, but not recommended to be
> used unless needed for working around firmware that doesn't setup the
> register value. :)

True. 

> In this case it's likely a cargo cult carry over from 5250 where the
> CNTFRQ requirement happened around the same time as we were working on
> it so that generation firmware lacked support for it -- it should
> since then have been fixed properly.

It's probably unhelpful that the documentation isn't explicit about
that. On that front, how about the patch below?

Mark.

---->8----
>From 67104ad5a56e4c18f9c41f06af028b7561740afd Mon Sep 17 00:00:00 2001
From: Mark Rutland <mark.rutland@arm.com>
Date: Thu, 28 Aug 2014 17:41:03 +0100
Subject: [PATCH] Doc: dt: arch_timer: discourage clock-frequency use

The ARM Generic Timer (AKA the architected timer, arm_arch_timer)
features a CPU register (CNTFRQ) which firmware is intended to
initialize, and non-secure software can read to determine the frequency
of the timer. On CPUs with secure state, this register cannot be written
from non-secure states.

The firmware of early SoCs featuring the timer did not correctly
initialize CNTFRQ correctly on all CPUs, requiring the frequency to be
described in DT as a workaround. This workaround is not complete however
as CNTFRQ is exposed to all software in a privileged non-secure mode,
including KVM guests. The firmware and DTs for recent SoCs have followed
the example set by these early SoCs.

This patch updates the arch timer binding documentation to make it
clearer that the use of the clock-frequency property is a poor
work-around. The MMIO generic timer binding is similarly updated, though
this is less of a concern as there is generally no need to expose the
MMIO timers to guest OSs.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
---
 Documentation/devicetree/bindings/arm/arch_timer.txt | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
index 37b2caf..5ca3f95 100644
--- a/Documentation/devicetree/bindings/arm/arch_timer.txt
+++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
@@ -17,7 +17,10 @@ to deliver its interrupts via SPIs.
 - interrupts : Interrupt list for secure, non-secure, virtual and
   hypervisor timers, in that order.
 
-- clock-frequency : The frequency of the main counter, in Hz. Optional.
+- clock-frequency : The frequency of the main counter, in Hz. Should be present
+  only where necessary to work around BROKEN firmware which does not configure
+  CNTFRQ on all CPUs to a uniform correct value. Use of this property is
+  STRONGLY DISCOURAGED; fix your firmware unless absolutely impossible.
 
 - always-on : a boolean property. If present, the timer is powered through an
   always-on power domain, therefore it never loses context.
@@ -38,7 +41,8 @@ Example:
 
 - compatible : Should at least contain "arm,armv7-timer-mem".
 
-- clock-frequency : The frequency of the main counter, in Hz. Optional.
+- clock-frequency : The frequency of the main counter, in Hz. Should be present
+  only when firmware has not configured the MMIO CNTFRQ registers.
 
 - reg : The control frame base address.
 
-- 
1.9.1

  reply	other threads:[~2014-08-28 17:03 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-27  9:44 [PATCH 00/14] Support 64bit Cortex A57 based Exynos7 SoC Naveen Krishna Chatradhi
2014-08-27  9:44 ` [PATCH 10/14] arm64: dts: add pinctrl support to EXYNOS7 Naveen Krishna Chatradhi
2014-08-27 11:14   ` Tomasz Figa
2014-08-29  5:46     ` Naveen Krishna Ch
2014-08-27  9:44 ` [PATCH 11/14] arm64: dts: Add initial device tree support for EXYNOS7 Naveen Krishna Chatradhi
2014-08-27 10:42   ` Mark Rutland
2014-08-27 14:54     ` Catalin Marinas
2014-09-03  7:48     ` Naveen Krishna Ch
2014-08-27 11:30   ` Tomasz Figa
2014-09-03  7:55     ` Naveen Krishna Ch
2014-08-28  3:56   ` Olof Johansson
2014-08-28  8:35     ` Marc Zyngier
2014-08-28  9:48     ` Mark Rutland
2014-08-28 16:28       ` Olof Johansson
2014-08-28 17:03         ` Mark Rutland [this message]
2014-08-28 17:19           ` Olof Johansson
2014-08-28 17:39             ` Mark Rutland
2014-08-28 17:47               ` Geert Uytterhoeven
2014-08-28 18:17                 ` Mark Rutland
2014-08-28 17:54             ` Rob Herring
2014-08-28 22:23               ` Olof Johansson
2014-08-28 23:30                 ` Simon Horman
2014-08-28 17:27           ` Marc Zyngier
2014-08-28 17:30             ` Mark Rutland
2014-08-28 17:37               ` Marc Zyngier
2014-08-28 17:45                 ` Mark Rutland
     [not found]             ` <53FF6668.4080502-5wv7dgnIgG8@public.gmane.org>
2014-08-28 17:33               ` Rob Herring
2014-08-28 17:43                 ` Mark Rutland
2014-09-03  8:05     ` Naveen Krishna Ch
2014-08-27  9:44 ` [PATCH 12/14] arm64: dts: add Exynos7 based Espresso board dts file Naveen Krishna Chatradhi
2014-08-27 11:32   ` Tomasz Figa
2014-08-28  4:00   ` Olof Johansson
2014-08-29  5:51     ` Naveen Krishna Ch
2014-08-27  9:44 ` [PATCH 13/14] arm64: exynos7: Enable ARMv8 based Exynos7 (SoC) support Naveen Krishna Chatradhi
2014-08-27 11:09   ` Mark Rutland
2014-08-27 14:50     ` Catalin Marinas
2014-08-28  4:05       ` Olof Johansson
2014-09-03  8:14     ` Naveen Krishna Ch
2014-08-27 11:34 ` [PATCH 00/14] Support 64bit Cortex A57 based Exynos7 SoC Tomasz Figa
2014-09-13 10:57   ` Tomasz Figa
2014-09-14 13:45     ` Thomas Abraham
2014-08-28  3:47 ` Olof Johansson

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=20140828170306.GQ14650@leverpostej \
    --to=mark.rutland@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=ch.naveen@samsung.com \
    --cc=cpgs@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=naveenkrishna.ch@gmail.com \
    --cc=olof@lixom.net \
    --cc=robh@kernel.org \
    --cc=thomas.ab@samsung.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