zephyr/drivers/timer
Jun Lin 803a4ff620 driver: timer: npcx: fix the racing condition when getting current uptime
In npcx_itim_evt_isr, it updates the cyc_sys_announced variable and
then calls sys_clock_announce() to update the kernel curr_tick variable.
If an ISR handler with higher priority preempts the timer ISR after the
sys_clock_announce is updated and before the sys_clock_announce() is
called, it will read the wrong time when calling k_uptime_get() because
the cyc_sys_announced and the curr_tick are not synchronized.
The commit fixes the problem by raising the timer's interrupt priority
to the highest one (i.e. 1 in npcx's configuration).

This commit also moves the computation of the delta cycle inside the
spinlock in sys_clock_elapsed() to prevent another potential racing
condition.

Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
Signed-off-by: Wealian Liao <WHLIAO@nuvoton.com>
2022-01-04 20:46:26 -05:00
..
altera_avalon_timer_hal.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
apic_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
apic_tsc.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
arcv2_timer0.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
arm_arch_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
cavs_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
cc13x2_cc26x2_rtc_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
CMakeLists.txt drivers: mcux_gpt_timer: Added GPT timer for HW clock 2021-12-13 20:13:21 -05:00
cortex_m_systick.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
esp32c3_sys_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
hpet.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
ite_it8xxx2_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
Kconfig drivers: mcux_gpt_timer: Added GPT timer for HW clock 2021-12-13 20:13:21 -05:00
Kconfig.altera_avalon drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.apic drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.arcv2 drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.arm_arch drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.cavs drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.cc13x2_cc26x2_rtc drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.cortex_m_systick drivers: timer: cortex_m_systick: improve ISR installation 2021-12-04 07:34:53 -05:00
Kconfig.esp32c3_sys drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.hpet drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.ite_it8xxx2 drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.leon_gptimer drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.litex drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.mchp_xec_rtos drivers: timer: improve sys_timer_disable usage 2021-12-04 07:34:53 -05:00
Kconfig.mcux_gpt drivers: mcux_gpt_timer: Added GPT timer for HW clock 2021-12-13 20:13:21 -05:00
Kconfig.mcux_lptmr drivers: timer: improve sys_timer_disable usage 2021-12-04 07:34:53 -05:00
Kconfig.mcux_os drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.native_posix drivers: timer: improve sys_timer_disable usage 2021-12-04 07:34:53 -05:00
Kconfig.npcx_itim drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.nrf_rtc drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.rcar_cmt drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.riscv_machine riscv_machine_timer: Enable to use divided clock for the machine timer 2021-12-20 17:51:30 +01:00
Kconfig.rv32m1_lptmr drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.sam0_rtc drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.stm32_lptim kconfig: drivers: experimental settings now uses select EXPERIMENTAL 2021-10-25 10:46:48 +02:00
Kconfig.xlnx_psttc drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.xtensa drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
leon_gptimer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
litex_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
mchp_xec_rtos_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
mcux_gpt_timer.c drivers: mcux_gpt_timer: Added GPT timer for HW clock 2021-12-13 20:13:21 -05:00
mcux_lptmr_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
mcux_os_timer.c drivers: timer: fix MISRA 5.7 violation 2021-12-04 07:34:53 -05:00
native_posix_timer.c drivers: timer: improve sys_timer_disable usage 2021-12-04 07:34:53 -05:00
npcx_itim_timer.c driver: timer: npcx: fix the racing condition when getting current uptime 2022-01-04 20:46:26 -05:00
nrf_rtc_timer.c drivers: timer: extend nrf_rtc_timer 2022-01-04 17:44:32 +01:00
rcar_cmt_timer.c drivers: timer: fix MISRA 5.7 violation 2021-12-04 07:34:53 -05:00
riscv_machine_timer.c riscv_machine_timer: Enable to use divided clock for the machine timer 2021-12-20 17:51:30 +01:00
rv32m1_lptmr_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
sam0_rtc_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
stm32_lptim_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
sys_clock_init.c drivers: timer: cortex_m_systick: improve ISR installation 2021-12-04 07:34:53 -05:00
xlnx_psttc_timer_priv.h
xlnx_psttc_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00
xtensa_sys_timer.c drivers: timer: move initialization setup to drivers 2021-12-04 07:34:53 -05:00