Tao Ren
4451d3f59f
clocksource/drivers/fttmr010: Fix set_next_event handler
...
Currently, the aspeed MATCH1 register is updated to <current_count -
cycles> in set_next_event handler, with the assumption that COUNT
register value is preserved when the timer is disabled and it continues
decrementing after the timer is enabled. But the assumption is wrong:
RELOAD register is loaded into COUNT register when the aspeed timer is
enabled, which means the next event may be delayed because timer
interrupt won't be generated until <0xFFFFFFFF - current_count +
cycles>.
The problem can be fixed by updating RELOAD register to <cycles>, and
COUNT register will be re-loaded when the timer is enabled and interrupt
is generated when COUNT register overflows.
The test result on Facebook Backpack-CMM BMC hardware (AST2500) shows
the issue is fixed: without the patch, usleep(100) suspends the process
for several milliseconds (and sometimes even over 40 milliseconds);
after applying the fix, usleep(100) takes averagely 240 microseconds to
return under the same workload level.
Signed-off-by: Tao Ren <taoren@fb.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Lei YU <mine260309@gmail.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
2018-09-24 06:13:31 +02:00
..
acpi_pm.c
arc_timer.c
clocksource/drivers/arc_timer: Add comments about locking while read GFRC
2018-05-18 22:59:40 +02:00
arm_arch_timer.c
clocksource/drivers/arm_arch_timer: Fix bogus cpu_all_mask usage
2018-08-02 14:55:52 +02:00
arm_global_timer.c
armv7m_systick.c
asm9260_timer.c
bcm2835_timer.c
locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE()
2017-10-25 11:01:08 +02:00
bcm_kona_timer.c
cadence_ttc_timer.c
Merge branch 'timers/urgent' into timers/core
2017-06-21 09:07:52 +02:00
clksrc-dbx500-prcmu.c
clksrc_st_lpc.c
clps711x-timer.c
cs5535-clockevt.c
clockevents/drivers/cs5535: Improve resilience to spurious interrupts
2017-10-20 13:41:52 +02:00
dummy_timer.c
dw_apb_timer.c
dw_apb_timer_of.c
em_sti.c
clocksource/drivers/em_sti: Fix error return codes in em_sti_probe()
2017-08-10 14:48:18 +02:00
exynos_mct.c
fsl_ftm_timer.c
clocksource/drivers/fsl_ftm_timer: Fix error return checking
2018-02-26 13:56:05 +01:00
h8300_timer8.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
h8300_timer16.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
h8300_tpu.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
i8253.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
jcore-pit.c
Kconfig
clocksource: new RISC-V SBI timer driver
2018-08-13 08:31:31 -07:00
Makefile
RISC-V Updates for the 4.19 Merge Window
2018-08-19 09:56:38 -07:00
meson6_timer.c
mips-gic-timer.c
clocksource/drivers/mips-gic-timer: Add pr_fmt and reword pr_* messages
2018-05-18 22:53:09 +02:00
mmio.c
mps2-timer.c
mxs_timer.c
clocksource/drivers/mxs_timer: Switch to SPDX identifier
2018-05-23 07:39:09 +02:00
nomadik-mtu.c
numachip.c
x86/numachip: Add const and __initconst to numachip2_clockevent
2017-09-25 09:36:15 +02:00
owl-timer.c
clocksource/drivers/owl: Add the S700 timer
2018-01-08 17:57:23 +01:00
pxa_timer.c
qcom-timer.c
renesas-ostm.c
riscv_timer.c
clocksource: new RISC-V SBI timer driver
2018-08-13 08:31:31 -07:00
rockchip_timer.c
clocksource/drivers/rockchip: pr_err() strings should end with newlines
2017-10-19 23:49:02 +02:00
samsung_pwm_timer.c
scx200_hrt.c
sh_cmt.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
sh_mtu2.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
sh_tmu.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
sun4i_timer.c
clocksource/drivers/sun4i: Switch to the timer-of common init
2017-06-26 18:32:04 +02:00
tango_xtal.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcb_clksrc.c
clocksource/drivers/tcb_clksrc: Fix clock speed message
2018-01-08 17:57:23 +01:00
tegra20_timer.c
Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-08-13 18:28:19 -07:00
time-armada-370-xp.c
time-efm32.c
time-lpc32xx.c
time-orion.c
time-pistachio.c
timer-atcpit100.c
clocksource/drivers: Set clockevent device cpumask to cpu_possible_mask
2018-07-26 11:26:30 +02:00
timer-atlas7.c
timer-atmel-pit.c
timer-atmel-st.c
timer-digicolor.c
timer-fttmr010.c
clocksource/drivers/fttmr010: Fix set_next_event handler
2018-09-24 06:13:31 +02:00
timer-imx-gpt.c
clocksource/drivers/timer-imx-gpt: Switch to SPDX identifier
2018-05-23 07:38:52 +02:00
timer-imx-tpm.c
clocksource/drivers/timer-imx-tpm: Switch to SPDX identifier
2018-05-23 07:39:01 +02:00
timer-integrator-ap.c
clocksource/integrator: Fix section mismatch warning
2017-09-18 09:37:33 +02:00
timer-keystone.c
clocksource/drivers: Set clockevent device cpumask to cpu_possible_mask
2018-07-26 11:26:30 +02:00
timer-mediatek.c
clocksource/drivers/timer-mediatek: Add support for system timer
2018-07-26 11:26:34 +02:00
timer-npcm7xx.c
clocksource/drivers/npcm: Add NPCM7xx timer driver
2018-03-30 22:44:09 +02:00
timer-nps.c
timer-of.c
clocksource/drivers/timer-of: Don't request the resource by name
2018-01-08 17:57:24 +01:00
timer-of.h
clocksource/drivers/timer-of: Store the device node pointer in 'struct timer_of'
2018-01-08 17:57:24 +01:00
timer-oxnas-rps.c
timer-prima2.c
timer-probe.c
clocksource: Convert to using %pOF instead of full_name
2017-08-31 15:56:17 +02:00
timer-sp.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
timer-sp804.c
ARM: timer-sp: Use of_clk_get_parent_count() instead of open coding
2018-05-02 08:32:57 -07:00
timer-sprd.c
clocksource/drivers/sprd: Register one always-on timer to compensate suspend time
2018-07-26 11:26:34 +02:00
timer-stm32.c
clocksource/drivers/stm32: Fix error return code
2018-06-12 23:54:01 +02:00
timer-sun5i.c
treewide/trivial: Remove ';;$' typo noise
2018-02-22 10:59:33 +01:00
timer-ti-32k.c
clocksource/drivers/ti-32k: Add CLOCK_SOURCE_SUSPEND_NONSTOP flag for non-am43 SoCs
2018-09-13 15:23:35 +02:00
timer-ti-dm.c
clocksource: timer-ti-dm: Check prescaler value
2018-02-28 13:41:30 -08:00
timer-u300.c
versatile.c
vf_pit_timer.c
vt8500_timer.c
zevio-timer.c
clocksource/drivers: Set clockevent device cpumask to cpu_possible_mask
2018-07-26 11:26:30 +02:00