2013-07-30 18:50:56

by John Stultz

[permalink] [raw]
Subject: [GIT PULL] 64bit friendly generic sched_clock() base for 3.12

Hey Thomas, Olof,
Here is the common base changes in Stephen's "64bit friendly
generic sched_clock()" patch series. This common base will be needed so
that following patch series can be merged via both the tip/timers/core
and arm-soc trees independently.

Please let me know if you have any issues or objections with this set.

thanks
-john


The following changes since commit ad81f0545ef01ea651886dddac4bef6cec930092:

Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)

are available in the git repository at:

git://git.linaro.org/people/jstultz/linux.git
fortglx/3.12/sched-clock64-base

for you to fetch changes up to e7e3ff1bfe9c42ee31172e9afdc0383a9e595e29:

sched_clock: Add support for >32 bit sched_clock (2013-07-30 11:24:21
-0700)

----------------------------------------------------------------
Stephen Boyd (4):
clocksource: Extract max nsec calculation into separate function
sched_clock: Use seqcount instead of rolling our own
sched_clock: Use an hrtimer instead of timer
sched_clock: Add support for >32 bit sched_clock

include/linux/clocksource.h | 2 +
include/linux/sched_clock.h | 2 +
kernel/time/clocksource.c | 45 ++++++++++++------
kernel/time/sched_clock.c | 111
++++++++++++++++++++++++--------------------
4 files changed, 95 insertions(+), 65 deletions(-)


2013-07-31 22:31:25

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 02/18] ARM: clps711x: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Alexander Shiyan <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-clps711x/common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-clps711x/common.c b/arch/arm/mach-clps711x/common.c
index 4ca2f3c..5e5a6ac 100644
--- a/arch/arm/mach-clps711x/common.c
+++ b/arch/arm/mach-clps711x/common.c
@@ -259,7 +259,7 @@ asmlinkage void __exception_irq_entry clps711x_handle_irq(struct pt_regs *regs)
} while (1);
}

-static u32 notrace clps711x_sched_clock_read(void)
+static u64 notrace clps711x_sched_clock_read(void)
{
return ~readw_relaxed(CLPS711X_VIRT_BASE + TC1D);
}
@@ -366,7 +366,7 @@ void __init clps711x_timer_init(void)
tmp = clps_readl(SYSCON1) & ~(SYSCON1_TC1S | SYSCON1_TC1M);
clps_writel(tmp, SYSCON1);

- setup_sched_clock(clps711x_sched_clock_read, 16, timl);
+ sched_clock_register(clps711x_sched_clock_read, 16, timl);

clocksource_mmio_init(CLPS711X_VIRT_BASE + TC1D,
"clps711x_clocksource", timl, 300, 16,
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:26

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 04/18] ARM: imx: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Sascha Hauer <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-imx/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index cd46529..7ab3b9c6 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -111,7 +111,7 @@ static void gpt_irq_acknowledge(void)

static void __iomem *sched_clock_reg;

-static u32 notrace mxc_read_sched_clock(void)
+static u64 notrace mxc_read_sched_clock(void)
{
return sched_clock_reg ? __raw_readl(sched_clock_reg) : 0;
}
@@ -123,7 +123,7 @@ static int __init mxc_clocksource_init(struct clk *timer_clk)

sched_clock_reg = reg;

- setup_sched_clock(mxc_read_sched_clock, 32, c);
+ sched_clock_register(mxc_read_sched_clock, 32, c);
return clocksource_mmio_init(reg, "mxc_timer1", c, 200, 32,
clocksource_mmio_readl_up);
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:27

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 03/18] ARM: davinci: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Sekhar Nori <[email protected]>
Cc: Kevin Hilman <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-davinci/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 7a55b5c..6d5440a 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -285,7 +285,7 @@ static struct clocksource clocksource_davinci = {
/*
* Overwrite weak default sched_clock with something more precise
*/
-static u32 notrace davinci_read_sched_clock(void)
+static u64 notrace davinci_read_sched_clock(void)
{
return timer32_read(&timers[TID_CLOCKSOURCE]);
}
@@ -392,7 +392,7 @@ void __init davinci_timer_init(void)
davinci_clock_tick_rate))
printk(err, clocksource_davinci.name);

- setup_sched_clock(davinci_read_sched_clock, 32,
+ sched_clock_register(davinci_read_sched_clock, 32,
davinci_clock_tick_rate);

/* setup clockevent */
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:58

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 16/18] ARM: orion: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Jason Cooper <[email protected]>
Cc: Andrew Lunn <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/plat-orion/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c
index 9d2b2ac..dade292 100644
--- a/arch/arm/plat-orion/time.c
+++ b/arch/arm/plat-orion/time.c
@@ -60,7 +60,7 @@ static u32 ticks_per_jiffy;
* at least 7.5ns (133MHz TCLK).
*/

-static u32 notrace orion_read_sched_clock(void)
+static u64 notrace orion_read_sched_clock(void)
{
return ~readl(timer_base + TIMER0_VAL_OFF);
}
@@ -201,7 +201,7 @@ orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
/*
* Set scale and timer for sched_clock.
*/
- setup_sched_clock(orion_read_sched_clock, 32, tclk);
+ sched_clock_register(orion_read_sched_clock, 32, tclk);

/*
* Setup free-running clocksource timer (interrupts
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:56

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 17/18] ARM: SAMSUNG: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Ben Dooks <[email protected]>
Cc: Kukjin Kim <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/plat-samsung/samsung-time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-samsung/samsung-time.c b/arch/arm/plat-samsung/samsung-time.c
index 2957075..1e2119b 100644
--- a/arch/arm/plat-samsung/samsung-time.c
+++ b/arch/arm/plat-samsung/samsung-time.c
@@ -312,7 +312,7 @@ static void __iomem *samsung_timer_reg(void)
* this wraps around for now, since it is just a relative time
* stamp. (Inspired by U300 implementation.)
*/
-static u32 notrace samsung_read_sched_clock(void)
+static u64 notrace samsung_read_sched_clock(void)
{
void __iomem *reg = samsung_timer_reg();

@@ -337,7 +337,7 @@ static void __init samsung_clocksource_init(void)
samsung_time_setup(timer_source.source_id, TCNT_MAX);
samsung_time_start(timer_source.source_id, PERIODIC);

- setup_sched_clock(samsung_read_sched_clock, TSIZE, clock_rate);
+ sched_clock_register(samsung_read_sched_clock, TSIZE, clock_rate);

if (clocksource_mmio_init(samsung_timer_reg(), "samsung_clocksource_timer",
clock_rate, 250, TSIZE, clocksource_mmio_readl_down))
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:55

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 18/18] ARM: versatile: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Russell King <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/plat-versatile/sched-clock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-versatile/sched-clock.c b/arch/arm/plat-versatile/sched-clock.c
index 51b109e..c966ae9 100644
--- a/arch/arm/plat-versatile/sched-clock.c
+++ b/arch/arm/plat-versatile/sched-clock.c
@@ -26,7 +26,7 @@

static void __iomem *ctr;

-static u32 notrace versatile_read_sched_clock(void)
+static u64 notrace versatile_read_sched_clock(void)
{
if (ctr)
return readl(ctr);
@@ -37,5 +37,5 @@ static u32 notrace versatile_read_sched_clock(void)
void __init versatile_sched_clock_init(void __iomem *reg, unsigned long rate)
{
ctr = reg;
- setup_sched_clock(versatile_read_sched_clock, 32, rate);
+ sched_clock_register(versatile_read_sched_clock, 32, rate);
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:32:48

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 15/18] ARM: OMAP: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Tony Lindgren <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/plat-omap/counter_32k.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
index d9bc98e..384a776d 100644
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@ -38,7 +38,7 @@
*/
static void __iomem *sync32k_cnt_reg;

-static u32 notrace omap_32k_read_sched_clock(void)
+static u64 notrace omap_32k_read_sched_clock(void)
{
return sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0;
}
@@ -115,7 +115,7 @@ int __init omap_init_clocksource_32k(void __iomem *vbase)
return ret;
}

- setup_sched_clock(omap_32k_read_sched_clock, 32, 32768);
+ sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
register_persistent_clock(NULL, omap_read_persistent_clock);
pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:33:05

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 12/18] ARM: sa1100: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Russell King <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-sa1100/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 713c86c..6fd4acb 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -20,7 +20,7 @@
#include <mach/hardware.h>
#include <mach/irqs.h>

-static u32 notrace sa1100_read_sched_clock(void)
+static u64 notrace sa1100_read_sched_clock(void)
{
return readl_relaxed(OSCR);
}
@@ -122,7 +122,7 @@ void __init sa1100_timer_init(void)
writel_relaxed(0, OIER);
writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);

- setup_sched_clock(sa1100_read_sched_clock, 32, 3686400);
+ sched_clock_register(sa1100_read_sched_clock, 32, 3686400);

ckevt_sa1100_osmr0.cpumask = cpumask_of(0);

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:33:03

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 13/18] ARM: u300: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Linus Walleij <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-u300/timer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-u300/timer.c b/arch/arm/mach-u300/timer.c
index b5db207..d23a1f0 100644
--- a/arch/arm/mach-u300/timer.c
+++ b/arch/arm/mach-u300/timer.c
@@ -341,7 +341,7 @@ static struct irqaction u300_timer_irq = {
* stamp. (Inspired by OMAP implementation.)
*/

-static u32 notrace u300_read_sched_clock(void)
+static u64 notrace u300_read_sched_clock(void)
{
return readl(u300_timer_base + U300_TIMER_APP_GPT2CC);
}
@@ -380,7 +380,7 @@ static void __init u300_timer_init_of(struct device_node *np)
clk_prepare_enable(clk);
rate = clk_get_rate(clk);

- setup_sched_clock(u300_read_sched_clock, 32, rate);
+ sched_clock_register(u300_read_sched_clock, 32, rate);

u300_delay_timer.read_current_timer = &u300_read_current_timer;
u300_delay_timer.freq = rate;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:33:01

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 14/18] ARM: iop: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/plat-iop/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c
index 29606bd7..d70b733 100644
--- a/arch/arm/plat-iop/time.c
+++ b/arch/arm/plat-iop/time.c
@@ -54,7 +54,7 @@ static struct clocksource iop_clocksource = {
/*
* IOP sched_clock() implementation via its clocksource.
*/
-static u32 notrace iop_read_sched_clock(void)
+static u64 notrace iop_read_sched_clock(void)
{
return 0xffffffffu - read_tcr1();
}
@@ -142,7 +142,7 @@ void __init iop_init_time(unsigned long tick_rate)
{
u32 timer_ctl;

- setup_sched_clock(iop_read_sched_clock, 32, tick_rate);
+ sched_clock_register(iop_read_sched_clock, 32, tick_rate);

ticks_per_jiffy = DIV_ROUND_CLOSEST(tick_rate, HZ);
iop_tick_rate = tick_rate;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:31:24

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 01/18] ARM: timer-sp: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface. Also mark the read function notrace since we're here
and failure to do so would cause ftrace to break.

Cc: Russell King <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/common/timer-sp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/common/timer-sp.c b/arch/arm/common/timer-sp.c
index 023ee63..766e317 100644
--- a/arch/arm/common/timer-sp.c
+++ b/arch/arm/common/timer-sp.c
@@ -66,7 +66,7 @@ static long __init sp804_get_clock_rate(struct clk *clk)

static void __iomem *sched_clock_base;

-static u32 sp804_read(void)
+static u64 notrace sp804_read(void)
{
return ~readl_relaxed(sched_clock_base + TIMER_VALUE);
}
@@ -104,7 +104,7 @@ void __init __sp804_clocksource_and_sched_clock_init(void __iomem *base,

if (use_sched_clock) {
sched_clock_base = base;
- setup_sched_clock(sp804_read, 32, rate);
+ sched_clock_register(sp804_read, 32, rate);
}
}

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:33:51

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 11/18] ARM: pxa: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Eric Miao <[email protected]>
Cc: Russell King <[email protected]>
Cc: Haojian Zhuang <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-pxa/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index 9aa852a..d1bfaa7 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -33,7 +33,7 @@
* calls to sched_clock() which should always be the case in practice.
*/

-static u32 notrace pxa_read_sched_clock(void)
+static u64 notrace pxa_read_sched_clock(void)
{
return readl_relaxed(OSCR);
}
@@ -149,7 +149,7 @@ void __init pxa_timer_init(void)
writel_relaxed(0, OIER);
writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);

- setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate);
+ sched_clock_register(pxa_read_sched_clock, 32, clock_tick_rate);

ckevt_pxa_osmr0.cpumask = cpumask_of(0);

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:33:49

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 10/18] ARM: OMAP2+: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Tony Lindgren <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-omap2/timer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index b37e1fc..54b3cbe 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -369,7 +369,7 @@ static struct clocksource clocksource_gpt = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};

-static u32 notrace dmtimer_read_sched_clock(void)
+static u64 notrace dmtimer_read_sched_clock(void)
{
if (clksrc.reserved)
return __omap_dm_timer_read_counter(&clksrc,
@@ -461,7 +461,7 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
__omap_dm_timer_load_start(&clksrc,
OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0,
OMAP_TIMER_NONPOSTED);
- setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate);
+ sched_clock_register(dmtimer_read_sched_clock, 32, clksrc.rate);

if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
pr_err("Could not register clocksource %s\n",
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:26

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 08/18] ARM: msm: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: David Brown <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-msm/timer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index b6418fd..3c9b4da 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -170,7 +170,7 @@ static struct local_timer_ops msm_local_timer_ops __cpuinitdata = {
};
#endif /* CONFIG_LOCAL_TIMERS */

-static notrace u32 msm_sched_clock_read(void)
+static u64 notrace msm_sched_clock_read(void)
{
return msm_clocksource.read(&msm_clocksource);
}
@@ -215,7 +215,7 @@ err:
res = clocksource_register_hz(cs, dgt_hz);
if (res)
pr_err("clocksource_register failed\n");
- setup_sched_clock(msm_sched_clock_read, sched_bits, dgt_hz);
+ sched_clock_register(msm_sched_clock_read, sched_bits, dgt_hz);
}

#ifdef CONFIG_OF
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:24

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 09/18] ARM: OMAP1: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Tony Lindgren <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-omap1/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 80603d2..6ded515 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -181,7 +181,7 @@ static __init void omap_init_mpu_timer(unsigned long rate)
* ---------------------------------------------------------------------------
*/

-static u32 notrace omap_mpu_read_sched_clock(void)
+static u64 notrace omap_mpu_read_sched_clock(void)
{
return ~omap_mpu_timer_read(1);
}
@@ -193,7 +193,7 @@ static void __init omap_init_clocksource(unsigned long rate)
"%s: can't register clocksource!\n";

omap_mpu_timer_start(1, ~0, 1);
- setup_sched_clock(omap_mpu_read_sched_clock, 32, rate);
+ sched_clock_register(omap_mpu_read_sched_clock, 32, rate);

if (clocksource_mmio_init(&timer->read_tim, "mpu_timer2", rate,
300, 32, clocksource_mmio_readl_down))
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:56

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 00/18] Convert arm sched_clock users to sched_clock_register()

This patchset converts all the arm users to sched_clock_register(). It
is based on the pull request that this is in reply to. Platform
maintainers, please ack/review.

Cc: Alexander Shiyan <[email protected]>
Cc: Andrew Lunn <[email protected]>
Cc: Ben Dooks <[email protected]>
Cc: David Brown <[email protected]>
Cc: Eric Miao <[email protected]>
Cc: Haojian Zhuang <[email protected]>
Cc: Imre Kaloz <[email protected]>
Cc: Jason Cooper <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Krzysztof Halasa <[email protected]>
Cc: Kukjin Kim <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: Russell King <[email protected]>
Cc: Sascha Hauer <[email protected]>
Cc: Sekhar Nori <[email protected]>
Cc: Tony Lindgren <[email protected]>

Stephen Boyd (18):
ARM: timer-sp: Switch to sched_clock_register()
ARM: clps711x: Switch to sched_clock_register()
ARM: davinci: Switch to sched_clock_register()
ARM: imx: Switch to sched_clock_register()
ARM: integrator: Switch to sched_clock_register()
ARM: IXP4xx: Switch to sched_clock_register()
ARM: mmp: Switch to sched_clock_register()
ARM: msm: Switch to sched_clock_register()
ARM: OMAP1: Switch to sched_clock_register()
ARM: OMAP2+: Switch to sched_clock_register()
ARM: pxa: Switch to sched_clock_register()
ARM: sa1100: Switch to sched_clock_register()
ARM: u300: Switch to sched_clock_register()
ARM: iop: Switch to sched_clock_register()
ARM: OMAP: Switch to sched_clock_register()
ARM: orion: Switch to sched_clock_register()
ARM: SAMSUNG: Switch to sched_clock_register()
ARM: versatile: Switch to sched_clock_register()

arch/arm/common/timer-sp.c | 4 ++--
arch/arm/mach-clps711x/common.c | 4 ++--
arch/arm/mach-davinci/time.c | 4 ++--
arch/arm/mach-imx/time.c | 4 ++--
arch/arm/mach-integrator/integrator_ap.c | 4 ++--
arch/arm/mach-ixp4xx/common.c | 4 ++--
arch/arm/mach-mmp/time.c | 4 ++--
arch/arm/mach-msm/timer.c | 4 ++--
arch/arm/mach-omap1/time.c | 4 ++--
arch/arm/mach-omap2/timer.c | 4 ++--
arch/arm/mach-pxa/time.c | 4 ++--
arch/arm/mach-sa1100/time.c | 4 ++--
arch/arm/mach-u300/timer.c | 4 ++--
arch/arm/plat-iop/time.c | 4 ++--
arch/arm/plat-omap/counter_32k.c | 4 ++--
arch/arm/plat-orion/time.c | 4 ++--
arch/arm/plat-samsung/samsung-time.c | 4 ++--
arch/arm/plat-versatile/sched-clock.c | 4 ++--
18 files changed, 36 insertions(+), 36 deletions(-)

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:55

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 05/18] ARM: integrator: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Linus Walleij <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-integrator/integrator_ap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index d9e95e6..1489f5c 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -277,7 +277,7 @@ struct amba_pl010_data ap_uart_data = {

static unsigned long timer_reload;

-static u32 notrace integrator_read_sched_clock(void)
+static u64 notrace integrator_read_sched_clock(void)
{
return -readl((void __iomem *) TIMER2_VA_BASE + TIMER_VALUE);
}
@@ -298,7 +298,7 @@ static void integrator_clocksource_init(unsigned long inrate,

clocksource_mmio_init(base + TIMER_VALUE, "timer2",
rate, 200, 16, clocksource_mmio_readl_down);
- setup_sched_clock(integrator_read_sched_clock, 16, rate);
+ sched_clock_register(integrator_read_sched_clock, 16, rate);
}

static void __iomem * clkevt_base;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:54

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 06/18] ARM: IXP4xx: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Imre Kaloz <[email protected]>
Cc: Krzysztof Halasa <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-ixp4xx/common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 5327dec..124631e 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -448,7 +448,7 @@ void __init ixp4xx_sys_init(void)
/*
* sched_clock()
*/
-static u32 notrace ixp4xx_read_sched_clock(void)
+static u64 notrace ixp4xx_read_sched_clock(void)
{
return *IXP4XX_OSTS;
}
@@ -466,7 +466,7 @@ unsigned long ixp4xx_timer_freq = IXP4XX_TIMER_FREQ;
EXPORT_SYMBOL(ixp4xx_timer_freq);
static void __init ixp4xx_clocksource_init(void)
{
- setup_sched_clock(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);
+ sched_clock_register(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);

clocksource_mmio_init(NULL, "OSTS", ixp4xx_timer_freq, 200, 32,
ixp4xx_clocksource_read);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-07-31 22:34:52

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 07/18] ARM: mmp: Switch to sched_clock_register()

The 32 bit sched_clock interface now supports 64 bits. Upgrade to
the 64 bit function to allow us to remove the 32 bit registration
interface.

Cc: Eric Miao <[email protected]>
Cc: Haojian Zhuang <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
arch/arm/mach-mmp/time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-mmp/time.c b/arch/arm/mach-mmp/time.c
index 7ac41e8..024022d 100644
--- a/arch/arm/mach-mmp/time.c
+++ b/arch/arm/mach-mmp/time.c
@@ -61,7 +61,7 @@ static inline uint32_t timer_read(void)
return __raw_readl(mmp_timer_base + TMR_CVWR(1));
}

-static u32 notrace mmp_read_sched_clock(void)
+static u64 notrace mmp_read_sched_clock(void)
{
return timer_read();
}
@@ -195,7 +195,7 @@ void __init timer_init(int irq)
{
timer_config();

- setup_sched_clock(mmp_read_sched_clock, 32, CLOCK_TICK_RATE);
+ sched_clock_register(mmp_read_sched_clock, 32, CLOCK_TICK_RATE);

ckevt.cpumask = cpumask_of(0);

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-08-01 00:31:45

by Jason Cooper

[permalink] [raw]
Subject: Re: [PATCH 16/18] ARM: orion: Switch to sched_clock_register()

On Wed, Jul 31, 2013 at 03:31:15PM -0700, Stephen Boyd wrote:
> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Jason Cooper <[email protected]>
> Cc: Andrew Lunn <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
> arch/arm/plat-orion/time.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Acked-by: Jason Cooper <[email protected]>

thx,

Jason.

2013-08-01 00:43:40

by Santosh Shilimkar

[permalink] [raw]
Subject: Re: [PATCH 10/18] ARM: OMAP2+: Switch to sched_clock_register()

On Wednesday 31 July 2013 06:31 PM, Stephen Boyd wrote:
> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Tony Lindgren <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
> arch/arm/mach-omap2/timer.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
Acked-by: Santosh Shilimkar<[email protected]>

2013-08-01 05:46:31

by Sekhar Nori

[permalink] [raw]
Subject: Re: [PATCH 03/18] ARM: davinci: Switch to sched_clock_register()

On Thursday 01 August 2013 04:01 AM, Stephen Boyd wrote:
> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Sekhar Nori <[email protected]>
> Cc: Kevin Hilman <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
> arch/arm/mach-davinci/time.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
> index 7a55b5c..6d5440a 100644
> --- a/arch/arm/mach-davinci/time.c
> +++ b/arch/arm/mach-davinci/time.c
> @@ -285,7 +285,7 @@ static struct clocksource clocksource_davinci = {
> /*
> * Overwrite weak default sched_clock with something more precise
> */
> -static u32 notrace davinci_read_sched_clock(void)
> +static u64 notrace davinci_read_sched_clock(void)
> {
> return timer32_read(&timers[TID_CLOCKSOURCE]);
> }
> @@ -392,7 +392,7 @@ void __init davinci_timer_init(void)
> davinci_clock_tick_rate))
> printk(err, clocksource_davinci.name);
>
> - setup_sched_clock(davinci_read_sched_clock, 32,
> + sched_clock_register(davinci_read_sched_clock, 32,
> davinci_clock_tick_rate);

Please fix the line break to align with open parens. Otherwise looks
good. I tested it on DA850 EVM as well. With above fixed:

Acked-by: Sekhar Nori <[email protected]>

Thanks,
Sekhar

2013-08-01 16:12:59

by David Brown

[permalink] [raw]
Subject: Re: [PATCH 08/18] ARM: msm: Switch to sched_clock_register()

On Wed, Jul 31, 2013 at 03:31:07PM -0700, Stephen Boyd wrote:
>The 32 bit sched_clock interface now supports 64 bits. Upgrade to
>the 64 bit function to allow us to remove the 32 bit registration
>interface.
>
>Cc: David Brown <[email protected]>
>Signed-off-by: Stephen Boyd <[email protected]>
>---
> arch/arm/mach-msm/timer.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Acked-by: David Brown <[email protected]>

--
sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

2013-08-05 17:22:49

by Kukjin Kim

[permalink] [raw]
Subject: Re: [PATCH 17/18] ARM: SAMSUNG: Switch to sched_clock_register()

On 08/01/13 07:31, Stephen Boyd wrote:
> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Ben Dooks<[email protected]>
> Cc: Kukjin Kim<[email protected]>

Acked-by: Kukjin Kim <[email protected]>

Thanks,
Kukjin

> Signed-off-by: Stephen Boyd<[email protected]>
> ---
> arch/arm/plat-samsung/samsung-time.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/samsung-time.c b/arch/arm/plat-samsung/samsung-time.c
> index 2957075..1e2119b 100644
> --- a/arch/arm/plat-samsung/samsung-time.c
> +++ b/arch/arm/plat-samsung/samsung-time.c
> @@ -312,7 +312,7 @@ static void __iomem *samsung_timer_reg(void)
> * this wraps around for now, since it is just a relative time
> * stamp. (Inspired by U300 implementation.)
> */
> -static u32 notrace samsung_read_sched_clock(void)
> +static u64 notrace samsung_read_sched_clock(void)
> {
> void __iomem *reg = samsung_timer_reg();
>
> @@ -337,7 +337,7 @@ static void __init samsung_clocksource_init(void)
> samsung_time_setup(timer_source.source_id, TCNT_MAX);
> samsung_time_start(timer_source.source_id, PERIODIC);
>
> - setup_sched_clock(samsung_read_sched_clock, TSIZE, clock_rate);
> + sched_clock_register(samsung_read_sched_clock, TSIZE, clock_rate);
>
> if (clocksource_mmio_init(samsung_timer_reg(), "samsung_clocksource_timer",
> clock_rate, 250, TSIZE, clocksource_mmio_readl_down))

2013-08-07 13:52:59

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH 05/18] ARM: integrator: Switch to sched_clock_register()

On Thu, Aug 1, 2013 at 12:31 AM, Stephen Boyd <[email protected]> wrote:

> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Linus Walleij <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>

For this patch (given the idea is accepted)
Acked-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2013-08-07 18:55:03

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH 13/18] ARM: u300: Switch to sched_clock_register()

On Thu, Aug 1, 2013 at 12:31 AM, Stephen Boyd <[email protected]> wrote:

> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.
>
> Cc: Linus Walleij <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>

Acked-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2013-08-09 07:49:29

by Krzysztof Halasa

[permalink] [raw]
Subject: Re: [PATCH 06/18] ARM: IXP4xx: Switch to sched_clock_register()

Stephen Boyd <[email protected]> writes:

> The 32 bit sched_clock interface now supports 64 bits. Upgrade to
> the 64 bit function to allow us to remove the 32 bit registration
> interface.

Don't find anything wrong in this.

Acked-by: Krzysztof Halasa <[email protected]>

> +++ b/arch/arm/mach-ixp4xx/common.c
> @@ -448,7 +448,7 @@ void __init ixp4xx_sys_init(void)
> /*
> * sched_clock()
> */
> -static u32 notrace ixp4xx_read_sched_clock(void)
> +static u64 notrace ixp4xx_read_sched_clock(void)
> {
> return *IXP4XX_OSTS;
> }
> @@ -466,7 +466,7 @@ unsigned long ixp4xx_timer_freq = IXP4XX_TIMER_FREQ;
> EXPORT_SYMBOL(ixp4xx_timer_freq);
> static void __init ixp4xx_clocksource_init(void)
> {
> - setup_sched_clock(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);
> + sched_clock_register(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);
>
> clocksource_mmio_init(NULL, "OSTS", ixp4xx_timer_freq, 200, 32,
> ixp4xx_clocksource_read);

--
Krzysztof Halasa

2013-08-29 21:56:25

by John Stultz

[permalink] [raw]
Subject: Re: [GIT PULL] 64bit friendly generic sched_clock() base for 3.12

On 07/30/2013 11:50 AM, John Stultz wrote:
> Hey Thomas, Olof,
> Here is the common base changes in Stephen's "64bit friendly
> generic sched_clock()" patch series. This common base will be needed
> so that following patch series can be merged via both the
> tip/timers/core and arm-soc trees independently.
>
> Please let me know if you have any issues or objections with this set.
>
> thanks
> -john
>
>
> The following changes since commit
> ad81f0545ef01ea651886dddac4bef6cec930092:
>
> Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)
>
> are available in the git repository at:
>
> git://git.linaro.org/people/jstultz/linux.git
> fortglx/3.12/sched-clock64-base
>
> for you to fetch changes up to e7e3ff1bfe9c42ee31172e9afdc0383a9e595e29:
>
> sched_clock: Add support for >32 bit sched_clock (2013-07-30
> 11:24:21 -0700)
>
> ----------------------------------------------------------------
> Stephen Boyd (4):
> clocksource: Extract max nsec calculation into separate function
> sched_clock: Use seqcount instead of rolling our own
> sched_clock: Use an hrtimer instead of timer
> sched_clock: Add support for >32 bit sched_clock
>
> include/linux/clocksource.h | 2 +
> include/linux/sched_clock.h | 2 +
> kernel/time/clocksource.c | 45 ++++++++++++------
> kernel/time/sched_clock.c | 111
> ++++++++++++++++++++++++--------------------
> 4 files changed, 95 insertions(+), 65 deletions(-)

Ping? Thomas?

thanks
-john