* [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39
@ 2011-02-16 6:34 John Stultz
2011-02-16 6:34 ` [PATCH 1/6] x86: Convert untested clocksources to clocksource_register_hz/khz John Stultz
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML
Cc: John Stultz, Chris McDermott, David S. Miller, Dimitri Sivanich,
Glauber Costa, Ivan Kokshaysky, jacob.jun.pan,
Jeremy Fitzhardinge, Matt Turner, Mike Frysinger, Ralf Baechle,
Richard Henderson, Rusty Russell, Thomas Gleixner, Tony Luck
So I wanted to send out a small batch of clocksource_register_hz/khz
cleanups for possible inclusion in 2.6.39.
I've been unable to test these, but they should be pretty straight
forward.
It would be *wonderful* if arch maintainers would check these out and
add them into their queue. However, since I sent most of these out
for 2.6.37 and 2.6.38 with no takers, if they get ignored again, I
will try to push these through Thomas.
thanks
-john
CC: Chris McDermott <lcm@us.ibm.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: Dimitri Sivanich <sivanich@sgi.com>
CC: Glauber Costa <glommer@redhat.com>
CC: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
CC: jacob.jun.pan@intel.com
CC: Jeremy Fitzhardinge <jeremy@xensource.com>
CC: Matt Turner <mattst88@gmail.com>
CC: Mike Frysinger <vapier@gentoo.org>
CC: Ralf Baechle <ralf@linux-mips.org>
CC: Richard Henderson <rth@twiddle.net>
CC: Rusty Russell <rusty@rustcorp.com.au>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Tony Luck <tony.luck@intel.com>
John Stultz (6):
x86: Convert untested clocksources to clocksource_register_hz/khz
ia64: convert to clocksource_register_hz/khz
alpha: convert to clocksource_register_hz
sparc: convert to clocksource_register_hz/khz
mips: convert to clocksource_register_hz/khz
blackfin: convert to clocksource_register_hz
arch/alpha/kernel/time.c | 3 +-
arch/blackfin/kernel/time-ts.c | 35 +---------------------
arch/ia64/kernel/cyclone.c | 6 +---
arch/ia64/kernel/time.c | 9 +----
arch/ia64/sn/kernel/sn2/timer.c | 6 +---
arch/mips/alchemy/common/time.c | 3 +-
arch/mips/cavium-octeon/csrc-octeon.c | 3 +-
arch/mips/include/asm/time.h | 6 ----
arch/mips/jz4740/time.c | 3 +-
arch/mips/kernel/cevt-txx9.c | 3 +-
arch/mips/kernel/csrc-bcm1480.c | 3 +-
arch/mips/kernel/csrc-ioasic.c | 4 +--
arch/mips/kernel/csrc-powertv.c | 35 ++---------------------
arch/mips/kernel/csrc-r4k.c | 4 +--
arch/mips/kernel/csrc-sb1250.c | 3 +-
arch/mips/kernel/i8253.c | 5 +--
arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 5 +--
arch/mips/sgi-ip27/ip27-timer.c | 3 +-
arch/sparc/kernel/time_64.c | 4 +--
arch/x86/kernel/apb_timer.c | 10 +------
arch/x86/kernel/i8253.c | 6 +---
arch/x86/kernel/kvmclock.c | 6 +---
arch/x86/lguest/boot.c | 4 +--
arch/x86/platform/uv/uv_time.c | 6 +---
arch/x86/xen/time.c | 6 +---
drivers/char/hpet.c | 6 +---
drivers/clocksource/cyclone.c | 10 +-----
27 files changed, 31 insertions(+), 166 deletions(-)
--
1.7.3.2.146.gca209
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/6] x86: Convert untested clocksources to clocksource_register_hz/khz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
@ 2011-02-16 6:34 ` John Stultz
2011-02-16 6:34 ` [PATCH 2/6] ia64: convert " John Stultz
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML
Cc: John Stultz, jacob.jun.pan, Glauber Costa, Dimitri Sivanich,
Rusty Russell, Jeremy Fitzhardinge, Chris McDermott,
Thomas Gleixner
This converts the remaining x86 clocksources to use
clocksource_register_hz/khz. I was not able to test them, so
any extra assistance to make sure time functions properly with
the clocksources changeed here would be appreciated!
CC: jacob.jun.pan@intel.com
CC: Glauber Costa <glommer@redhat.com>
CC: Dimitri Sivanich <sivanich@sgi.com>
CC: Rusty Russell <rusty@rustcorp.com.au>
CC: Jeremy Fitzhardinge <jeremy@xensource.com>
CC: Chris McDermott <lcm@us.ibm.com>
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <johnstul@us.ibm.com>
---
arch/x86/kernel/apb_timer.c | 10 +---------
arch/x86/kernel/i8253.c | 6 +-----
arch/x86/kernel/kvmclock.c | 6 +-----
arch/x86/lguest/boot.c | 4 +---
arch/x86/platform/uv/uv_time.c | 6 +-----
arch/x86/xen/time.c | 6 +-----
drivers/clocksource/cyclone.c | 10 ++--------
7 files changed, 8 insertions(+), 40 deletions(-)
diff --git a/arch/x86/kernel/apb_timer.c b/arch/x86/kernel/apb_timer.c
index 51ef31a..29ebf5a 100644
--- a/arch/x86/kernel/apb_timer.c
+++ b/arch/x86/kernel/apb_timer.c
@@ -177,7 +177,6 @@ static struct clocksource clocksource_apbt = {
.rating = APBT_CLOCKSOURCE_RATING,
.read = apbt_read_clocksource,
.mask = APBT_MASK,
- .shift = APBT_SHIFT,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
.resume = apbt_restart_clocksource,
};
@@ -595,14 +594,7 @@ static int apbt_clocksource_register(void)
if (t1 == apbt_read_clocksource(&clocksource_apbt))
panic("APBT counter not counting. APBT disabled\n");
- /*
- * initialize and register APBT clocksource
- * convert that to ns/clock cycle
- * mult = (ns/c) * 2^APBT_SHIFT
- */
- clocksource_apbt.mult = div_sc(MSEC_PER_SEC,
- (unsigned long) apbt_freq, APBT_SHIFT);
- clocksource_register(&clocksource_apbt);
+ clocksource_register_khz(&clocksource_apbt, (u32)apbt_freq*1000);
return 0;
}
diff --git a/arch/x86/kernel/i8253.c b/arch/x86/kernel/i8253.c
index 2dfd315..212fe65 100644
--- a/arch/x86/kernel/i8253.c
+++ b/arch/x86/kernel/i8253.c
@@ -188,8 +188,6 @@ static struct clocksource pit_cs = {
.rating = 110,
.read = pit_read,
.mask = CLOCKSOURCE_MASK(32),
- .mult = 0,
- .shift = 20,
};
static int __init init_pit_clocksource(void)
@@ -205,9 +203,7 @@ static int __init init_pit_clocksource(void)
pit_ce.mode != CLOCK_EVT_MODE_PERIODIC)
return 0;
- pit_cs.mult = clocksource_hz2mult(CLOCK_TICK_RATE, pit_cs.shift);
-
- return clocksource_register(&pit_cs);
+ return clocksource_register_hz(&pit_cs, CLOCK_TICK_RATE);
}
arch_initcall(init_pit_clocksource);
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index f98d3ea..6389a6b 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -26,8 +26,6 @@
#include <asm/x86_init.h>
#include <asm/reboot.h>
-#define KVM_SCALE 22
-
static int kvmclock = 1;
static int msr_kvm_system_time = MSR_KVM_SYSTEM_TIME;
static int msr_kvm_wall_clock = MSR_KVM_WALL_CLOCK;
@@ -120,8 +118,6 @@ static struct clocksource kvm_clock = {
.read = kvm_clock_get_cycles,
.rating = 400,
.mask = CLOCKSOURCE_MASK(64),
- .mult = 1 << KVM_SCALE,
- .shift = KVM_SCALE,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -203,7 +199,7 @@ void __init kvmclock_init(void)
machine_ops.crash_shutdown = kvm_crash_shutdown;
#endif
kvm_get_preset_lpj();
- clocksource_register(&kvm_clock);
+ clocksource_register_hz(&kvm_clock, NSEC_PER_SEC);
pv_info.paravirt_enabled = 1;
pv_info.name = "KVM";
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index eba687f0..5b96fd9 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -913,8 +913,6 @@ static struct clocksource lguest_clock = {
.rating = 200,
.read = lguest_clock_read,
.mask = CLOCKSOURCE_MASK(64),
- .mult = 1 << 22,
- .shift = 22,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -997,7 +995,7 @@ static void lguest_time_init(void)
/* Set up the timer interrupt (0) to go to our simple timer routine */
set_irq_handler(0, lguest_time_irq);
- clocksource_register(&lguest_clock);
+ clocksource_register_hz(&lguest_clock, NSEC_PER_SEC);
/* We can't set cpumask in the initializer: damn C limitations! Set it
* here and register our timer device. */
diff --git a/arch/x86/platform/uv/uv_time.c b/arch/x86/platform/uv/uv_time.c
index 9daf5d1..0eb9018 100644
--- a/arch/x86/platform/uv/uv_time.c
+++ b/arch/x86/platform/uv/uv_time.c
@@ -40,7 +40,6 @@ static struct clocksource clocksource_uv = {
.rating = 400,
.read = uv_read_rtc,
.mask = (cycle_t)UVH_RTC_REAL_TIME_CLOCK_MASK,
- .shift = 10,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -372,14 +371,11 @@ static __init int uv_rtc_setup_clock(void)
if (!is_uv_system())
return -ENODEV;
- clocksource_uv.mult = clocksource_hz2mult(sn_rtc_cycles_per_second,
- clocksource_uv.shift);
-
/* If single blade, prefer tsc */
if (uv_num_possible_blades() == 1)
clocksource_uv.rating = 250;
- rc = clocksource_register(&clocksource_uv);
+ rc = clocksource_register_hz(&clocksource_uv, sn_rtc_cycles_per_second);
if (rc)
printk(KERN_INFO "UV RTC clocksource failed rc %d\n", rc);
else
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index 067759e..04e1159 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -26,8 +26,6 @@
#include "xen-ops.h"
-#define XEN_SHIFT 22
-
/* Xen may fire a timer up to this many ns early */
#define TIMER_SLOP 100000
#define NS_PER_TICK (1000000000LL / HZ)
@@ -211,8 +209,6 @@ static struct clocksource xen_clocksource __read_mostly = {
.rating = 400,
.read = xen_clocksource_get_cycles,
.mask = ~0,
- .mult = 1<<XEN_SHIFT, /* time directly in nanoseconds */
- .shift = XEN_SHIFT,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -446,7 +442,7 @@ static __init void xen_time_init(void)
int cpu = smp_processor_id();
struct timespec tp;
- clocksource_register(&xen_clocksource);
+ clocksource_register_hz(&xen_clocksource, NSEC_PER_SEC);
if (HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL) == 0) {
/* Successfully turned off 100Hz tick, so we have the
diff --git a/drivers/clocksource/cyclone.c b/drivers/clocksource/cyclone.c
index 64e528e..72f811f 100644
--- a/drivers/clocksource/cyclone.c
+++ b/drivers/clocksource/cyclone.c
@@ -29,8 +29,6 @@ static struct clocksource clocksource_cyclone = {
.rating = 250,
.read = read_cyclone,
.mask = CYCLONE_TIMER_MASK,
- .mult = 10,
- .shift = 0,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -108,12 +106,8 @@ static int __init init_cyclone_clocksource(void)
}
cyclone_ptr = cyclone_timer;
- /* sort out mult/shift values: */
- clocksource_cyclone.shift = 22;
- clocksource_cyclone.mult = clocksource_hz2mult(CYCLONE_TIMER_FREQ,
- clocksource_cyclone.shift);
-
- return clocksource_register(&clocksource_cyclone);
+ return clocksource_register_hz(&clocksource_cyclone,
+ CYCLONE_TIMER_FREQ);
}
arch_initcall(init_cyclone_clocksource);
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/6] ia64: convert to clocksource_register_hz/khz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
2011-02-16 6:34 ` [PATCH 1/6] x86: Convert untested clocksources to clocksource_register_hz/khz John Stultz
@ 2011-02-16 6:34 ` John Stultz
2011-02-16 17:52 ` Tony Luck
2011-02-16 6:34 ` [PATCH 3/6] alpha: convert to clocksource_register_hz John Stultz
` (3 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML; +Cc: John Stultz, Tony Luck, Thomas Gleixner
This converts the ia64 clocksources to use clocksource_register_hz/khz
This is untested, so any assistance in testing would be appreciated!
CC: Tony Luck <tony.luck@intel.com>
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <johnstul@us.ibm.com>
---
arch/ia64/kernel/cyclone.c | 6 +-----
arch/ia64/kernel/time.c | 9 ++-------
arch/ia64/sn/kernel/sn2/timer.c | 6 +-----
drivers/char/hpet.c | 6 +-----
4 files changed, 5 insertions(+), 22 deletions(-)
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c
index d52f1f7..f64097b 100644
--- a/arch/ia64/kernel/cyclone.c
+++ b/arch/ia64/kernel/cyclone.c
@@ -31,8 +31,6 @@ static struct clocksource clocksource_cyclone = {
.rating = 300,
.read = read_cyclone,
.mask = (1LL << 40) - 1,
- .mult = 0, /*to be caluclated*/
- .shift = 16,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -118,9 +116,7 @@ int __init init_cyclone_clock(void)
/* initialize last tick */
cyclone_mc = cyclone_timer;
clocksource_cyclone.fsys_mmio = cyclone_timer;
- clocksource_cyclone.mult = clocksource_hz2mult(CYCLONE_TIMER_FREQ,
- clocksource_cyclone.shift);
- clocksource_register(&clocksource_cyclone);
+ clocksource_register_hz(&clocksource_cyclone, CYCLONE_TIMER_FREQ);
return 0;
}
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 9702fa9..41c40f0 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -73,8 +73,6 @@ static struct clocksource clocksource_itc = {
.rating = 350,
.read = itc_get_cycles,
.mask = CLOCKSOURCE_MASK(64),
- .mult = 0, /*to be calculated*/
- .shift = 16,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
#ifdef CONFIG_PARAVIRT
.resume = paravirt_clocksource_resume,
@@ -374,11 +372,8 @@ ia64_init_itm (void)
ia64_cpu_local_tick();
if (!itc_clocksource) {
- /* Sort out mult/shift values: */
- clocksource_itc.mult =
- clocksource_hz2mult(local_cpu_data->itc_freq,
- clocksource_itc.shift);
- clocksource_register(&clocksource_itc);
+ clocksource_register_hz(&clocksource_itc,
+ local_cpu_data->itc_freq);
itc_clocksource = &clocksource_itc;
}
}
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c
index 21d6f09..c34efda 100644
--- a/arch/ia64/sn/kernel/sn2/timer.c
+++ b/arch/ia64/sn/kernel/sn2/timer.c
@@ -33,8 +33,6 @@ static struct clocksource clocksource_sn2 = {
.rating = 450,
.read = read_sn2,
.mask = (1LL << 55) - 1,
- .mult = 0,
- .shift = 10,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -57,9 +55,7 @@ ia64_sn_udelay (unsigned long usecs)
void __init sn_timer_init(void)
{
clocksource_sn2.fsys_mmio = RTC_COUNTER_ADDR;
- clocksource_sn2.mult = clocksource_hz2mult(sn_rtc_cycles_per_second,
- clocksource_sn2.shift);
- clocksource_register(&clocksource_sn2);
+ clocksource_register_hz(&clocksource_sn2, sn_rtc_cycles_per_second);
ia64_udelay = &ia64_sn_udelay;
}
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 7066e80..051474c 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -84,8 +84,6 @@ static struct clocksource clocksource_hpet = {
.rating = 250,
.read = read_hpet,
.mask = CLOCKSOURCE_MASK(64),
- .mult = 0, /* to be calculated */
- .shift = 10,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
static struct clocksource *hpet_clocksource;
@@ -934,9 +932,7 @@ int hpet_alloc(struct hpet_data *hdp)
if (!hpet_clocksource) {
hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
- clocksource_hpet.mult = clocksource_hz2mult(hpetp->hp_tick_freq,
- clocksource_hpet.shift);
- clocksource_register(&clocksource_hpet);
+ clocksource_register_hz(&clocksource_hpet, hpetp->hp_tick_freq);
hpetp->hp_clocksource = &clocksource_hpet;
hpet_clocksource = &clocksource_hpet;
}
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/6] alpha: convert to clocksource_register_hz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
2011-02-16 6:34 ` [PATCH 1/6] x86: Convert untested clocksources to clocksource_register_hz/khz John Stultz
2011-02-16 6:34 ` [PATCH 2/6] ia64: convert " John Stultz
@ 2011-02-16 6:34 ` John Stultz
2011-03-23 20:50 ` Matt Turner
2011-02-16 6:34 ` [PATCH 4/6] sparc: convert to clocksource_register_hz/khz John Stultz
` (2 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML
Cc: John Stultz, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner
Converts alpha to use clocksource_register_hz.
Patch is untested, so help from maintainers would be appreciated.
Signed-off-by: John Stultz <johnstul@us.ibm.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
CC: Matt Turner <mattst88@gmail.com>
CC: Thomas Gleixner <tglx@linutronix.de>
---
arch/alpha/kernel/time.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index c1f3e7c..33b8110 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -378,8 +378,7 @@ static struct clocksource clocksource_rpcc = {
static inline void register_rpcc_clocksource(long cycle_freq)
{
- clocksource_calc_mult_shift(&clocksource_rpcc, cycle_freq, 4);
- clocksource_register(&clocksource_rpcc);
+ clocksource_register_hz(&clocksource_rpcc, cycle_freq);
}
#else /* !CONFIG_SMP */
static inline void register_rpcc_clocksource(long cycle_freq)
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/6] sparc: convert to clocksource_register_hz/khz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
` (2 preceding siblings ...)
2011-02-16 6:34 ` [PATCH 3/6] alpha: convert to clocksource_register_hz John Stultz
@ 2011-02-16 6:34 ` John Stultz
2011-02-23 21:26 ` David Miller
2011-02-16 6:34 ` [PATCH 5/6] mips: " John Stultz
2011-02-16 6:34 ` [PATCH 6/6] blackfin: convert to clocksource_register_hz John Stultz
5 siblings, 1 reply; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML; +Cc: John Stultz, David S. Miller, Thomas Gleixner
This converts the sparc clocksources to use clocksource_register_hz/khz
This is untested, so any assistance in testing would be appreciated!
CC: "David S. Miller" <davem@davemloft.net>
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <johnstul@us.ibm.com>
---
arch/sparc/kernel/time_64.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index 3bc9c99..58aa27b 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -816,14 +816,12 @@ void __init time_init(void)
clocksource_hz2mult(freq, SPARC64_NSEC_PER_CYC_SHIFT);
clocksource_tick.name = tick_ops->name;
- clocksource_calc_mult_shift(&clocksource_tick, freq, 4);
clocksource_tick.read = clocksource_tick_read;
+ clocksource_register_hz(&clocksource_tick, freq);
printk("clocksource: mult[%x] shift[%d]\n",
clocksource_tick.mult, clocksource_tick.shift);
- clocksource_register(&clocksource_tick);
-
sparc64_clockevent.name = tick_ops->name;
clockevents_calc_mult_shift(&sparc64_clockevent, freq, 4);
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/6] mips: convert to clocksource_register_hz/khz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
` (3 preceding siblings ...)
2011-02-16 6:34 ` [PATCH 4/6] sparc: convert to clocksource_register_hz/khz John Stultz
@ 2011-02-16 6:34 ` John Stultz
2011-02-16 6:34 ` [PATCH 6/6] blackfin: convert to clocksource_register_hz John Stultz
5 siblings, 0 replies; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML; +Cc: John Stultz, Ralf Baechle, Thomas Gleixner
This converts the mips clocksources to use clocksource_register_hz/khz
This is untested, so any assistance in testing would be appreciated!
Signed-off-by: John Stultz <johnstul@us.ibm.com>
CC: Ralf Baechle <ralf@linux-mips.org>
CC: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/alchemy/common/time.c | 3 +-
arch/mips/cavium-octeon/csrc-octeon.c | 3 +-
arch/mips/include/asm/time.h | 6 ----
arch/mips/jz4740/time.c | 3 +-
arch/mips/kernel/cevt-txx9.c | 3 +-
arch/mips/kernel/csrc-bcm1480.c | 3 +-
arch/mips/kernel/csrc-ioasic.c | 4 +--
arch/mips/kernel/csrc-powertv.c | 35 ++---------------------
arch/mips/kernel/csrc-r4k.c | 4 +--
arch/mips/kernel/csrc-sb1250.c | 3 +-
arch/mips/kernel/i8253.c | 5 +--
arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 5 +--
arch/mips/sgi-ip27/ip27-timer.c | 3 +-
13 files changed, 14 insertions(+), 66 deletions(-)
diff --git a/arch/mips/alchemy/common/time.c b/arch/mips/alchemy/common/time.c
index 2aecb2f..d5da6ad 100644
--- a/arch/mips/alchemy/common/time.c
+++ b/arch/mips/alchemy/common/time.c
@@ -141,8 +141,7 @@ static int __init alchemy_time_init(unsigned int m2int)
goto cntr_err;
/* register counter1 clocksource and event device */
- clocksource_set_clock(&au1x_counter1_clocksource, 32768);
- clocksource_register(&au1x_counter1_clocksource);
+ clocksource_register_hz(&au1x_counter1_clocksource, 32768);
cd->shift = 32;
cd->mult = div_sc(32768, NSEC_PER_SEC, cd->shift);
diff --git a/arch/mips/cavium-octeon/csrc-octeon.c b/arch/mips/cavium-octeon/csrc-octeon.c
index 26bf711..29d56af 100644
--- a/arch/mips/cavium-octeon/csrc-octeon.c
+++ b/arch/mips/cavium-octeon/csrc-octeon.c
@@ -105,8 +105,7 @@ unsigned long long notrace sched_clock(void)
void __init plat_time_init(void)
{
clocksource_mips.rating = 300;
- clocksource_set_clock(&clocksource_mips, octeon_get_clock_rate());
- clocksource_register(&clocksource_mips);
+ clocksource_register_hz(&clocksource_mips, octeon_get_clock_rate());
}
static u64 octeon_udelay_factor;
diff --git a/arch/mips/include/asm/time.h b/arch/mips/include/asm/time.h
index c7f1bfe..bc14447 100644
--- a/arch/mips/include/asm/time.h
+++ b/arch/mips/include/asm/time.h
@@ -84,12 +84,6 @@ static inline int init_mips_clocksource(void)
#endif
}
-static inline void clocksource_set_clock(struct clocksource *cs,
- unsigned int clock)
-{
- clocksource_calc_mult_shift(cs, clock, 4);
-}
-
static inline void clockevent_set_clock(struct clock_event_device *cd,
unsigned int clock)
{
diff --git a/arch/mips/jz4740/time.c b/arch/mips/jz4740/time.c
index fe01678..03dfd4e 100644
--- a/arch/mips/jz4740/time.c
+++ b/arch/mips/jz4740/time.c
@@ -121,8 +121,7 @@ void __init plat_time_init(void)
clockevents_register_device(&jz4740_clockevent);
- clocksource_set_clock(&jz4740_clocksource, clk_rate);
- ret = clocksource_register(&jz4740_clocksource);
+ ret = clocksource_register_hz(&jz4740_clocksource, clk_rate);
if (ret)
printk(KERN_ERR "Failed to register clocksource: %d\n", ret);
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c
index 0b73773..f0ab92a 100644
--- a/arch/mips/kernel/cevt-txx9.c
+++ b/arch/mips/kernel/cevt-txx9.c
@@ -51,8 +51,7 @@ void __init txx9_clocksource_init(unsigned long baseaddr,
{
struct txx9_tmr_reg __iomem *tmrptr;
- clocksource_set_clock(&txx9_clocksource.cs, TIMER_CLK(imbusclk));
- clocksource_register(&txx9_clocksource.cs);
+ clocksource_register_hz(&txx9_clocksource.cs, TIMER_CLK(imbusclk));
tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg));
__raw_writel(TCR_BASE, &tmrptr->tcr);
diff --git a/arch/mips/kernel/csrc-bcm1480.c b/arch/mips/kernel/csrc-bcm1480.c
index 51489f8..f96f99c 100644
--- a/arch/mips/kernel/csrc-bcm1480.c
+++ b/arch/mips/kernel/csrc-bcm1480.c
@@ -49,6 +49,5 @@ void __init sb1480_clocksource_init(void)
plldiv = G_BCM1480_SYS_PLL_DIV(__raw_readq(IOADDR(A_SCD_SYSTEM_CFG)));
zbbus = ((plldiv >> 1) * 50000000) + ((plldiv & 1) * 25000000);
- clocksource_set_clock(cs, zbbus);
- clocksource_register(cs);
+ clocksource_register_hz(cs, zbbus);
}
diff --git a/arch/mips/kernel/csrc-ioasic.c b/arch/mips/kernel/csrc-ioasic.c
index 23da108..46bd7fa 100644
--- a/arch/mips/kernel/csrc-ioasic.c
+++ b/arch/mips/kernel/csrc-ioasic.c
@@ -59,7 +59,5 @@ void __init dec_ioasic_clocksource_init(void)
printk(KERN_INFO "I/O ASIC clock frequency %dHz\n", freq);
clocksource_dec.rating = 200 + freq / 10000000;
- clocksource_set_clock(&clocksource_dec, freq);
-
- clocksource_register(&clocksource_dec);
+ clocksource_register_hz(&clocksource_dec, freq);
}
diff --git a/arch/mips/kernel/csrc-powertv.c b/arch/mips/kernel/csrc-powertv.c
index a27c16c..2e7c523 100644
--- a/arch/mips/kernel/csrc-powertv.c
+++ b/arch/mips/kernel/csrc-powertv.c
@@ -78,9 +78,7 @@ static void __init powertv_c0_hpt_clocksource_init(void)
clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
- clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
-
- clocksource_register(&clocksource_mips);
+ clocksource_register_hz(&clocksource_mips, mips_hpt_frequency);
}
/**
@@ -130,43 +128,16 @@ static struct clocksource clocksource_tim_c = {
/**
* powertv_tim_c_clocksource_init - set up a clock source for the TIM_C clock
*
- * The hard part here is coming up with a constant k and shift s such that
- * the 48-bit TIM_C value multiplied by k doesn't overflow and that value,
- * when shifted right by s, yields the corresponding number of nanoseconds.
* We know that TIM_C counts at 27 MHz/8, so each cycle corresponds to
- * 1 / (27,000,000/8) seconds. Multiply that by a billion and you get the
- * number of nanoseconds. Since the TIM_C value has 48 bits and the math is
- * done in 64 bits, avoiding an overflow means that k must be less than
- * 64 - 48 = 16 bits.
+ * 1 / (27,000,000/8) seconds.
*/
static void __init powertv_tim_c_clocksource_init(void)
{
- int prescale;
- unsigned long dividend;
- unsigned long k;
- int s;
- const int max_k_bits = (64 - 48) - 1;
- const unsigned long billion = 1000000000;
const unsigned long counts_per_second = 27000000 / 8;
- prescale = BITS_PER_LONG - ilog2(billion) - 1;
- dividend = billion << prescale;
- k = dividend / counts_per_second;
- s = ilog2(k) - max_k_bits;
-
- if (s < 0)
- s = prescale;
-
- else {
- k >>= s;
- s += prescale;
- }
-
- clocksource_tim_c.mult = k;
- clocksource_tim_c.shift = s;
clocksource_tim_c.rating = 200;
- clocksource_register(&clocksource_tim_c);
+ clocksource_register_hz(&clocksource_tim_c, counts_per_second);
tim_c = (struct tim_c *) asic_reg_addr(tim_ch);
}
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c
index e95a3cd..decd1fa 100644
--- a/arch/mips/kernel/csrc-r4k.c
+++ b/arch/mips/kernel/csrc-r4k.c
@@ -30,9 +30,7 @@ int __init init_r4k_clocksource(void)
/* Calculate a somewhat reasonable rating value */
clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
- clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
-
- clocksource_register(&clocksource_mips);
+ clocksource_register_hz(&clocksource_mips, mips_hpt_frequency);
return 0;
}
diff --git a/arch/mips/kernel/csrc-sb1250.c b/arch/mips/kernel/csrc-sb1250.c
index d14d3d1..e9606d9 100644
--- a/arch/mips/kernel/csrc-sb1250.c
+++ b/arch/mips/kernel/csrc-sb1250.c
@@ -65,6 +65,5 @@ void __init sb1250_clocksource_init(void)
IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM,
R_SCD_TIMER_CFG)));
- clocksource_set_clock(cs, V_SCD_TIMER_FREQ);
- clocksource_register(cs);
+ clocksource_register_hz(cs, V_SCD_TIMER_FREQ);
}
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c
index 2392a7a2..9fadd17 100644
--- a/arch/mips/kernel/i8253.c
+++ b/arch/mips/kernel/i8253.c
@@ -196,8 +196,6 @@ static struct clocksource clocksource_pit = {
.rating = 110,
.read = pit_read,
.mask = CLOCKSOURCE_MASK(32),
- .mult = 0,
- .shift = 20,
};
static int __init init_pit_clocksource(void)
@@ -205,7 +203,6 @@ static int __init init_pit_clocksource(void)
if (num_possible_cpus() > 1) /* PIT does not scale! */
return 0;
- clocksource_pit.mult = clocksource_hz2mult(CLOCK_TICK_RATE, 20);
- return clocksource_register(&clocksource_pit);
+ return clocksource_register_hz(&clocksource_pit, CLOCK_TICK_RATE);
}
arch_initcall(init_pit_clocksource);
diff --git a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
index 8c807c9..0cb1b97 100644
--- a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
+++ b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
@@ -201,8 +201,6 @@ static struct clocksource clocksource_mfgpt = {
.rating = 120, /* Functional for real use, but not desired */
.read = mfgpt_read,
.mask = CLOCKSOURCE_MASK(32),
- .mult = 0,
- .shift = 22,
};
int __init init_mfgpt_clocksource(void)
@@ -210,8 +208,7 @@ int __init init_mfgpt_clocksource(void)
if (num_possible_cpus() > 1) /* MFGPT does not scale! */
return 0;
- clocksource_mfgpt.mult = clocksource_hz2mult(MFGPT_TICK_RATE, 22);
- return clocksource_register(&clocksource_mfgpt);
+ return clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE);
}
arch_initcall(init_mfgpt_clocksource);
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index d6802d6..3cac883 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -177,8 +177,7 @@ static void __init hub_rt_clocksource_init(void)
{
struct clocksource *cs = &hub_rt_clocksource;
- clocksource_set_clock(cs, CYCLES_PER_SEC);
- clocksource_register(cs);
+ clocksource_register_hz(cs, CYCLES_PER_SEC);
}
void __init plat_time_init(void)
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/6] blackfin: convert to clocksource_register_hz
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
` (4 preceding siblings ...)
2011-02-16 6:34 ` [PATCH 5/6] mips: " John Stultz
@ 2011-02-16 6:34 ` John Stultz
5 siblings, 0 replies; 11+ messages in thread
From: John Stultz @ 2011-02-16 6:34 UTC (permalink / raw)
To: LKML; +Cc: John Stultz, Mike Frysinger, Thomas Gleixner
This converts the blackfin clocksource to use clocksource_register_hz.
This is untested, so any assistance in testing would be appreciated!
CC: Mike Frysinger <vapier@gentoo.org>
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <johnstul@us.ibm.com>
---
arch/blackfin/kernel/time-ts.c | 35 ++---------------------------------
1 files changed, 2 insertions(+), 33 deletions(-)
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index 8c9a43d..4a01371 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -23,29 +23,6 @@
#include <asm/gptimers.h>
#include <asm/nmi.h>
-/* Accelerators for sched_clock()
- * convert from cycles(64bits) => nanoseconds (64bits)
- * basic equation:
- * ns = cycles / (freq / ns_per_sec)
- * ns = cycles * (ns_per_sec / freq)
- * ns = cycles * (10^9 / (cpu_khz * 10^3))
- * ns = cycles * (10^6 / cpu_khz)
- *
- * Then we use scaling math (suggested by george@mvista.com) to get:
- * ns = cycles * (10^6 * SC / cpu_khz) / SC
- * ns = cycles * cyc2ns_scale / SC
- *
- * And since SC is a constant power of two, we can convert the div
- * into a shift.
- *
- * We can use khz divisor instead of mhz to keep a better precision, since
- * cyc2ns_scale is limited to 10^6 * 2^10, which fits in 32 bits.
- * (mathieu.desnoyers@polymtl.ca)
- *
- * -johnstul@us.ibm.com "math is hard, lets go shopping!"
- */
-
-#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
#if defined(CONFIG_CYCLES_CLOCKSOURCE)
@@ -63,7 +40,6 @@ static struct clocksource bfin_cs_cycles = {
.rating = 400,
.read = bfin_read_cycles,
.mask = CLOCKSOURCE_MASK(64),
- .shift = CYC2NS_SCALE_FACTOR,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -75,10 +51,7 @@ static inline unsigned long long bfin_cs_cycles_sched_clock(void)
static int __init bfin_cs_cycles_init(void)
{
- bfin_cs_cycles.mult = \
- clocksource_hz2mult(get_cclk(), bfin_cs_cycles.shift);
-
- if (clocksource_register(&bfin_cs_cycles))
+ if (clocksource_register_hz(&bfin_cs_cycles, get_cclk()))
panic("failed to register clocksource");
return 0;
@@ -111,7 +84,6 @@ static struct clocksource bfin_cs_gptimer0 = {
.rating = 350,
.read = bfin_read_gptimer0,
.mask = CLOCKSOURCE_MASK(32),
- .shift = CYC2NS_SCALE_FACTOR,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -125,10 +97,7 @@ static int __init bfin_cs_gptimer0_init(void)
{
setup_gptimer0();
- bfin_cs_gptimer0.mult = \
- clocksource_hz2mult(get_sclk(), bfin_cs_gptimer0.shift);
-
- if (clocksource_register(&bfin_cs_gptimer0))
+ if (clocksource_register_hz(&bfin_cs_gptimer0, get_sclk()))
panic("failed to register clocksource");
return 0;
--
1.7.3.2.146.gca209
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/6] ia64: convert to clocksource_register_hz/khz
2011-02-16 6:34 ` [PATCH 2/6] ia64: convert " John Stultz
@ 2011-02-16 17:52 ` Tony Luck
0 siblings, 0 replies; 11+ messages in thread
From: Tony Luck @ 2011-02-16 17:52 UTC (permalink / raw)
To: John Stultz; +Cc: LKML, Thomas Gleixner
On Tue, Feb 15, 2011 at 10:34 PM, John Stultz <johnstul@us.ibm.com> wrote:
> This converts the ia64 clocksources to use clocksource_register_hz/khz
>
> This is untested, so any assistance in testing would be appreciated!
Works OK on my system (using itc clock source). I don't have cyclone,
sn2 or hpet systems to check the other three parts of this change.
Tested-by: Tony Luck <tony.luck@intel.com> [clocksource_itc path]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/6] sparc: convert to clocksource_register_hz/khz
2011-02-16 6:34 ` [PATCH 4/6] sparc: convert to clocksource_register_hz/khz John Stultz
@ 2011-02-23 21:26 ` David Miller
2011-02-23 22:17 ` john stultz
0 siblings, 1 reply; 11+ messages in thread
From: David Miller @ 2011-02-23 21:26 UTC (permalink / raw)
To: johnstul; +Cc: linux-kernel, tglx
From: John Stultz <johnstul@us.ibm.com>
Date: Tue, 15 Feb 2011 22:34:50 -0800
> This converts the sparc clocksources to use clocksource_register_hz/khz
>
> This is untested, so any assistance in testing would be appreciated!
>
> CC: "David S. Miller" <davem@davemloft.net>
> CC: Thomas Gleixner <tglx@linutronix.de>
> Signed-off-by: John Stultz <johnstul@us.ibm.com>
Applied, but please CC: sparclinux@vger.kernel.org for sparc patches.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/6] sparc: convert to clocksource_register_hz/khz
2011-02-23 21:26 ` David Miller
@ 2011-02-23 22:17 ` john stultz
0 siblings, 0 replies; 11+ messages in thread
From: john stultz @ 2011-02-23 22:17 UTC (permalink / raw)
To: David Miller; +Cc: linux-kernel, tglx
On Wed, 2011-02-23 at 13:26 -0800, David Miller wrote:
> From: John Stultz <johnstul@us.ibm.com>
> Date: Tue, 15 Feb 2011 22:34:50 -0800
>
> > This converts the sparc clocksources to use clocksource_register_hz/khz
> >
> > This is untested, so any assistance in testing would be appreciated!
> >
> > CC: "David S. Miller" <davem@davemloft.net>
> > CC: Thomas Gleixner <tglx@linutronix.de>
> > Signed-off-by: John Stultz <johnstul@us.ibm.com>
>
> Applied, but please CC: sparclinux@vger.kernel.org for sparc patches.
Thanks! I'll do that in the future!
-john
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/6] alpha: convert to clocksource_register_hz
2011-02-16 6:34 ` [PATCH 3/6] alpha: convert to clocksource_register_hz John Stultz
@ 2011-03-23 20:50 ` Matt Turner
0 siblings, 0 replies; 11+ messages in thread
From: Matt Turner @ 2011-03-23 20:50 UTC (permalink / raw)
To: John Stultz; +Cc: LKML, Richard Henderson, Ivan Kokshaysky, Thomas Gleixner
On Wed, Feb 16, 2011 at 6:34 AM, John Stultz <johnstul@us.ibm.com> wrote:
> Converts alpha to use clocksource_register_hz.
>
> Patch is untested, so help from maintainers would be appreciated.
>
> Signed-off-by: John Stultz <johnstul@us.ibm.com>
> CC: Richard Henderson <rth@twiddle.net>
> CC: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
> CC: Matt Turner <mattst88@gmail.com>
> CC: Thomas Gleixner <tglx@linutronix.de>
> ---
> arch/alpha/kernel/time.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
> index c1f3e7c..33b8110 100644
> --- a/arch/alpha/kernel/time.c
> +++ b/arch/alpha/kernel/time.c
> @@ -378,8 +378,7 @@ static struct clocksource clocksource_rpcc = {
>
> static inline void register_rpcc_clocksource(long cycle_freq)
> {
> - clocksource_calc_mult_shift(&clocksource_rpcc, cycle_freq, 4);
> - clocksource_register(&clocksource_rpcc);
> + clocksource_register_hz(&clocksource_rpcc, cycle_freq);
> }
> #else /* !CONFIG_SMP */
> static inline void register_rpcc_clocksource(long cycle_freq)
> --
> 1.7.3.2.146.gca209
Thanks, I'll apply this. Please CC: linux-alpha@vger.kernel.org for
alpha patches.
Matt
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-03-23 20:51 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-16 6:34 [PATCH 0/6] clocksource_register_hz/khz cleanups for 2.6.39 John Stultz
2011-02-16 6:34 ` [PATCH 1/6] x86: Convert untested clocksources to clocksource_register_hz/khz John Stultz
2011-02-16 6:34 ` [PATCH 2/6] ia64: convert " John Stultz
2011-02-16 17:52 ` Tony Luck
2011-02-16 6:34 ` [PATCH 3/6] alpha: convert to clocksource_register_hz John Stultz
2011-03-23 20:50 ` Matt Turner
2011-02-16 6:34 ` [PATCH 4/6] sparc: convert to clocksource_register_hz/khz John Stultz
2011-02-23 21:26 ` David Miller
2011-02-23 22:17 ` john stultz
2011-02-16 6:34 ` [PATCH 5/6] mips: " John Stultz
2011-02-16 6:34 ` [PATCH 6/6] blackfin: convert to clocksource_register_hz John Stultz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox