public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Anatol Pomozov <anatol.pomozov@gmail.com>
Cc: "daniel.lezcano@linaro.org" <daniel.lezcano@linaro.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] clocksource: arch_timer: Mark ARMv8 system timer as 'always-on'
Date: Thu, 6 Nov 2014 18:23:29 +0000	[thread overview]
Message-ID: <20141106182329.GA445@red-moon> (raw)
In-Reply-To: <1415296639-40203-1-git-send-email-anatol.pomozov@gmail.com>

On Thu, Nov 06, 2014 at 05:57:19PM +0000, Anatol Pomozov wrote:
> Quoting ARMv8 Reference Manual section D6.1:
> "The system counter must be implemented in an always-on power domain."

Do not mix up the system counter with arch timers. System counter is
always-on, but the arch timer(s) logic (that implements eg timers
comparators against the system counter value) might not be (timer logic
is in the processor), so it can be lost on processor(s) power down.

NAK.

Lorenzo

> There is no need to keep 'always-on' configurable on ARMv8. We ignore
> this dts property value and unconditionally set it to true.


> 
> The issue was discovered while working on ARMv8 board with only one timer
> (arm arch timer). If 'always-on' is false then it disables high-resolution
> timer functionality.
> 
> Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
> ---
>  .../devicetree/bindings/arm/arch_timer.txt          |  8 ++++++--
>  drivers/clocksource/arm_arch_timer.c                | 21 +++++++++++++++++----
>  2 files changed, 23 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
> index 37b2caf..cb2d572 100644
> --- a/Documentation/devicetree/bindings/arm/arch_timer.txt
> +++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
> @@ -19,8 +19,12 @@ to deliver its interrupts via SPIs.
>  
>  - clock-frequency : The frequency of the main counter, in Hz. Optional.
>  
> -- always-on : a boolean property. If present, the timer is powered through an
> -  always-on power domain, therefore it never loses context.
> +- always-on : an "armv7-timer" specific boolean property.
> +  If present, the timer is powered through an always-on power domain, therefore
> +  it never loses context.
> +  ARMv8 system timer is in always-on power domain (per Architecture Reference
> +  section D6.1) thus this proprty is ignored for "arm,armv8-timer" compatible
> +  timer.
>  
>  Example:
>  
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index 2133f9d..610052d 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -719,13 +719,26 @@ static void __init arch_timer_init(struct device_node *np)
>  		}
>  	}
>  
> -	arch_timer_c3stop = !of_property_read_bool(np, "always-on");
> -
>  	arch_timer_register();
>  	arch_timer_common_init();
>  }
> -CLOCKSOURCE_OF_DECLARE(armv7_arch_timer, "arm,armv7-timer", arch_timer_init);
> -CLOCKSOURCE_OF_DECLARE(armv8_arch_timer, "arm,armv8-timer", arch_timer_init);
> +
> +static void __init v7_arch_timer_init(struct device_node *np)
> +{
> +	arch_timer_c3stop = !of_property_read_bool(np, "always-on");
> +	arch_timer_init(np);
> +}
> +
> +static void __init v8_arch_timer_init(struct device_node *np)
> +{
> +	/* Per ARMv8 Architecture Reference Manual section D6.1
> +	 * the system timer is in always-on power domain.
> +	 */
> +	arch_timer_c3stop = false;
> +	arch_timer_init(np);
> +}
> +CLOCKSOURCE_OF_DECLARE(armv7_arch_timer, "arm,armv7-timer", v7_arch_timer_init);
> +CLOCKSOURCE_OF_DECLARE(armv8_arch_timer, "arm,armv8-timer", v8_arch_timer_init);
>  
>  static void __init arch_timer_mem_init(struct device_node *np)
>  {
> -- 
> 2.1.0.rc2.206.gedb03e5
> 
> 

  parent reply	other threads:[~2014-11-06 18:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-06 17:57 [PATCH] clocksource: arch_timer: Mark ARMv8 system timer as 'always-on' Anatol Pomozov
2014-11-06 18:09 ` Marc Zyngier
2014-11-06 18:14   ` Anatol Pomozov
2014-11-06 18:23 ` Lorenzo Pieralisi [this message]
2014-11-06 20:46   ` Anatol Pomozov

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=20141106182329.GA445@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=anatol.pomozov@gmail.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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