* [GIT PULL] clockevents: a couple of fixes for 3.15
@ 2014-04-29 13:16 Daniel Lezcano
2014-04-29 13:17 ` [PATCH 1/2] clocksource: arch_arm_timer: Fix age-old arch timer C3STOP detection issue Daniel Lezcano
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Lezcano @ 2014-04-29 13:16 UTC (permalink / raw)
To: Thomas Gleixner, Ingo Molnar
Cc: Lorenzo Pieralisi, Alexander Shiyan, Linux Kernel Mailing List
Hi Thomas,
* Lorenzo Pieralizi fixed an issue with the arch_arm_timer where the
C3STOP flag for all the arch can cause some trouble by setting the flag
only if the power domain is not always on
* Alexander Shiyan fixed a compilation by changing the init function
to the right prototype
Thanks
-- Daniel
The following changes since commit 27630532ef5ead28b98cfe28d8f95222ef91c2b7:
tick-sched: Check tick_nohz_enabled in tick_nohz_switch_to_nohz()
(2014-04-15 20:26:58 +0200)
are available in the git repository at:
git://git.linaro.org/people/daniel.lezcano/linux.git
clockevents/3.15-fixes
for you to fetch changes up to 9afa27ce9414c92e271b0d7eec937bd9f5565da5:
clocksource: nspire: Fix compiler warning (2014-04-29 15:06:43 +0200)
----------------------------------------------------------------
Alexander Shiyan (1):
clocksource: nspire: Fix compiler warning
Lorenzo Pieralisi (1):
clocksource: arch_arm_timer: Fix age-old arch timer C3STOP
detection issue
.../devicetree/bindings/arm/arch_timer.txt | 3 +++
drivers/clocksource/arm_arch_timer.c | 6 +++++-
drivers/clocksource/zevio-timer.c | 7 ++++++-
3 files changed, 14 insertions(+), 2 deletions(-)
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] clocksource: arch_arm_timer: Fix age-old arch timer C3STOP detection issue
2014-04-29 13:16 [GIT PULL] clockevents: a couple of fixes for 3.15 Daniel Lezcano
@ 2014-04-29 13:17 ` Daniel Lezcano
2014-04-29 13:17 ` [PATCH 2/2] clocksource: nspire: Fix compiler warning Daniel Lezcano
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Lezcano @ 2014-04-29 13:17 UTC (permalink / raw)
To: tglx, mingo; +Cc: Lorenzo.Pieralisi, shc_work, linux-kernel
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
ARM arch timers are tightly coupled with the CPU logic and lose context
on platform implementing HW power management when cores are powered
down at run-time. Marking the arch timers as C3STOP regardless of power
management capabilities causes issues on platforms with no power management,
since in that case the arch timers cannot possibly enter states where the
timer loses context at runtime and therefore can always be used as a high
resolution clockevent device.
In order to fix the C3STOP issue in a way compliant with how real HW
works, this patch adds a boolean property to the arch timer bindings
to define if the arch timer is managed by an always-on power domain.
This power domain is present on all ARM platforms to date, and manages
HW that must not be turned off, whatever the state of other HW
components (eg power controller). On platforms with no power management
capabilities, it is the only power domain present, which encompasses
and manages power supply for all HW components in the system.
If the timer is powered by the always-on power domain, the always-on
property must be present in the bindings which means that the timer cannot
be shutdown at runtime, so it is not a C3STOP clockevent device.
If the timer binding does not contain the always-on property, the timer is
assumed to be power-gateable, hence it must be defined as a C3STOP
clockevent device.
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Magnus Damm <damm@opensource.se>
Cc: Marc Carino <marc.ceeeee@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
.../devicetree/bindings/arm/arch_timer.txt | 3 +++
drivers/clocksource/arm_arch_timer.c | 6 +++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
index 06fc760..37b2caf 100644
--- a/Documentation/devicetree/bindings/arm/arch_timer.txt
+++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
@@ -19,6 +19,9 @@ 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.
+
Example:
timer {
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 57e823c..5163ec1 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -66,6 +66,7 @@ static int arch_timer_ppi[MAX_TIMER_PPI];
static struct clock_event_device __percpu *arch_timer_evt;
static bool arch_timer_use_virtual = true;
+static bool arch_timer_c3stop;
static bool arch_timer_mem_use_virtual;
/*
@@ -263,7 +264,8 @@ static void __arch_timer_setup(unsigned type,
clk->features = CLOCK_EVT_FEAT_ONESHOT;
if (type == ARCH_CP15_TIMER) {
- clk->features |= CLOCK_EVT_FEAT_C3STOP;
+ if (arch_timer_c3stop)
+ clk->features |= CLOCK_EVT_FEAT_C3STOP;
clk->name = "arch_sys_timer";
clk->rating = 450;
clk->cpumask = cpumask_of(smp_processor_id());
@@ -665,6 +667,8 @@ 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();
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] clocksource: nspire: Fix compiler warning
2014-04-29 13:17 ` [PATCH 1/2] clocksource: arch_arm_timer: Fix age-old arch timer C3STOP detection issue Daniel Lezcano
@ 2014-04-29 13:17 ` Daniel Lezcano
0 siblings, 0 replies; 3+ messages in thread
From: Daniel Lezcano @ 2014-04-29 13:17 UTC (permalink / raw)
To: tglx, mingo; +Cc: Lorenzo.Pieralisi, shc_work, linux-kernel
From: Alexander Shiyan <shc_work@mail.ru>
CC drivers/clocksource/zevio-timer.o
drivers/clocksource/zevio-timer.c:215:1: warning: comparison of distinct pointer types lacks a cast [enabled by default]
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
drivers/clocksource/zevio-timer.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/clocksource/zevio-timer.c b/drivers/clocksource/zevio-timer.c
index ca81809..7ce4421 100644
--- a/drivers/clocksource/zevio-timer.c
+++ b/drivers/clocksource/zevio-timer.c
@@ -212,4 +212,9 @@ error_free:
return ret;
}
-CLOCKSOURCE_OF_DECLARE(zevio_timer, "lsi,zevio-timer", zevio_timer_add);
+static void __init zevio_timer_init(struct device_node *node)
+{
+ BUG_ON(zevio_timer_add(node));
+}
+
+CLOCKSOURCE_OF_DECLARE(zevio_timer, "lsi,zevio-timer", zevio_timer_init);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-04-29 13:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-29 13:16 [GIT PULL] clockevents: a couple of fixes for 3.15 Daniel Lezcano
2014-04-29 13:17 ` [PATCH 1/2] clocksource: arch_arm_timer: Fix age-old arch timer C3STOP detection issue Daniel Lezcano
2014-04-29 13:17 ` [PATCH 2/2] clocksource: nspire: Fix compiler warning Daniel Lezcano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox