Skip to contentSkip to conversation

64bit friendly generic sched_clock() base for 3.12

GIT PULL In review John Stultz 9 participants 29 messages Jul 30, 2013 – Aug 29, 2013

Subsystems (10)
lore
Share & tools
lore
#0 lore raw

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(-)
#1 lore raw

cover 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(-)
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#2 lore raw

PATCH 1/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.

---
 arch/arm/common/timer-sp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/common/timer-sp.c +2 -2
index 023ee63..766e317 100644
@@ -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);
 	}
 }
 
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#3 lore raw

PATCH 2/18 ARM: clps711x: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/mach-clps711x/common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-clps711x/common.c +2 -2
index 4ca2f3c..5e5a6ac 100644
@@ -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,
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#4 lore raw

PATCH 3/18 ARM: davinci: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/mach-davinci/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-davinci/time.c +2 -2
index 7a55b5c..6d5440a 100644
@@ -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 */
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 3/18
#5 lore raw

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

Quoted 25 lines · Stephen Boyd

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]>
---
 arch/arm/mach-davinci/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-davinci/time.c +1 -1
index 7a55b5c..6d5440a 100644
@@ -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]);
 }

arch/arm/mach-davinci/time.c void __init davinci_timer_init(void) · line 396

Quoted 6 lines
arch/arm/mach-davinci/time.c +1 -1
@@ -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:

Thanks,
Sekhar

#6 lore raw

PATCH 4/18 ARM: imx: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-imx/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-imx/time.c +2 -2
index cd46529..7ab3b9c6 100644
@@ -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);
 }
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#7 lore raw

PATCH 5/18 ARM: integrator: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-integrator/integrator_ap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-integrator/integrator_ap.c +2 -2
index d9e95e6..1489f5c 100644
@@ -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;
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#9 lore raw

PATCH 6/18 ARM: IXP4xx: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/mach-ixp4xx/common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-ixp4xx/common.c +2 -2
index 5327dec..124631e 100644
@@ -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);
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 6/18
#10 lore raw

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

Quoted 3 lines · Stephen Boyd

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.

Quoted 19 lines

+++ b/arch/arm/mach-ixp4xx/common.c

arch/arm/mach-ixp4xx/common.c +2 -2
@@ -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);
Signature · 1 line
Krzysztof Halasa
#11 lore raw

PATCH 7/18 ARM: mmp: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/mach-mmp/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-mmp/time.c +2 -2
index 7ac41e8..024022d 100644
@@ -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);
 
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#12 lore raw

PATCH 8/18 ARM: msm: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-msm/timer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-msm/timer.c +2 -2
index b6418fd..3c9b4da 100644
@@ -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
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 8/18
#13 lore raw

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

Quoted 9 lines · Stephen Boyd

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.

---
arch/arm/mach-msm/timer.c | 4 ++--

1 file changed, 2 insertions(+), 2 deletions(-)
Signature · 3 lines
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
#14 lore raw

PATCH 9/18 ARM: OMAP1: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-omap1/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-omap1/time.c +2 -2
index 80603d2..6ded515 100644
@@ -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))
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#15 lore raw

PATCH 10/18 ARM: OMAP2+: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-omap2/timer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/timer.c +2 -2
index b37e1fc..54b3cbe 100644
@@ -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",
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 10/18
#16 lore raw

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

Quoted 10 lines · Stephen Boyd

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.

---
 arch/arm/mach-omap2/timer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
#17 lore raw

PATCH 11/18 ARM: pxa: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/mach-pxa/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-pxa/time.c +2 -2
index 9aa852a..d1bfaa7 100644
@@ -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);
 
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#18 lore raw

PATCH 12/18 ARM: sa1100: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-sa1100/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-sa1100/time.c +2 -2
index 713c86c..6fd4acb 100644
@@ -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);
 
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#19 lore raw

PATCH 13/18 ARM: u300: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/mach-u300/timer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-u300/timer.c +2 -2
index b5db207..d23a1f0 100644
@@ -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;
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#21 lore raw

PATCH 14/18 ARM: iop: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/plat-iop/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-iop/time.c +2 -2
index 29606bd7..d70b733 100644
@@ -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;
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#22 lore raw

PATCH 15/18 ARM: OMAP: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/plat-omap/counter_32k.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-omap/counter_32k.c +2 -2
index d9bc98e..384a776d 100644
@@ -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");
 
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#23 lore raw

PATCH 16/18 ARM: orion: Switch to sched_clock_register()

In reply to Stephen Boyd

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]>
---
 arch/arm/plat-orion/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-orion/time.c +2 -2
index 9d2b2ac..dade292 100644
@@ -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
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 16/18
#24 lore raw

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

Quoted 10 lines · Stephen Boyd

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]>
---
 arch/arm/plat-orion/time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

thx,

Jason.

#25 lore raw

PATCH 17/18 ARM: SAMSUNG: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/plat-samsung/samsung-time.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-samsung/samsung-time.c +2 -2
index 2957075..1e2119b 100644
@@ -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))
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Acked-by on v1 17/18
#26 lore raw

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

Quoted 6 lines · Stephen Boyd

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]>

Thanks,
Kukjin

Quoted 27 lines
---
  arch/arm/plat-samsung/samsung-time.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-samsung/samsung-time.c +2 -2
index 2957075..1e2119b 100644
@@ -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))
#27 lore raw

PATCH 18/18 ARM: versatile: Switch to sched_clock_register()

In reply to Stephen Boyd

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.

---
 arch/arm/plat-versatile/sched-clock.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/plat-versatile/sched-clock.c +2 -2
index 51b109e..c966ae9 100644
@@ -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);
 }
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
#28 lore raw
In reply to John Stultz
Quoted 34 lines · John Stultz

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

Quoted 6 lines
 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