* [PATCH 2/2] clocksource: Make clocksource register functions void
@ 2014-01-23 7:12 Yijing Wang
2014-01-23 7:40 ` Hans-Christian Egtvedt
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Yijing Wang @ 2014-01-23 7:12 UTC (permalink / raw)
To: linux-arm-kernel
Currently, clocksource_register() and __clocksource_register_scale()
functions always return 0, it's pointless, make functions void.
And remove the dead code that check the clocksource_register_hz()
return value.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
arch/arm/mach-davinci/time.c | 5 ++---
arch/arm/mach-msm/timer.c | 4 +---
arch/arm/mach-omap2/timer.c | 8 +++-----
arch/avr32/kernel/time.c | 4 +---
arch/blackfin/kernel/time-ts.c | 6 ++----
arch/microblaze/kernel/timer.c | 3 +--
arch/mips/jz4740/time.c | 6 +-----
arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 3 ++-
arch/openrisc/kernel/time.c | 3 +--
arch/powerpc/kernel/time.c | 6 +-----
arch/um/kernel/time.c | 6 +-----
arch/x86/platform/uv/uv_time.c | 14 ++++++--------
drivers/clocksource/acpi_pm.c | 3 ++-
drivers/clocksource/cadence_ttc_timer.c | 6 +-----
drivers/clocksource/exynos_mct.c | 4 +---
drivers/clocksource/i8253.c | 3 ++-
drivers/clocksource/mmio.c | 3 ++-
drivers/clocksource/samsung_pwm_timer.c | 5 +----
drivers/clocksource/scx200_hrt.c | 3 ++-
drivers/clocksource/tcb_clksrc.c | 8 +-------
drivers/clocksource/timer-marco.c | 2 +-
drivers/clocksource/timer-prima2.c | 2 +-
drivers/clocksource/vt8500_timer.c | 4 +---
include/linux/clocksource.h | 8 ++++----
kernel/time/clocksource.c | 6 ++----
kernel/time/jiffies.c | 3 ++-
26 files changed, 45 insertions(+), 83 deletions(-)
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 56c6eb5..9536f85 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -387,9 +387,8 @@ void __init davinci_timer_init(void)
/* setup clocksource */
clocksource_davinci.name = id_to_name[clocksource_id];
- if (clocksource_register_hz(&clocksource_davinci,
- davinci_clock_tick_rate))
- printk(err, clocksource_davinci.name);
+ clocksource_register_hz(&clocksource_davinci,
+ davinci_clock_tick_rate);
setup_sched_clock(davinci_read_sched_clock, 32,
davinci_clock_tick_rate);
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index 1e9c338..c96e034 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -226,9 +226,7 @@ static void __init msm_timer_init(u32 dgt_hz, int sched_bits, int irq,
err:
writel_relaxed(TIMER_ENABLE_EN, source_base + TIMER_ENABLE);
- res = clocksource_register_hz(cs, dgt_hz);
- if (res)
- pr_err("clocksource_register failed\n");
+ clocksource_register_hz(cs, dgt_hz);
setup_sched_clock(msm_sched_clock_read, sched_bits, dgt_hz);
}
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 3ca81e0..beaf7c7 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -473,11 +473,9 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id,
OMAP_TIMER_NONPOSTED);
setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate);
- if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
- pr_err("Could not register clocksource %s\n",
- clocksource_gpt.name);
- else
- pr_info("OMAP clocksource: %s at %lu Hz\n",
+ clocksource_register_hz(&clocksource_gpt, clksrc.rate);
+
+ pr_info("OMAP clocksource: %s at %lu Hz\n",
clocksource_gpt.name, clksrc.rate);
}
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c
index d0f771b..51b4a66 100644
--- a/arch/avr32/kernel/time.c
+++ b/arch/avr32/kernel/time.c
@@ -134,9 +134,7 @@ void __init time_init(void)
/* figure rate for counter */
counter_hz = clk_get_rate(boot_cpu_data.clk);
- ret = clocksource_register_hz(&counter, counter_hz);
- if (ret)
- pr_debug("timer: could not register clocksource: %d\n", ret);
+ clocksource_register_hz(&counter, counter_hz);
/* setup COMPARE clockevent */
comparator.mult = div_sc(counter_hz, NSEC_PER_SEC, comparator.shift);
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index cb0a484..df3bb08 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -51,8 +51,7 @@ static inline unsigned long long bfin_cs_cycles_sched_clock(void)
static int __init bfin_cs_cycles_init(void)
{
- if (clocksource_register_hz(&bfin_cs_cycles, get_cclk()))
- panic("failed to register clocksource");
+ clocksource_register_hz(&bfin_cs_cycles, get_cclk());
return 0;
}
@@ -103,8 +102,7 @@ static int __init bfin_cs_gptimer0_init(void)
{
setup_gptimer0();
- if (clocksource_register_hz(&bfin_cs_gptimer0, get_sclk()))
- panic("failed to register clocksource");
+ clocksource_register_hz(&bfin_cs_gptimer0, get_sclk());
return 0;
}
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
index 3e39b10..6a2417e 100644
--- a/arch/microblaze/kernel/timer.c
+++ b/arch/microblaze/kernel/timer.c
@@ -208,8 +208,7 @@ static struct clocksource clocksource_microblaze = {
static int __init xilinx_clocksource_init(void)
{
- if (clocksource_register_hz(&clocksource_microblaze, timer_clock_freq))
- panic("failed to register clocksource");
+ clocksource_register_hz(&clocksource_microblaze, timer_clock_freq);
/* stop timer1 */
out_be32(timer_baseaddr + TCSR1,
diff --git a/arch/mips/jz4740/time.c b/arch/mips/jz4740/time.c
index 5e430ce..041cdff 100644
--- a/arch/mips/jz4740/time.c
+++ b/arch/mips/jz4740/time.c
@@ -105,7 +105,6 @@ static struct irqaction timer_irqaction = {
void __init plat_time_init(void)
{
- int ret;
uint32_t clk_rate;
uint16_t ctrl;
@@ -121,10 +120,7 @@ void __init plat_time_init(void)
clockevents_register_device(&jz4740_clockevent);
- ret = clocksource_register_hz(&jz4740_clocksource, clk_rate);
-
- if (ret)
- printk(KERN_ERR "Failed to register clocksource: %d\n", ret);
+ clocksource_register_hz(&jz4740_clocksource, clk_rate);
setup_irq(JZ4740_IRQ_TCU0, &timer_irqaction);
diff --git a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
index c639b9d..9fa6d99 100644
--- a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
+++ b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
@@ -208,7 +208,8 @@ int __init init_mfgpt_clocksource(void)
if (num_possible_cpus() > 1) /* MFGPT does not scale! */
return 0;
- return clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE);
+ clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE);
+ return 0;
}
arch_initcall(init_mfgpt_clocksource);
diff --git a/arch/openrisc/kernel/time.c b/arch/openrisc/kernel/time.c
index 7c52e94..3f789aa 100644
--- a/arch/openrisc/kernel/time.c
+++ b/arch/openrisc/kernel/time.c
@@ -156,8 +156,7 @@ static struct clocksource openrisc_timer = {
static int __init openrisc_timer_init(void)
{
- if (clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency))
- panic("failed to register clocksource");
+ clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency);
/* Enable the incrementer: 'continuous' mode with interrupt disabled */
mtspr(SPR_TTMR, SPR_TTMR_CR);
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index b3b1441..27c0627 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -788,11 +788,7 @@ static void __init clocksource_init(void)
else
clock = &clocksource_timebase;
- if (clocksource_register_hz(clock, tb_ticks_per_sec)) {
- printk(KERN_ERR "clocksource: %s is already registered\n",
- clock->name);
- return;
- }
+ clocksource_register_hz(clock, tb_ticks_per_sec);
printk(KERN_INFO "clocksource: %s mult[%x] shift[%d] registered\n",
clock->name, clock->mult, clock->shift);
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 117568d..2034b58 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -92,11 +92,7 @@ static void __init setup_itimer(void)
clockevent_delta2ns(60 * HZ, &itimer_clockevent);
itimer_clockevent.min_delta_ns =
clockevent_delta2ns(1, &itimer_clockevent);
- err = clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC);
- if (err) {
- printk(KERN_ERR "clocksource_register_hz returned %d\n", err);
- return;
- }
+ clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC);
clockevents_register_device(&itimer_clockevent);
}
diff --git a/arch/x86/platform/uv/uv_time.c b/arch/x86/platform/uv/uv_time.c
index 5c86786..b963774 100644
--- a/arch/x86/platform/uv/uv_time.c
+++ b/arch/x86/platform/uv/uv_time.c
@@ -379,15 +379,13 @@ static __init int uv_rtc_setup_clock(void)
if (!is_uv_system())
return -ENODEV;
- 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
- printk(KERN_INFO "UV RTC clocksource registered freq %lu MHz\n",
- sn_rtc_cycles_per_second/(unsigned long)1E6);
+ clocksource_register_hz(&clocksource_uv, sn_rtc_cycles_per_second);
+
+ pr_info("UV RTC clocksource registered freq %lu MHz\n",
+ sn_rtc_cycles_per_second/(unsigned long)1E6);
- if (rc || !uv_rtc_evt_enable || x86_platform_ipi_callback)
- return rc;
+ if (!uv_rtc_evt_enable || x86_platform_ipi_callback)
+ return 0;
/* Setup and register clockevents */
rc = uv_rtc_allocate_timers();
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index 6eab889..ab1dc63 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -218,8 +218,9 @@ static int __init init_acpi_pm_clocksource(void)
return -ENODEV;
}
- return clocksource_register_hz(&clocksource_acpi_pm,
+ clocksource_register_hz(&clocksource_acpi_pm,
PMTMR_TICKS_PER_SEC);
+ return 0;
}
/* We use fs_initcall because we want the PCI fixups to have run
diff --git a/drivers/clocksource/cadence_ttc_timer.c b/drivers/clocksource/cadence_ttc_timer.c
index 63f176d..b9b56ed 100644
--- a/drivers/clocksource/cadence_ttc_timer.c
+++ b/drivers/clocksource/cadence_ttc_timer.c
@@ -301,11 +301,7 @@ static void __init ttc_setup_clocksource(struct clk *clk, void __iomem *base)
__raw_writel(CNT_CNTRL_RESET,
ttccs->ttc.base_addr + TTC_CNT_CNTRL_OFFSET);
- err = clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE);
- if (WARN_ON(err)) {
- kfree(ttccs);
- return;
- }
+ clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE);
ttc_sched_clock_val_reg = base + TTC_COUNT_VAL_OFFSET;
sched_clock_register(ttc_sched_clock_read, 16, ttccs->ttc.freq / PRESCALE);
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index 62b0de6..98649c7 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -193,9 +193,7 @@ struct clocksource mct_frc = {
static void __init exynos4_clocksource_init(void)
{
exynos4_mct_frc_start(0, 0);
-
- if (clocksource_register_hz(&mct_frc, clk_rate))
- panic("%s: can't register clocksource\n", mct_frc.name);
+ clocksource_register_hz(&mct_frc, clk_rate);
}
static void exynos4_mct_comp0_stop(void)
diff --git a/drivers/clocksource/i8253.c b/drivers/clocksource/i8253.c
index 14ee3ef..9c45f0a 100644
--- a/drivers/clocksource/i8253.c
+++ b/drivers/clocksource/i8253.c
@@ -95,7 +95,8 @@ static struct clocksource i8253_cs = {
int __init clocksource_i8253_init(void)
{
- return clocksource_register_hz(&i8253_cs, PIT_TICK_RATE);
+ clocksource_register_hz(&i8253_cs, PIT_TICK_RATE);
+ return 0;
}
#endif
diff --git a/drivers/clocksource/mmio.c b/drivers/clocksource/mmio.c
index c0e2512..6e0b530 100644
--- a/drivers/clocksource/mmio.c
+++ b/drivers/clocksource/mmio.c
@@ -69,5 +69,6 @@ int __init clocksource_mmio_init(void __iomem *base, const char *name,
cs->clksrc.mask = CLOCKSOURCE_MASK(bits);
cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS;
- return clocksource_register_hz(&cs->clksrc, hz);
+ clocksource_register_hz(&cs->clksrc, hz);
+ return 0;
}
diff --git a/drivers/clocksource/samsung_pwm_timer.c b/drivers/clocksource/samsung_pwm_timer.c
index 5645cfc..c59292f 100644
--- a/drivers/clocksource/samsung_pwm_timer.c
+++ b/drivers/clocksource/samsung_pwm_timer.c
@@ -340,7 +340,6 @@ static void __init samsung_clocksource_init(void)
{
unsigned long pclk;
unsigned long clock_rate;
- int ret;
pclk = clk_get_rate(pwm.timerclk);
@@ -361,9 +360,7 @@ static void __init samsung_clocksource_init(void)
pwm.variant.bits, clock_rate);
samsung_clocksource.mask = CLOCKSOURCE_MASK(pwm.variant.bits);
- ret = clocksource_register_hz(&samsung_clocksource, clock_rate);
- if (ret)
- panic("samsung_clocksource_timer: can't register clocksource\n");
+ clocksource_register_hz(&samsung_clocksource, clock_rate);
}
static void __init samsung_timer_resources(void)
diff --git a/drivers/clocksource/scx200_hrt.c b/drivers/clocksource/scx200_hrt.c
index 64f9e82..57bdc04 100644
--- a/drivers/clocksource/scx200_hrt.c
+++ b/drivers/clocksource/scx200_hrt.c
@@ -83,7 +83,8 @@ static int __init init_hrt_clocksource(void)
pr_info("enabling scx200 high-res timer (%s MHz +%d ppm)\n", mhz27 ? "27":"1", ppm);
- return clocksource_register_hz(&cs_hrt, freq);
+ clocksource_register_hz(&cs_hrt, freq);
+ return 0;
}
module_init(init_hrt_clocksource);
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 00fdd11..805245d 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -340,9 +340,7 @@ static int __init tcb_clksrc_init(void)
}
/* and away we go! */
- ret = clocksource_register_hz(&clksrc, divided_rate);
- if (ret)
- goto err_disable_t1;
+ clocksource_register_hz(&clksrc, divided_rate);
/* channel 2: periodic and oneshot timer support */
ret = setup_clkevents(tc, clk32k_divisor_idx);
@@ -354,10 +352,6 @@ static int __init tcb_clksrc_init(void)
err_unregister_clksrc:
clocksource_unregister(&clksrc);
-err_disable_t1:
- if (!tc->tcb_config || tc->tcb_config->counter_width != 32)
- clk_disable_unprepare(tc->clk[1]);
-
err_disable_t0:
clk_disable_unprepare(t0_clk);
diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c
index 09a17d9..ae78ce0 100644
--- a/drivers/clocksource/timer-marco.c
+++ b/drivers/clocksource/timer-marco.c
@@ -283,7 +283,7 @@ static void __init sirfsoc_marco_timer_init(void)
/* Clear all interrupts */
writel_relaxed(0xFFFF, sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS);
- BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE));
+ clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE);
sirfsoc_clockevent_init();
}
diff --git a/drivers/clocksource/timer-prima2.c b/drivers/clocksource/timer-prima2.c
index 8a492d3..c9cc307 100644
--- a/drivers/clocksource/timer-prima2.c
+++ b/drivers/clocksource/timer-prima2.c
@@ -204,7 +204,7 @@ static void __init sirfsoc_prima2_timer_init(struct device_node *np)
writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI);
writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS);
- BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE));
+ clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE);
sched_clock_register(sirfsoc_read_sched_clock, 64, CLOCK_TICK_RATE);
diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c
index 1098ed3..13f5fa4 100644
--- a/drivers/clocksource/vt8500_timer.c
+++ b/drivers/clocksource/vt8500_timer.c
@@ -150,9 +150,7 @@ static void __init vt8500_timer_init(struct device_node *np)
writel(0xf, regbase + TIMER_STATUS_VAL);
writel(~0, regbase + TIMER_MATCH_VAL);
- if (clocksource_register_hz(&clocksource, VT8500_TIMER_HZ))
- pr_err("%s: vt8500_timer_init: clocksource_register failed for %s\n",
- __func__, clocksource.name);
+ clocksource_register_hz(&clocksource, VT8500_TIMER_HZ);
clockevent.cpumask = cpumask_of(0);
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 67301a4..5a17c5e 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -282,7 +282,7 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift)
}
-extern int clocksource_register(struct clocksource*);
+extern void clocksource_register(struct clocksource *);
extern int clocksource_unregister(struct clocksource*);
extern void clocksource_touch_watchdog(void);
extern struct clocksource* clocksource_get_next(void);
@@ -301,17 +301,17 @@ clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec);
* Don't call __clocksource_register_scale directly, use
* clocksource_register_hz/khz
*/
-extern int
+extern void
__clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq);
extern void
__clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq);
-static inline int clocksource_register_hz(struct clocksource *cs, u32 hz)
+static inline void clocksource_register_hz(struct clocksource *cs, u32 hz)
{
return __clocksource_register_scale(cs, 1, hz);
}
-static inline int clocksource_register_khz(struct clocksource *cs, u32 khz)
+static inline void clocksource_register_khz(struct clocksource *cs, u32 khz)
{
return __clocksource_register_scale(cs, 1000, khz);
}
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index 9951575..686ff72 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -782,7 +782,7 @@ EXPORT_SYMBOL_GPL(__clocksource_updatefreq_scale);
* This *SHOULD NOT* be called directly! Please use the
* clocksource_register_hz() or clocksource_register_khz helper functions.
*/
-int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq)
+void __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq)
{
/* Initialize mult/shift and max_idle_ns */
@@ -794,7 +794,6 @@ int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq)
clocksource_enqueue_watchdog(cs);
clocksource_select();
mutex_unlock(&clocksource_mutex);
- return 0;
}
EXPORT_SYMBOL_GPL(__clocksource_register_scale);
@@ -804,7 +803,7 @@ EXPORT_SYMBOL_GPL(__clocksource_register_scale);
* @cs: clocksource to be registered
*
*/
-int clocksource_register(struct clocksource *cs)
+void clocksource_register(struct clocksource *cs)
{
/* calculate max adjustment for given mult/shift */
cs->maxadj = clocksource_max_adjustment(cs);
@@ -820,7 +819,6 @@ int clocksource_register(struct clocksource *cs)
clocksource_enqueue_watchdog(cs);
clocksource_select();
mutex_unlock(&clocksource_mutex);
- return 0;
}
EXPORT_SYMBOL(clocksource_register);
diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
index 7a925ba..ae4c534 100644
--- a/kernel/time/jiffies.c
+++ b/kernel/time/jiffies.c
@@ -88,7 +88,8 @@ EXPORT_SYMBOL(jiffies);
static int __init init_jiffies_clocksource(void)
{
- return clocksource_register(&clocksource_jiffies);
+ clocksource_register(&clocksource_jiffies);
+ return 0;
}
core_initcall(init_jiffies_clocksource);
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:12 [PATCH 2/2] clocksource: Make clocksource register functions void Yijing Wang @ 2014-01-23 7:40 ` Hans-Christian Egtvedt 2014-01-23 7:45 ` Tony Prisk 2014-01-23 8:40 ` Daniel Lezcano 2 siblings, 0 replies; 12+ messages in thread From: Hans-Christian Egtvedt @ 2014-01-23 7:40 UTC (permalink / raw) To: linux-arm-kernel Around Thu 23 Jan 2014 15:12:46 +0800 or thereabout, Yijing Wang wrote: > Currently, clocksource_register() and __clocksource_register_scale() > functions always return 0, it's pointless, make functions void. > And remove the dead code that check the clocksource_register_hz() > return value. > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> For the avr32 related change Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no> > --- > arch/arm/mach-davinci/time.c | 5 ++--- > arch/arm/mach-msm/timer.c | 4 +--- > arch/arm/mach-omap2/timer.c | 8 +++----- > arch/avr32/kernel/time.c | 4 +--- > arch/blackfin/kernel/time-ts.c | 6 ++---- > arch/microblaze/kernel/timer.c | 3 +-- > arch/mips/jz4740/time.c | 6 +----- > arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 3 ++- > arch/openrisc/kernel/time.c | 3 +-- > arch/powerpc/kernel/time.c | 6 +----- > arch/um/kernel/time.c | 6 +----- > arch/x86/platform/uv/uv_time.c | 14 ++++++-------- > drivers/clocksource/acpi_pm.c | 3 ++- > drivers/clocksource/cadence_ttc_timer.c | 6 +----- > drivers/clocksource/exynos_mct.c | 4 +--- > drivers/clocksource/i8253.c | 3 ++- > drivers/clocksource/mmio.c | 3 ++- > drivers/clocksource/samsung_pwm_timer.c | 5 +---- > drivers/clocksource/scx200_hrt.c | 3 ++- > drivers/clocksource/tcb_clksrc.c | 8 +------- > drivers/clocksource/timer-marco.c | 2 +- > drivers/clocksource/timer-prima2.c | 2 +- > drivers/clocksource/vt8500_timer.c | 4 +--- > include/linux/clocksource.h | 8 ++++---- > kernel/time/clocksource.c | 6 ++---- > kernel/time/jiffies.c | 3 ++- > 26 files changed, 45 insertions(+), 83 deletions(-) <snipp diffs> -- HcE ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:12 [PATCH 2/2] clocksource: Make clocksource register functions void Yijing Wang 2014-01-23 7:40 ` Hans-Christian Egtvedt @ 2014-01-23 7:45 ` Tony Prisk 2014-01-23 7:58 ` Geert Uytterhoeven 2014-01-23 11:40 ` David Laight 2014-01-23 8:40 ` Daniel Lezcano 2 siblings, 2 replies; 12+ messages in thread From: Tony Prisk @ 2014-01-23 7:45 UTC (permalink / raw) To: linux-arm-kernel On 23/01/14 20:12, Yijing Wang wrote: > Currently, clocksource_register() and __clocksource_register_scale() > functions always return 0, it's pointless, make functions void. > And remove the dead code that check the clocksource_register_hz() > return value. > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> ...... > diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h > index 67301a4..5a17c5e 100644 > --- a/include/linux/clocksource.h > +++ b/include/linux/clocksource.h > @@ -282,7 +282,7 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift) > } > > > -extern int clocksource_register(struct clocksource*); > +extern void clocksource_register(struct clocksource *); > extern int clocksource_unregister(struct clocksource*); > extern void clocksource_touch_watchdog(void); > extern struct clocksource* clocksource_get_next(void); > @@ -301,17 +301,17 @@ clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec); > * Don't call __clocksource_register_scale directly, use > * clocksource_register_hz/khz > */ > -extern int > +extern void > __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq); > extern void > __clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq); > > -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) > +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) > { > return __clocksource_register_scale(cs, 1, hz); > } This doesn't make sense - you are still returning a value on a function declared void, and the return is now from a function that doesn't return anything either ?!?! Doesn't this throw a compile-time warning?? Regards Tony Prisk ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:45 ` Tony Prisk @ 2014-01-23 7:58 ` Geert Uytterhoeven 2014-01-23 8:04 ` Tony Prisk 2014-01-23 11:40 ` David Laight 1 sibling, 1 reply; 12+ messages in thread From: Geert Uytterhoeven @ 2014-01-23 7:58 UTC (permalink / raw) To: linux-arm-kernel On Thu, Jan 23, 2014 at 8:45 AM, Tony Prisk <linux@prisktech.co.nz> wrote: >> -static inline int clocksource_register_hz(struct clocksource *cs, u32 >> hz) >> +static inline void clocksource_register_hz(struct clocksource *cs, u32 >> hz) >> { >> return __clocksource_register_scale(cs, 1, hz); >> } > > > This doesn't make sense - you are still returning a value on a function > declared void, and the return is now from a function that doesn't return > anything either ?!?! > Doesn't this throw a compile-time warning?? No, passing on void in functions returning void doesn't cause compiler warnings. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:58 ` Geert Uytterhoeven @ 2014-01-23 8:04 ` Tony Prisk 2014-01-23 8:17 ` Yijing Wang 0 siblings, 1 reply; 12+ messages in thread From: Tony Prisk @ 2014-01-23 8:04 UTC (permalink / raw) To: linux-arm-kernel On 23/01/14 20:58, Geert Uytterhoeven wrote: > On Thu, Jan 23, 2014 at 8:45 AM, Tony Prisk <linux@prisktech.co.nz> wrote: >>> -static inline int clocksource_register_hz(struct clocksource *cs, u32 >>> hz) >>> +static inline void clocksource_register_hz(struct clocksource *cs, u32 >>> hz) >>> { >>> return __clocksource_register_scale(cs, 1, hz); >>> } >> >> This doesn't make sense - you are still returning a value on a function >> declared void, and the return is now from a function that doesn't return >> anything either ?!?! >> Doesn't this throw a compile-time warning?? > No, passing on void in functions returning void doesn't cause compiler > warnings. > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds Doesn't seem right to me (even if there is no warning) but that's probably because I used to program in Pascal where functions with no return were 'procedures' :) Whether it needs to be changed or not: For the vt8500 part - Acked-by: Tony Prisk <linux@prisktech.co.nz> Regards Tony Prisk ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 8:04 ` Tony Prisk @ 2014-01-23 8:17 ` Yijing Wang 0 siblings, 0 replies; 12+ messages in thread From: Yijing Wang @ 2014-01-23 8:17 UTC (permalink / raw) To: linux-arm-kernel On 2014/1/23 16:04, Tony Prisk wrote: > On 23/01/14 20:58, Geert Uytterhoeven wrote: >> On Thu, Jan 23, 2014 at 8:45 AM, Tony Prisk <linux@prisktech.co.nz> wrote: >>>> -static inline int clocksource_register_hz(struct clocksource *cs, u32 >>>> hz) >>>> +static inline void clocksource_register_hz(struct clocksource *cs, u32 >>>> hz) >>>> { >>>> return __clocksource_register_scale(cs, 1, hz); >>>> } >>> >>> This doesn't make sense - you are still returning a value on a function >>> declared void, and the return is now from a function that doesn't return >>> anything either ?!?! >>> Doesn't this throw a compile-time warning?? >> No, passing on void in functions returning void doesn't cause compiler >> warnings. >> >> Gr{oetje,eeting}s, >> >> Geert >> >> -- >> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org >> >> In personal conversations with technical people, I call myself a hacker. But >> when I'm talking to journalists I just say "programmer" or something like that. >> -- Linus Torvalds > Doesn't seem right to me (even if there is no warning) but that's probably because I used to program in Pascal where functions with no return were 'procedures' :) > Whether it needs to be changed or not: > > For the vt8500 part - > Acked-by: Tony Prisk <linux@prisktech.co.nz> Thanks! > > Regards > Tony Prisk > > > . > -- Thanks! Yijing ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:45 ` Tony Prisk 2014-01-23 7:58 ` Geert Uytterhoeven @ 2014-01-23 11:40 ` David Laight 2014-02-05 20:40 ` Thomas Gleixner 1 sibling, 1 reply; 12+ messages in thread From: David Laight @ 2014-01-23 11:40 UTC (permalink / raw) To: linux-arm-kernel From: Linuxppc-dev Tony Prisk > On 23/01/14 20:12, Yijing Wang wrote: > > Currently, clocksource_register() and __clocksource_register_scale() > > functions always return 0, it's pointless, make functions void. > > And remove the dead code that check the clocksource_register_hz() > > return value. > ...... > > -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) > > +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) > > { > > return __clocksource_register_scale(cs, 1, hz); > > } > > This doesn't make sense - you are still returning a value on a function > declared void, and the return is now from a function that doesn't return > anything either ?!?! > Doesn't this throw a compile-time warning?? It depends on the compiler. Recent gcc allow it. I don't know if it is actually valid C though. There is no excuse for it on lines like the above though. David ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 11:40 ` David Laight @ 2014-02-05 20:40 ` Thomas Gleixner 2014-02-10 1:13 ` Yijing Wang 0 siblings, 1 reply; 12+ messages in thread From: Thomas Gleixner @ 2014-02-05 20:40 UTC (permalink / raw) To: linux-arm-kernel Yijing, On Thu, 23 Jan 2014, David Laight wrote: > From: Linuxppc-dev Tony Prisk > > On 23/01/14 20:12, Yijing Wang wrote: > > > Currently, clocksource_register() and __clocksource_register_scale() > > > functions always return 0, it's pointless, make functions void. > > > And remove the dead code that check the clocksource_register_hz() > > > return value. > > ...... > > > -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) > > > +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) > > > { > > > return __clocksource_register_scale(cs, 1, hz); > > > } > > > > This doesn't make sense - you are still returning a value on a function > > declared void, and the return is now from a function that doesn't return > > anything either ?!?! > > Doesn't this throw a compile-time warning?? > > It depends on the compiler. > Recent gcc allow it. > I don't know if it is actually valid C though. > > There is no excuse for it on lines like the above though. Can you please resend with that fixed against 3.14-rc1 ? Thanks, tglx ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-02-05 20:40 ` Thomas Gleixner @ 2014-02-10 1:13 ` Yijing Wang 0 siblings, 0 replies; 12+ messages in thread From: Yijing Wang @ 2014-02-10 1:13 UTC (permalink / raw) To: linux-arm-kernel On 2014/2/6 4:40, Thomas Gleixner wrote: > Yijing, > > On Thu, 23 Jan 2014, David Laight wrote: > >> From: Linuxppc-dev Tony Prisk >>> On 23/01/14 20:12, Yijing Wang wrote: >>>> Currently, clocksource_register() and __clocksource_register_scale() >>>> functions always return 0, it's pointless, make functions void. >>>> And remove the dead code that check the clocksource_register_hz() >>>> return value. >>> ...... >>>> -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) >>>> +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) >>>> { >>>> return __clocksource_register_scale(cs, 1, hz); >>>> } >>> >>> This doesn't make sense - you are still returning a value on a function >>> declared void, and the return is now from a function that doesn't return >>> anything either ?!?! >>> Doesn't this throw a compile-time warning?? >> >> It depends on the compiler. >> Recent gcc allow it. >> I don't know if it is actually valid C though. >> >> There is no excuse for it on lines like the above though. > > Can you please resend with that fixed against 3.14-rc1 ? OK, I will resend later. Thanks! Yijing. > > . > -- Thanks! Yijing ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 7:12 [PATCH 2/2] clocksource: Make clocksource register functions void Yijing Wang 2014-01-23 7:40 ` Hans-Christian Egtvedt 2014-01-23 7:45 ` Tony Prisk @ 2014-01-23 8:40 ` Daniel Lezcano 2014-01-23 9:01 ` Yijing Wang 2014-02-05 20:39 ` Thomas Gleixner 2 siblings, 2 replies; 12+ messages in thread From: Daniel Lezcano @ 2014-01-23 8:40 UTC (permalink / raw) To: linux-arm-kernel On 01/23/2014 08:12 AM, Yijing Wang wrote: > Currently, clocksource_register() and __clocksource_register_scale() > functions always return 0, it's pointless, make functions void. > And remove the dead code that check the clocksource_register_hz() > return value. > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> Well, do we really want to change all these files to not take care of a return value ? What about is we have to check it again later ? I would recommend to investigate __clocksource_register_scale and the underneath functions if there is not an error to be returned in the call stack somewhere which is ignored today. The same applies for clocksource_register. Thanks -- Daniel > --- > arch/arm/mach-davinci/time.c | 5 ++--- > arch/arm/mach-msm/timer.c | 4 +--- > arch/arm/mach-omap2/timer.c | 8 +++----- > arch/avr32/kernel/time.c | 4 +--- > arch/blackfin/kernel/time-ts.c | 6 ++---- > arch/microblaze/kernel/timer.c | 3 +-- > arch/mips/jz4740/time.c | 6 +----- > arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 3 ++- > arch/openrisc/kernel/time.c | 3 +-- > arch/powerpc/kernel/time.c | 6 +----- > arch/um/kernel/time.c | 6 +----- > arch/x86/platform/uv/uv_time.c | 14 ++++++-------- > drivers/clocksource/acpi_pm.c | 3 ++- > drivers/clocksource/cadence_ttc_timer.c | 6 +----- > drivers/clocksource/exynos_mct.c | 4 +--- > drivers/clocksource/i8253.c | 3 ++- > drivers/clocksource/mmio.c | 3 ++- > drivers/clocksource/samsung_pwm_timer.c | 5 +---- > drivers/clocksource/scx200_hrt.c | 3 ++- > drivers/clocksource/tcb_clksrc.c | 8 +------- > drivers/clocksource/timer-marco.c | 2 +- > drivers/clocksource/timer-prima2.c | 2 +- > drivers/clocksource/vt8500_timer.c | 4 +--- > include/linux/clocksource.h | 8 ++++---- > kernel/time/clocksource.c | 6 ++---- > kernel/time/jiffies.c | 3 ++- > 26 files changed, 45 insertions(+), 83 deletions(-) > > diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c > index 56c6eb5..9536f85 100644 > --- a/arch/arm/mach-davinci/time.c > +++ b/arch/arm/mach-davinci/time.c > @@ -387,9 +387,8 @@ void __init davinci_timer_init(void) > > /* setup clocksource */ > clocksource_davinci.name = id_to_name[clocksource_id]; > - if (clocksource_register_hz(&clocksource_davinci, > - davinci_clock_tick_rate)) > - printk(err, clocksource_davinci.name); > + clocksource_register_hz(&clocksource_davinci, > + davinci_clock_tick_rate); > > setup_sched_clock(davinci_read_sched_clock, 32, > davinci_clock_tick_rate); > diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c > index 1e9c338..c96e034 100644 > --- a/arch/arm/mach-msm/timer.c > +++ b/arch/arm/mach-msm/timer.c > @@ -226,9 +226,7 @@ static void __init msm_timer_init(u32 dgt_hz, int sched_bits, int irq, > > err: > writel_relaxed(TIMER_ENABLE_EN, source_base + TIMER_ENABLE); > - res = clocksource_register_hz(cs, dgt_hz); > - if (res) > - pr_err("clocksource_register failed\n"); > + clocksource_register_hz(cs, dgt_hz); > setup_sched_clock(msm_sched_clock_read, sched_bits, dgt_hz); > } > > diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c > index 3ca81e0..beaf7c7 100644 > --- a/arch/arm/mach-omap2/timer.c > +++ b/arch/arm/mach-omap2/timer.c > @@ -473,11 +473,9 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id, > OMAP_TIMER_NONPOSTED); > setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); > > - if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) > - pr_err("Could not register clocksource %s\n", > - clocksource_gpt.name); > - else > - pr_info("OMAP clocksource: %s at %lu Hz\n", > + clocksource_register_hz(&clocksource_gpt, clksrc.rate); > + > + pr_info("OMAP clocksource: %s at %lu Hz\n", > clocksource_gpt.name, clksrc.rate); > } > > diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c > index d0f771b..51b4a66 100644 > --- a/arch/avr32/kernel/time.c > +++ b/arch/avr32/kernel/time.c > @@ -134,9 +134,7 @@ void __init time_init(void) > > /* figure rate for counter */ > counter_hz = clk_get_rate(boot_cpu_data.clk); > - ret = clocksource_register_hz(&counter, counter_hz); > - if (ret) > - pr_debug("timer: could not register clocksource: %d\n", ret); > + clocksource_register_hz(&counter, counter_hz); > > /* setup COMPARE clockevent */ > comparator.mult = div_sc(counter_hz, NSEC_PER_SEC, comparator.shift); > diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c > index cb0a484..df3bb08 100644 > --- a/arch/blackfin/kernel/time-ts.c > +++ b/arch/blackfin/kernel/time-ts.c > @@ -51,8 +51,7 @@ static inline unsigned long long bfin_cs_cycles_sched_clock(void) > > static int __init bfin_cs_cycles_init(void) > { > - if (clocksource_register_hz(&bfin_cs_cycles, get_cclk())) > - panic("failed to register clocksource"); > + clocksource_register_hz(&bfin_cs_cycles, get_cclk()); > > return 0; > } > @@ -103,8 +102,7 @@ static int __init bfin_cs_gptimer0_init(void) > { > setup_gptimer0(); > > - if (clocksource_register_hz(&bfin_cs_gptimer0, get_sclk())) > - panic("failed to register clocksource"); > + clocksource_register_hz(&bfin_cs_gptimer0, get_sclk()); > > return 0; > } > diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c > index 3e39b10..6a2417e 100644 > --- a/arch/microblaze/kernel/timer.c > +++ b/arch/microblaze/kernel/timer.c > @@ -208,8 +208,7 @@ static struct clocksource clocksource_microblaze = { > > static int __init xilinx_clocksource_init(void) > { > - if (clocksource_register_hz(&clocksource_microblaze, timer_clock_freq)) > - panic("failed to register clocksource"); > + clocksource_register_hz(&clocksource_microblaze, timer_clock_freq); > > /* stop timer1 */ > out_be32(timer_baseaddr + TCSR1, > diff --git a/arch/mips/jz4740/time.c b/arch/mips/jz4740/time.c > index 5e430ce..041cdff 100644 > --- a/arch/mips/jz4740/time.c > +++ b/arch/mips/jz4740/time.c > @@ -105,7 +105,6 @@ static struct irqaction timer_irqaction = { > > void __init plat_time_init(void) > { > - int ret; > uint32_t clk_rate; > uint16_t ctrl; > > @@ -121,10 +120,7 @@ void __init plat_time_init(void) > > clockevents_register_device(&jz4740_clockevent); > > - ret = clocksource_register_hz(&jz4740_clocksource, clk_rate); > - > - if (ret) > - printk(KERN_ERR "Failed to register clocksource: %d\n", ret); > + clocksource_register_hz(&jz4740_clocksource, clk_rate); > > setup_irq(JZ4740_IRQ_TCU0, &timer_irqaction); > > diff --git a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c > index c639b9d..9fa6d99 100644 > --- a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c > +++ b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c > @@ -208,7 +208,8 @@ int __init init_mfgpt_clocksource(void) > if (num_possible_cpus() > 1) /* MFGPT does not scale! */ > return 0; > > - return clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE); > + clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE); > + return 0; > } > > arch_initcall(init_mfgpt_clocksource); > diff --git a/arch/openrisc/kernel/time.c b/arch/openrisc/kernel/time.c > index 7c52e94..3f789aa 100644 > --- a/arch/openrisc/kernel/time.c > +++ b/arch/openrisc/kernel/time.c > @@ -156,8 +156,7 @@ static struct clocksource openrisc_timer = { > > static int __init openrisc_timer_init(void) > { > - if (clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency)) > - panic("failed to register clocksource"); > + clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency); > > /* Enable the incrementer: 'continuous' mode with interrupt disabled */ > mtspr(SPR_TTMR, SPR_TTMR_CR); > diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c > index b3b1441..27c0627 100644 > --- a/arch/powerpc/kernel/time.c > +++ b/arch/powerpc/kernel/time.c > @@ -788,11 +788,7 @@ static void __init clocksource_init(void) > else > clock = &clocksource_timebase; > > - if (clocksource_register_hz(clock, tb_ticks_per_sec)) { > - printk(KERN_ERR "clocksource: %s is already registered\n", > - clock->name); > - return; > - } > + clocksource_register_hz(clock, tb_ticks_per_sec); > > printk(KERN_INFO "clocksource: %s mult[%x] shift[%d] registered\n", > clock->name, clock->mult, clock->shift); > diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c > index 117568d..2034b58 100644 > --- a/arch/um/kernel/time.c > +++ b/arch/um/kernel/time.c > @@ -92,11 +92,7 @@ static void __init setup_itimer(void) > clockevent_delta2ns(60 * HZ, &itimer_clockevent); > itimer_clockevent.min_delta_ns = > clockevent_delta2ns(1, &itimer_clockevent); > - err = clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC); > - if (err) { > - printk(KERN_ERR "clocksource_register_hz returned %d\n", err); > - return; > - } > + clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC); > clockevents_register_device(&itimer_clockevent); > } > > diff --git a/arch/x86/platform/uv/uv_time.c b/arch/x86/platform/uv/uv_time.c > index 5c86786..b963774 100644 > --- a/arch/x86/platform/uv/uv_time.c > +++ b/arch/x86/platform/uv/uv_time.c > @@ -379,15 +379,13 @@ static __init int uv_rtc_setup_clock(void) > if (!is_uv_system()) > return -ENODEV; > > - 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 > - printk(KERN_INFO "UV RTC clocksource registered freq %lu MHz\n", > - sn_rtc_cycles_per_second/(unsigned long)1E6); > + clocksource_register_hz(&clocksource_uv, sn_rtc_cycles_per_second); > + > + pr_info("UV RTC clocksource registered freq %lu MHz\n", > + sn_rtc_cycles_per_second/(unsigned long)1E6); > > - if (rc || !uv_rtc_evt_enable || x86_platform_ipi_callback) > - return rc; > + if (!uv_rtc_evt_enable || x86_platform_ipi_callback) > + return 0; > > /* Setup and register clockevents */ > rc = uv_rtc_allocate_timers(); > diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c > index 6eab889..ab1dc63 100644 > --- a/drivers/clocksource/acpi_pm.c > +++ b/drivers/clocksource/acpi_pm.c > @@ -218,8 +218,9 @@ static int __init init_acpi_pm_clocksource(void) > return -ENODEV; > } > > - return clocksource_register_hz(&clocksource_acpi_pm, > + clocksource_register_hz(&clocksource_acpi_pm, > PMTMR_TICKS_PER_SEC); > + return 0; > } > > /* We use fs_initcall because we want the PCI fixups to have run > diff --git a/drivers/clocksource/cadence_ttc_timer.c b/drivers/clocksource/cadence_ttc_timer.c > index 63f176d..b9b56ed 100644 > --- a/drivers/clocksource/cadence_ttc_timer.c > +++ b/drivers/clocksource/cadence_ttc_timer.c > @@ -301,11 +301,7 @@ static void __init ttc_setup_clocksource(struct clk *clk, void __iomem *base) > __raw_writel(CNT_CNTRL_RESET, > ttccs->ttc.base_addr + TTC_CNT_CNTRL_OFFSET); > > - err = clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE); > - if (WARN_ON(err)) { > - kfree(ttccs); > - return; > - } > + clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE); > > ttc_sched_clock_val_reg = base + TTC_COUNT_VAL_OFFSET; > sched_clock_register(ttc_sched_clock_read, 16, ttccs->ttc.freq / PRESCALE); > diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c > index 62b0de6..98649c7 100644 > --- a/drivers/clocksource/exynos_mct.c > +++ b/drivers/clocksource/exynos_mct.c > @@ -193,9 +193,7 @@ struct clocksource mct_frc = { > static void __init exynos4_clocksource_init(void) > { > exynos4_mct_frc_start(0, 0); > - > - if (clocksource_register_hz(&mct_frc, clk_rate)) > - panic("%s: can't register clocksource\n", mct_frc.name); > + clocksource_register_hz(&mct_frc, clk_rate); > } > > static void exynos4_mct_comp0_stop(void) > diff --git a/drivers/clocksource/i8253.c b/drivers/clocksource/i8253.c > index 14ee3ef..9c45f0a 100644 > --- a/drivers/clocksource/i8253.c > +++ b/drivers/clocksource/i8253.c > @@ -95,7 +95,8 @@ static struct clocksource i8253_cs = { > > int __init clocksource_i8253_init(void) > { > - return clocksource_register_hz(&i8253_cs, PIT_TICK_RATE); > + clocksource_register_hz(&i8253_cs, PIT_TICK_RATE); > + return 0; > } > #endif > > diff --git a/drivers/clocksource/mmio.c b/drivers/clocksource/mmio.c > index c0e2512..6e0b530 100644 > --- a/drivers/clocksource/mmio.c > +++ b/drivers/clocksource/mmio.c > @@ -69,5 +69,6 @@ int __init clocksource_mmio_init(void __iomem *base, const char *name, > cs->clksrc.mask = CLOCKSOURCE_MASK(bits); > cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS; > > - return clocksource_register_hz(&cs->clksrc, hz); > + clocksource_register_hz(&cs->clksrc, hz); > + return 0; > } > diff --git a/drivers/clocksource/samsung_pwm_timer.c b/drivers/clocksource/samsung_pwm_timer.c > index 5645cfc..c59292f 100644 > --- a/drivers/clocksource/samsung_pwm_timer.c > +++ b/drivers/clocksource/samsung_pwm_timer.c > @@ -340,7 +340,6 @@ static void __init samsung_clocksource_init(void) > { > unsigned long pclk; > unsigned long clock_rate; > - int ret; > > pclk = clk_get_rate(pwm.timerclk); > > @@ -361,9 +360,7 @@ static void __init samsung_clocksource_init(void) > pwm.variant.bits, clock_rate); > > samsung_clocksource.mask = CLOCKSOURCE_MASK(pwm.variant.bits); > - ret = clocksource_register_hz(&samsung_clocksource, clock_rate); > - if (ret) > - panic("samsung_clocksource_timer: can't register clocksource\n"); > + clocksource_register_hz(&samsung_clocksource, clock_rate); > } > > static void __init samsung_timer_resources(void) > diff --git a/drivers/clocksource/scx200_hrt.c b/drivers/clocksource/scx200_hrt.c > index 64f9e82..57bdc04 100644 > --- a/drivers/clocksource/scx200_hrt.c > +++ b/drivers/clocksource/scx200_hrt.c > @@ -83,7 +83,8 @@ static int __init init_hrt_clocksource(void) > > pr_info("enabling scx200 high-res timer (%s MHz +%d ppm)\n", mhz27 ? "27":"1", ppm); > > - return clocksource_register_hz(&cs_hrt, freq); > + clocksource_register_hz(&cs_hrt, freq); > + return 0; > } > > module_init(init_hrt_clocksource); > diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c > index 00fdd11..805245d 100644 > --- a/drivers/clocksource/tcb_clksrc.c > +++ b/drivers/clocksource/tcb_clksrc.c > @@ -340,9 +340,7 @@ static int __init tcb_clksrc_init(void) > } > > /* and away we go! */ > - ret = clocksource_register_hz(&clksrc, divided_rate); > - if (ret) > - goto err_disable_t1; > + clocksource_register_hz(&clksrc, divided_rate); > > /* channel 2: periodic and oneshot timer support */ > ret = setup_clkevents(tc, clk32k_divisor_idx); > @@ -354,10 +352,6 @@ static int __init tcb_clksrc_init(void) > err_unregister_clksrc: > clocksource_unregister(&clksrc); > > -err_disable_t1: > - if (!tc->tcb_config || tc->tcb_config->counter_width != 32) > - clk_disable_unprepare(tc->clk[1]); > - > err_disable_t0: > clk_disable_unprepare(t0_clk); > > diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c > index 09a17d9..ae78ce0 100644 > --- a/drivers/clocksource/timer-marco.c > +++ b/drivers/clocksource/timer-marco.c > @@ -283,7 +283,7 @@ static void __init sirfsoc_marco_timer_init(void) > /* Clear all interrupts */ > writel_relaxed(0xFFFF, sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS); > > - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); > + clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE); > > sirfsoc_clockevent_init(); > } > diff --git a/drivers/clocksource/timer-prima2.c b/drivers/clocksource/timer-prima2.c > index 8a492d3..c9cc307 100644 > --- a/drivers/clocksource/timer-prima2.c > +++ b/drivers/clocksource/timer-prima2.c > @@ -204,7 +204,7 @@ static void __init sirfsoc_prima2_timer_init(struct device_node *np) > writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); > writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS); > > - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); > + clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE); > > sched_clock_register(sirfsoc_read_sched_clock, 64, CLOCK_TICK_RATE); > > diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c > index 1098ed3..13f5fa4 100644 > --- a/drivers/clocksource/vt8500_timer.c > +++ b/drivers/clocksource/vt8500_timer.c > @@ -150,9 +150,7 @@ static void __init vt8500_timer_init(struct device_node *np) > writel(0xf, regbase + TIMER_STATUS_VAL); > writel(~0, regbase + TIMER_MATCH_VAL); > > - if (clocksource_register_hz(&clocksource, VT8500_TIMER_HZ)) > - pr_err("%s: vt8500_timer_init: clocksource_register failed for %s\n", > - __func__, clocksource.name); > + clocksource_register_hz(&clocksource, VT8500_TIMER_HZ); > > clockevent.cpumask = cpumask_of(0); > > diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h > index 67301a4..5a17c5e 100644 > --- a/include/linux/clocksource.h > +++ b/include/linux/clocksource.h > @@ -282,7 +282,7 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift) > } > > > -extern int clocksource_register(struct clocksource*); > +extern void clocksource_register(struct clocksource *); > extern int clocksource_unregister(struct clocksource*); > extern void clocksource_touch_watchdog(void); > extern struct clocksource* clocksource_get_next(void); > @@ -301,17 +301,17 @@ clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec); > * Don't call __clocksource_register_scale directly, use > * clocksource_register_hz/khz > */ > -extern int > +extern void > __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq); > extern void > __clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq); > > -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) > +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) > { > return __clocksource_register_scale(cs, 1, hz); > } > > -static inline int clocksource_register_khz(struct clocksource *cs, u32 khz) > +static inline void clocksource_register_khz(struct clocksource *cs, u32 khz) > { > return __clocksource_register_scale(cs, 1000, khz); > } > diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c > index 9951575..686ff72 100644 > --- a/kernel/time/clocksource.c > +++ b/kernel/time/clocksource.c > @@ -782,7 +782,7 @@ EXPORT_SYMBOL_GPL(__clocksource_updatefreq_scale); > * This *SHOULD NOT* be called directly! Please use the > * clocksource_register_hz() or clocksource_register_khz helper functions. > */ > -int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) > +void __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) > { > > /* Initialize mult/shift and max_idle_ns */ > @@ -794,7 +794,6 @@ int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) > clocksource_enqueue_watchdog(cs); > clocksource_select(); > mutex_unlock(&clocksource_mutex); > - return 0; > } > EXPORT_SYMBOL_GPL(__clocksource_register_scale); > > @@ -804,7 +803,7 @@ EXPORT_SYMBOL_GPL(__clocksource_register_scale); > * @cs: clocksource to be registered > * > */ > -int clocksource_register(struct clocksource *cs) > +void clocksource_register(struct clocksource *cs) > { > /* calculate max adjustment for given mult/shift */ > cs->maxadj = clocksource_max_adjustment(cs); > @@ -820,7 +819,6 @@ int clocksource_register(struct clocksource *cs) > clocksource_enqueue_watchdog(cs); > clocksource_select(); > mutex_unlock(&clocksource_mutex); > - return 0; > } > EXPORT_SYMBOL(clocksource_register); > > diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c > index 7a925ba..ae4c534 100644 > --- a/kernel/time/jiffies.c > +++ b/kernel/time/jiffies.c > @@ -88,7 +88,8 @@ EXPORT_SYMBOL(jiffies); > > static int __init init_jiffies_clocksource(void) > { > - return clocksource_register(&clocksource_jiffies); > + clocksource_register(&clocksource_jiffies); > + return 0; > } > > core_initcall(init_jiffies_clocksource); > -- <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 8:40 ` Daniel Lezcano @ 2014-01-23 9:01 ` Yijing Wang 2014-02-05 20:39 ` Thomas Gleixner 1 sibling, 0 replies; 12+ messages in thread From: Yijing Wang @ 2014-01-23 9:01 UTC (permalink / raw) To: linux-arm-kernel On 2014/1/23 16:40, Daniel Lezcano wrote: > On 01/23/2014 08:12 AM, Yijing Wang wrote: >> Currently, clocksource_register() and __clocksource_register_scale() >> functions always return 0, it's pointless, make functions void. >> And remove the dead code that check the clocksource_register_hz() >> return value. >> >> Signed-off-by: Yijing Wang <wangyijing@huawei.com> > > Well, do we really want to change all these files to not take care of a return value ? What about is we have to check it again later ? > > I would recommend to investigate __clocksource_register_scale and the underneath functions if there is not an error to be returned in the call stack somewhere which is ignored today. > > The same applies for clocksource_register. Hi Daniel, thanks for your comment, all functions type under __clocksource_register_scale() are void. This just is trivial cleanup patch, I don't know whether we will check these function return value again later. If there is some possibility to check it again, I agree to keep them. Of course, this is all determined by Thomas. Thanks! Yijing. > >> --- >> arch/arm/mach-davinci/time.c | 5 ++--- >> arch/arm/mach-msm/timer.c | 4 +--- >> arch/arm/mach-omap2/timer.c | 8 +++----- >> arch/avr32/kernel/time.c | 4 +--- >> arch/blackfin/kernel/time-ts.c | 6 ++---- >> arch/microblaze/kernel/timer.c | 3 +-- >> arch/mips/jz4740/time.c | 6 +----- >> arch/mips/loongson/common/cs5536/cs5536_mfgpt.c | 3 ++- >> arch/openrisc/kernel/time.c | 3 +-- >> arch/powerpc/kernel/time.c | 6 +----- >> arch/um/kernel/time.c | 6 +----- >> arch/x86/platform/uv/uv_time.c | 14 ++++++-------- >> drivers/clocksource/acpi_pm.c | 3 ++- >> drivers/clocksource/cadence_ttc_timer.c | 6 +----- >> drivers/clocksource/exynos_mct.c | 4 +--- >> drivers/clocksource/i8253.c | 3 ++- >> drivers/clocksource/mmio.c | 3 ++- >> drivers/clocksource/samsung_pwm_timer.c | 5 +---- >> drivers/clocksource/scx200_hrt.c | 3 ++- >> drivers/clocksource/tcb_clksrc.c | 8 +------- >> drivers/clocksource/timer-marco.c | 2 +- >> drivers/clocksource/timer-prima2.c | 2 +- >> drivers/clocksource/vt8500_timer.c | 4 +--- >> include/linux/clocksource.h | 8 ++++---- >> kernel/time/clocksource.c | 6 ++---- >> kernel/time/jiffies.c | 3 ++- >> 26 files changed, 45 insertions(+), 83 deletions(-) >> >> diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c >> index 56c6eb5..9536f85 100644 >> --- a/arch/arm/mach-davinci/time.c >> +++ b/arch/arm/mach-davinci/time.c >> @@ -387,9 +387,8 @@ void __init davinci_timer_init(void) >> >> /* setup clocksource */ >> clocksource_davinci.name = id_to_name[clocksource_id]; >> - if (clocksource_register_hz(&clocksource_davinci, >> - davinci_clock_tick_rate)) >> - printk(err, clocksource_davinci.name); >> + clocksource_register_hz(&clocksource_davinci, >> + davinci_clock_tick_rate); >> >> setup_sched_clock(davinci_read_sched_clock, 32, >> davinci_clock_tick_rate); >> diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c >> index 1e9c338..c96e034 100644 >> --- a/arch/arm/mach-msm/timer.c >> +++ b/arch/arm/mach-msm/timer.c >> @@ -226,9 +226,7 @@ static void __init msm_timer_init(u32 dgt_hz, int sched_bits, int irq, >> >> err: >> writel_relaxed(TIMER_ENABLE_EN, source_base + TIMER_ENABLE); >> - res = clocksource_register_hz(cs, dgt_hz); >> - if (res) >> - pr_err("clocksource_register failed\n"); >> + clocksource_register_hz(cs, dgt_hz); >> setup_sched_clock(msm_sched_clock_read, sched_bits, dgt_hz); >> } >> >> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c >> index 3ca81e0..beaf7c7 100644 >> --- a/arch/arm/mach-omap2/timer.c >> +++ b/arch/arm/mach-omap2/timer.c >> @@ -473,11 +473,9 @@ static void __init omap2_gptimer_clocksource_init(int gptimer_id, >> OMAP_TIMER_NONPOSTED); >> setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate); >> >> - if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) >> - pr_err("Could not register clocksource %s\n", >> - clocksource_gpt.name); >> - else >> - pr_info("OMAP clocksource: %s at %lu Hz\n", >> + clocksource_register_hz(&clocksource_gpt, clksrc.rate); >> + >> + pr_info("OMAP clocksource: %s at %lu Hz\n", >> clocksource_gpt.name, clksrc.rate); >> } >> >> diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c >> index d0f771b..51b4a66 100644 >> --- a/arch/avr32/kernel/time.c >> +++ b/arch/avr32/kernel/time.c >> @@ -134,9 +134,7 @@ void __init time_init(void) >> >> /* figure rate for counter */ >> counter_hz = clk_get_rate(boot_cpu_data.clk); >> - ret = clocksource_register_hz(&counter, counter_hz); >> - if (ret) >> - pr_debug("timer: could not register clocksource: %d\n", ret); >> + clocksource_register_hz(&counter, counter_hz); >> >> /* setup COMPARE clockevent */ >> comparator.mult = div_sc(counter_hz, NSEC_PER_SEC, comparator.shift); >> diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c >> index cb0a484..df3bb08 100644 >> --- a/arch/blackfin/kernel/time-ts.c >> +++ b/arch/blackfin/kernel/time-ts.c >> @@ -51,8 +51,7 @@ static inline unsigned long long bfin_cs_cycles_sched_clock(void) >> >> static int __init bfin_cs_cycles_init(void) >> { >> - if (clocksource_register_hz(&bfin_cs_cycles, get_cclk())) >> - panic("failed to register clocksource"); >> + clocksource_register_hz(&bfin_cs_cycles, get_cclk()); >> >> return 0; >> } >> @@ -103,8 +102,7 @@ static int __init bfin_cs_gptimer0_init(void) >> { >> setup_gptimer0(); >> >> - if (clocksource_register_hz(&bfin_cs_gptimer0, get_sclk())) >> - panic("failed to register clocksource"); >> + clocksource_register_hz(&bfin_cs_gptimer0, get_sclk()); >> >> return 0; >> } >> diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c >> index 3e39b10..6a2417e 100644 >> --- a/arch/microblaze/kernel/timer.c >> +++ b/arch/microblaze/kernel/timer.c >> @@ -208,8 +208,7 @@ static struct clocksource clocksource_microblaze = { >> >> static int __init xilinx_clocksource_init(void) >> { >> - if (clocksource_register_hz(&clocksource_microblaze, timer_clock_freq)) >> - panic("failed to register clocksource"); >> + clocksource_register_hz(&clocksource_microblaze, timer_clock_freq); >> >> /* stop timer1 */ >> out_be32(timer_baseaddr + TCSR1, >> diff --git a/arch/mips/jz4740/time.c b/arch/mips/jz4740/time.c >> index 5e430ce..041cdff 100644 >> --- a/arch/mips/jz4740/time.c >> +++ b/arch/mips/jz4740/time.c >> @@ -105,7 +105,6 @@ static struct irqaction timer_irqaction = { >> >> void __init plat_time_init(void) >> { >> - int ret; >> uint32_t clk_rate; >> uint16_t ctrl; >> >> @@ -121,10 +120,7 @@ void __init plat_time_init(void) >> >> clockevents_register_device(&jz4740_clockevent); >> >> - ret = clocksource_register_hz(&jz4740_clocksource, clk_rate); >> - >> - if (ret) >> - printk(KERN_ERR "Failed to register clocksource: %d\n", ret); >> + clocksource_register_hz(&jz4740_clocksource, clk_rate); >> >> setup_irq(JZ4740_IRQ_TCU0, &timer_irqaction); >> >> diff --git a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c >> index c639b9d..9fa6d99 100644 >> --- a/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c >> +++ b/arch/mips/loongson/common/cs5536/cs5536_mfgpt.c >> @@ -208,7 +208,8 @@ int __init init_mfgpt_clocksource(void) >> if (num_possible_cpus() > 1) /* MFGPT does not scale! */ >> return 0; >> >> - return clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE); >> + clocksource_register_hz(&clocksource_mfgpt, MFGPT_TICK_RATE); >> + return 0; >> } >> >> arch_initcall(init_mfgpt_clocksource); >> diff --git a/arch/openrisc/kernel/time.c b/arch/openrisc/kernel/time.c >> index 7c52e94..3f789aa 100644 >> --- a/arch/openrisc/kernel/time.c >> +++ b/arch/openrisc/kernel/time.c >> @@ -156,8 +156,7 @@ static struct clocksource openrisc_timer = { >> >> static int __init openrisc_timer_init(void) >> { >> - if (clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency)) >> - panic("failed to register clocksource"); >> + clocksource_register_hz(&openrisc_timer, cpuinfo.clock_frequency); >> >> /* Enable the incrementer: 'continuous' mode with interrupt disabled */ >> mtspr(SPR_TTMR, SPR_TTMR_CR); >> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c >> index b3b1441..27c0627 100644 >> --- a/arch/powerpc/kernel/time.c >> +++ b/arch/powerpc/kernel/time.c >> @@ -788,11 +788,7 @@ static void __init clocksource_init(void) >> else >> clock = &clocksource_timebase; >> >> - if (clocksource_register_hz(clock, tb_ticks_per_sec)) { >> - printk(KERN_ERR "clocksource: %s is already registered\n", >> - clock->name); >> - return; >> - } >> + clocksource_register_hz(clock, tb_ticks_per_sec); >> >> printk(KERN_INFO "clocksource: %s mult[%x] shift[%d] registered\n", >> clock->name, clock->mult, clock->shift); >> diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c >> index 117568d..2034b58 100644 >> --- a/arch/um/kernel/time.c >> +++ b/arch/um/kernel/time.c >> @@ -92,11 +92,7 @@ static void __init setup_itimer(void) >> clockevent_delta2ns(60 * HZ, &itimer_clockevent); >> itimer_clockevent.min_delta_ns = >> clockevent_delta2ns(1, &itimer_clockevent); >> - err = clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC); >> - if (err) { >> - printk(KERN_ERR "clocksource_register_hz returned %d\n", err); >> - return; >> - } >> + clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC); >> clockevents_register_device(&itimer_clockevent); >> } >> >> diff --git a/arch/x86/platform/uv/uv_time.c b/arch/x86/platform/uv/uv_time.c >> index 5c86786..b963774 100644 >> --- a/arch/x86/platform/uv/uv_time.c >> +++ b/arch/x86/platform/uv/uv_time.c >> @@ -379,15 +379,13 @@ static __init int uv_rtc_setup_clock(void) >> if (!is_uv_system()) >> return -ENODEV; >> >> - 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 >> - printk(KERN_INFO "UV RTC clocksource registered freq %lu MHz\n", >> - sn_rtc_cycles_per_second/(unsigned long)1E6); >> + clocksource_register_hz(&clocksource_uv, sn_rtc_cycles_per_second); >> + >> + pr_info("UV RTC clocksource registered freq %lu MHz\n", >> + sn_rtc_cycles_per_second/(unsigned long)1E6); >> >> - if (rc || !uv_rtc_evt_enable || x86_platform_ipi_callback) >> - return rc; >> + if (!uv_rtc_evt_enable || x86_platform_ipi_callback) >> + return 0; >> >> /* Setup and register clockevents */ >> rc = uv_rtc_allocate_timers(); >> diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c >> index 6eab889..ab1dc63 100644 >> --- a/drivers/clocksource/acpi_pm.c >> +++ b/drivers/clocksource/acpi_pm.c >> @@ -218,8 +218,9 @@ static int __init init_acpi_pm_clocksource(void) >> return -ENODEV; >> } >> >> - return clocksource_register_hz(&clocksource_acpi_pm, >> + clocksource_register_hz(&clocksource_acpi_pm, >> PMTMR_TICKS_PER_SEC); >> + return 0; >> } >> >> /* We use fs_initcall because we want the PCI fixups to have run >> diff --git a/drivers/clocksource/cadence_ttc_timer.c b/drivers/clocksource/cadence_ttc_timer.c >> index 63f176d..b9b56ed 100644 >> --- a/drivers/clocksource/cadence_ttc_timer.c >> +++ b/drivers/clocksource/cadence_ttc_timer.c >> @@ -301,11 +301,7 @@ static void __init ttc_setup_clocksource(struct clk *clk, void __iomem *base) >> __raw_writel(CNT_CNTRL_RESET, >> ttccs->ttc.base_addr + TTC_CNT_CNTRL_OFFSET); >> >> - err = clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE); >> - if (WARN_ON(err)) { >> - kfree(ttccs); >> - return; >> - } >> + clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE); >> >> ttc_sched_clock_val_reg = base + TTC_COUNT_VAL_OFFSET; >> sched_clock_register(ttc_sched_clock_read, 16, ttccs->ttc.freq / PRESCALE); >> diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c >> index 62b0de6..98649c7 100644 >> --- a/drivers/clocksource/exynos_mct.c >> +++ b/drivers/clocksource/exynos_mct.c >> @@ -193,9 +193,7 @@ struct clocksource mct_frc = { >> static void __init exynos4_clocksource_init(void) >> { >> exynos4_mct_frc_start(0, 0); >> - >> - if (clocksource_register_hz(&mct_frc, clk_rate)) >> - panic("%s: can't register clocksource\n", mct_frc.name); >> + clocksource_register_hz(&mct_frc, clk_rate); >> } >> >> static void exynos4_mct_comp0_stop(void) >> diff --git a/drivers/clocksource/i8253.c b/drivers/clocksource/i8253.c >> index 14ee3ef..9c45f0a 100644 >> --- a/drivers/clocksource/i8253.c >> +++ b/drivers/clocksource/i8253.c >> @@ -95,7 +95,8 @@ static struct clocksource i8253_cs = { >> >> int __init clocksource_i8253_init(void) >> { >> - return clocksource_register_hz(&i8253_cs, PIT_TICK_RATE); >> + clocksource_register_hz(&i8253_cs, PIT_TICK_RATE); >> + return 0; >> } >> #endif >> >> diff --git a/drivers/clocksource/mmio.c b/drivers/clocksource/mmio.c >> index c0e2512..6e0b530 100644 >> --- a/drivers/clocksource/mmio.c >> +++ b/drivers/clocksource/mmio.c >> @@ -69,5 +69,6 @@ int __init clocksource_mmio_init(void __iomem *base, const char *name, >> cs->clksrc.mask = CLOCKSOURCE_MASK(bits); >> cs->clksrc.flags = CLOCK_SOURCE_IS_CONTINUOUS; >> >> - return clocksource_register_hz(&cs->clksrc, hz); >> + clocksource_register_hz(&cs->clksrc, hz); >> + return 0; >> } >> diff --git a/drivers/clocksource/samsung_pwm_timer.c b/drivers/clocksource/samsung_pwm_timer.c >> index 5645cfc..c59292f 100644 >> --- a/drivers/clocksource/samsung_pwm_timer.c >> +++ b/drivers/clocksource/samsung_pwm_timer.c >> @@ -340,7 +340,6 @@ static void __init samsung_clocksource_init(void) >> { >> unsigned long pclk; >> unsigned long clock_rate; >> - int ret; >> >> pclk = clk_get_rate(pwm.timerclk); >> >> @@ -361,9 +360,7 @@ static void __init samsung_clocksource_init(void) >> pwm.variant.bits, clock_rate); >> >> samsung_clocksource.mask = CLOCKSOURCE_MASK(pwm.variant.bits); >> - ret = clocksource_register_hz(&samsung_clocksource, clock_rate); >> - if (ret) >> - panic("samsung_clocksource_timer: can't register clocksource\n"); >> + clocksource_register_hz(&samsung_clocksource, clock_rate); >> } >> >> static void __init samsung_timer_resources(void) >> diff --git a/drivers/clocksource/scx200_hrt.c b/drivers/clocksource/scx200_hrt.c >> index 64f9e82..57bdc04 100644 >> --- a/drivers/clocksource/scx200_hrt.c >> +++ b/drivers/clocksource/scx200_hrt.c >> @@ -83,7 +83,8 @@ static int __init init_hrt_clocksource(void) >> >> pr_info("enabling scx200 high-res timer (%s MHz +%d ppm)\n", mhz27 ? "27":"1", ppm); >> >> - return clocksource_register_hz(&cs_hrt, freq); >> + clocksource_register_hz(&cs_hrt, freq); >> + return 0; >> } >> >> module_init(init_hrt_clocksource); >> diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c >> index 00fdd11..805245d 100644 >> --- a/drivers/clocksource/tcb_clksrc.c >> +++ b/drivers/clocksource/tcb_clksrc.c >> @@ -340,9 +340,7 @@ static int __init tcb_clksrc_init(void) >> } >> >> /* and away we go! */ >> - ret = clocksource_register_hz(&clksrc, divided_rate); >> - if (ret) >> - goto err_disable_t1; >> + clocksource_register_hz(&clksrc, divided_rate); >> >> /* channel 2: periodic and oneshot timer support */ >> ret = setup_clkevents(tc, clk32k_divisor_idx); >> @@ -354,10 +352,6 @@ static int __init tcb_clksrc_init(void) >> err_unregister_clksrc: >> clocksource_unregister(&clksrc); >> >> -err_disable_t1: >> - if (!tc->tcb_config || tc->tcb_config->counter_width != 32) >> - clk_disable_unprepare(tc->clk[1]); >> - >> err_disable_t0: >> clk_disable_unprepare(t0_clk); >> >> diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c >> index 09a17d9..ae78ce0 100644 >> --- a/drivers/clocksource/timer-marco.c >> +++ b/drivers/clocksource/timer-marco.c >> @@ -283,7 +283,7 @@ static void __init sirfsoc_marco_timer_init(void) >> /* Clear all interrupts */ >> writel_relaxed(0xFFFF, sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS); >> >> - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); >> + clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE); >> >> sirfsoc_clockevent_init(); >> } >> diff --git a/drivers/clocksource/timer-prima2.c b/drivers/clocksource/timer-prima2.c >> index 8a492d3..c9cc307 100644 >> --- a/drivers/clocksource/timer-prima2.c >> +++ b/drivers/clocksource/timer-prima2.c >> @@ -204,7 +204,7 @@ static void __init sirfsoc_prima2_timer_init(struct device_node *np) >> writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI); >> writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS); >> >> - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE)); >> + clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE); >> >> sched_clock_register(sirfsoc_read_sched_clock, 64, CLOCK_TICK_RATE); >> >> diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c >> index 1098ed3..13f5fa4 100644 >> --- a/drivers/clocksource/vt8500_timer.c >> +++ b/drivers/clocksource/vt8500_timer.c >> @@ -150,9 +150,7 @@ static void __init vt8500_timer_init(struct device_node *np) >> writel(0xf, regbase + TIMER_STATUS_VAL); >> writel(~0, regbase + TIMER_MATCH_VAL); >> >> - if (clocksource_register_hz(&clocksource, VT8500_TIMER_HZ)) >> - pr_err("%s: vt8500_timer_init: clocksource_register failed for %s\n", >> - __func__, clocksource.name); >> + clocksource_register_hz(&clocksource, VT8500_TIMER_HZ); >> >> clockevent.cpumask = cpumask_of(0); >> >> diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h >> index 67301a4..5a17c5e 100644 >> --- a/include/linux/clocksource.h >> +++ b/include/linux/clocksource.h >> @@ -282,7 +282,7 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift) >> } >> >> >> -extern int clocksource_register(struct clocksource*); >> +extern void clocksource_register(struct clocksource *); >> extern int clocksource_unregister(struct clocksource*); >> extern void clocksource_touch_watchdog(void); >> extern struct clocksource* clocksource_get_next(void); >> @@ -301,17 +301,17 @@ clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec); >> * Don't call __clocksource_register_scale directly, use >> * clocksource_register_hz/khz >> */ >> -extern int >> +extern void >> __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq); >> extern void >> __clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq); >> >> -static inline int clocksource_register_hz(struct clocksource *cs, u32 hz) >> +static inline void clocksource_register_hz(struct clocksource *cs, u32 hz) >> { >> return __clocksource_register_scale(cs, 1, hz); >> } >> >> -static inline int clocksource_register_khz(struct clocksource *cs, u32 khz) >> +static inline void clocksource_register_khz(struct clocksource *cs, u32 khz) >> { >> return __clocksource_register_scale(cs, 1000, khz); >> } >> diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c >> index 9951575..686ff72 100644 >> --- a/kernel/time/clocksource.c >> +++ b/kernel/time/clocksource.c >> @@ -782,7 +782,7 @@ EXPORT_SYMBOL_GPL(__clocksource_updatefreq_scale); >> * This *SHOULD NOT* be called directly! Please use the >> * clocksource_register_hz() or clocksource_register_khz helper functions. >> */ >> -int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) >> +void __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) >> { >> >> /* Initialize mult/shift and max_idle_ns */ >> @@ -794,7 +794,6 @@ int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) >> clocksource_enqueue_watchdog(cs); >> clocksource_select(); >> mutex_unlock(&clocksource_mutex); >> - return 0; >> } >> EXPORT_SYMBOL_GPL(__clocksource_register_scale); >> >> @@ -804,7 +803,7 @@ EXPORT_SYMBOL_GPL(__clocksource_register_scale); >> * @cs: clocksource to be registered >> * >> */ >> -int clocksource_register(struct clocksource *cs) >> +void clocksource_register(struct clocksource *cs) >> { >> /* calculate max adjustment for given mult/shift */ >> cs->maxadj = clocksource_max_adjustment(cs); >> @@ -820,7 +819,6 @@ int clocksource_register(struct clocksource *cs) >> clocksource_enqueue_watchdog(cs); >> clocksource_select(); >> mutex_unlock(&clocksource_mutex); >> - return 0; >> } >> EXPORT_SYMBOL(clocksource_register); >> >> diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c >> index 7a925ba..ae4c534 100644 >> --- a/kernel/time/jiffies.c >> +++ b/kernel/time/jiffies.c >> @@ -88,7 +88,8 @@ EXPORT_SYMBOL(jiffies); >> >> static int __init init_jiffies_clocksource(void) >> { >> - return clocksource_register(&clocksource_jiffies); >> + clocksource_register(&clocksource_jiffies); >> + return 0; >> } >> >> core_initcall(init_jiffies_clocksource); >> > > -- Thanks! Yijing ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] clocksource: Make clocksource register functions void 2014-01-23 8:40 ` Daniel Lezcano 2014-01-23 9:01 ` Yijing Wang @ 2014-02-05 20:39 ` Thomas Gleixner 1 sibling, 0 replies; 12+ messages in thread From: Thomas Gleixner @ 2014-02-05 20:39 UTC (permalink / raw) To: linux-arm-kernel On Thu, 23 Jan 2014, Daniel Lezcano wrote: > On 01/23/2014 08:12 AM, Yijing Wang wrote: > > Currently, clocksource_register() and __clocksource_register_scale() > > functions always return 0, it's pointless, make functions void. > > And remove the dead code that check the clocksource_register_hz() > > return value. > > > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> > > Well, do we really want to change all these files to not take care of a return > value ? What about is we have to check it again later ? > > I would recommend to investigate __clocksource_register_scale and the > underneath functions if there is not an error to be returned in the call stack > somewhere which is ignored today. > > The same applies for clocksource_register. There is really no point in making it fail. It's so low level that anything more than a proper printk/BUG/WARN is overkill. Thanks, tglx ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-02-10 1:13 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-23 7:12 [PATCH 2/2] clocksource: Make clocksource register functions void Yijing Wang 2014-01-23 7:40 ` Hans-Christian Egtvedt 2014-01-23 7:45 ` Tony Prisk 2014-01-23 7:58 ` Geert Uytterhoeven 2014-01-23 8:04 ` Tony Prisk 2014-01-23 8:17 ` Yijing Wang 2014-01-23 11:40 ` David Laight 2014-02-05 20:40 ` Thomas Gleixner 2014-02-10 1:13 ` Yijing Wang 2014-01-23 8:40 ` Daniel Lezcano 2014-01-23 9:01 ` Yijing Wang 2014-02-05 20:39 ` Thomas Gleixner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).