linux-stable/drivers/clocksource
Laurent Pinchart f1ebe1e47e clocksource: sh_cmt: Set cpumask to cpu_possible_mask
The CMT is a global timer not restricted to a single CPU. It has a lower
rating than the TMU or ARM architected timer, but is still useful on
systems where the other timers are stopped during CPU sleep.

When multiple timers are available the timers core selects which timer
to use based on timer ratings.

On SMP systems where timer broadcasting is required, one dummy timer is
instantiated per CPU with a rating of 100. On those systems the CMT
timer has a rating of 80, which makes the dummy timer selected by
default on all CPUs. The CMT is then available, and will be used as a
broadcast timer.

On UP systems no dummy timer is instantiated. The CMT timer has a rating
of 125 on those systems and is used directly as a clock event device for
CPU0 without broadcasting.

The CMT rating shouldn't depend on whether we boot a UP or SMP system.
We can't raise the CMT rating to 125 on SMP systems. This would select
CMT as the clock event device for CPU0 as its rating is higher than the
dummy timer rating, and would leave the system without a broadcast
timer. We could instead lower the rating to 80 on all systems, but that
wouldn't reflect reality as ratings between 1 and 99 are documented as
"unfit for real use".

We should raise the rating above 99 and still have the CMT selected as a
broadcast timer. This can be done by changing the cpumask from
cpumask_of(0) to cpu_possible_mask. In that case the timer selection
logic will prefer the previously probed and already selected dummy timer
for all CPUs based on the fact that already selected per-cpu timers are
preferred over new global timers, regardless of their respective
ratings. This also better reflects reality, as the CMT is not tied to
the boot CPU.

Ideally the timer selection logic should realize that the CMT needs to
be used as a broadcast timer on SMP systems as no other broadcast timer
is available, regardless of the cpumask and rating.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
2014-04-16 12:03:12 +02:00
..
acpi_pm.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
arm_arch_timer.c clocksource: arch_timer: Set dynamic irq affinity on mmio clockevent 2014-03-11 23:04:39 +01:00
arm_global_timer.c clocksource: arm_global_timer: Switch to sched_clock_register() 2013-12-11 11:40:23 +01:00
bcm2835_timer.c clocksource: bcm2835: Switch to sched_clock_register() 2013-07-30 11:24:51 -07:00
bcm_kona_timer.c clocksource: Kona: Print warning rather than panic 2014-02-06 16:01:40 +01:00
cadence_ttc_timer.c clocksource/cadence_ttc: Overhaul clocksource frequency adjustment 2014-03-11 23:10:03 +01:00
clksrc-dbx500-prcmu.c clocksource: dbx500-prcmu: Switch to sched_clock_register() 2013-07-30 11:24:52 -07:00
clksrc-of.c Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core 2014-01-14 14:33:29 +01:00
cs5535-clockevt.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
dummy_timer.c clocksource, dummy-timer: Fix CPU hotplug callback registration 2014-03-20 13:43:45 +01:00
dw_apb_timer.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
dw_apb_timer_of.c clocksource: dw_apb_timer_of: Fix support for dts binding "snps,dw-apb-timer" 2013-12-10 19:49:18 +01:00
em_sti.c clocksource: em_sti: convert to clk_prepare/unprepare 2013-10-22 22:36:24 +02:00
exynos_mct.c ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
i8253.c time: Kill xtime_lock, replacing it with jiffies_lock 2012-11-13 14:08:23 -05:00
Kconfig ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
Makefile ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
metag_generic.c clocksource+irqchip: delete __cpuinit usage from all related files 2013-07-14 19:36:57 -04:00
mmio.c clocksource: add common mmio clocksource 2011-05-23 18:04:51 +01:00
moxart_timer.c ARM: clocksource: moxart: Add bitops.h include 2013-08-01 01:13:34 +02:00
mxs_timer.c clocksource: mxs_timer: Switch to sched_clock_register() 2013-07-30 11:24:52 -07:00
nomadik-mtu.c ARM: SoC DT updates for 3.14 2014-01-23 18:45:38 -08:00
qcom-timer.c clocksource: qcom: split building of legacy vs multiplatform support 2014-02-06 16:20:41 -06:00
samsung_pwm_timer.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
scx200_hrt.c clocksource: scx200_hrt: Fix the build 2012-02-22 13:25:16 +01:00
sh_cmt.c clocksource: sh_cmt: Set cpumask to cpu_possible_mask 2014-04-16 12:03:12 +02:00
sh_mtu2.c Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core 2014-01-14 14:33:29 +01:00
sh_tmu.c Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core 2014-01-14 14:33:29 +01:00
sun4i_timer.c clocksource: sunxi: Add new compatibles 2014-03-11 23:04:46 +01:00
tcb_clksrc.c clocksource: tcb_clksrc: Remove IRQF_DISABLED 2013-10-03 16:28:40 +02:00
tegra20_timer.c clocksource: tegra: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:28 +01:00
time-armada-370-xp.c clocksource: armada-370-xp: Use atomic access for shared registers 2014-03-11 23:05:05 +01:00
time-efm32.c clocksource: Provide timekeeping for efm32 SoCs 2013-10-22 22:36:33 +02:00
time-orion.c clocksource: orion: Use atomic access for shared registers 2014-03-11 23:05:02 +01:00
timer-keystone.c clocksource: timer-keystone: Delete unnecessary variable 2014-03-11 23:05:00 +01:00
timer-marco.c clocksource: sirf/marco+prima2: drop usage of CLOCK_TICK_RATE 2013-12-20 11:41:34 +01:00
timer-prima2.c clocksource: sirf/marco+prima2: drop usage of CLOCK_TICK_RATE 2013-12-20 11:41:34 +01:00
timer-sun5i.c clocksource: Timer-sun5i: Switch to sched_clock_register() 2014-01-19 13:23:23 +01:00
timer-u300.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-04-05 13:20:43 -07:00
vf_pit_timer.c clocksource: vf_pit_timer: use complement for sched_clock reading 2014-03-06 11:34:14 +01:00
vt8500_timer.c clocksource: vt8500: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:28 +01:00
zevio-timer.c clocksource: Add TI-Nspire timer support 2013-06-06 17:23:13 +02:00