Messages in this thread Patch in this message | | | From | Marc Zyngier <> | Subject | [PATCH 2/3] arm64: arch_timer: Allow an workaround descriptor to provide vdso_clock_mode | Date | Wed, 1 Jul 2020 17:18:23 +0100 |
| |
As we are about to disable the vdso for compat tasks in some circumstances, let's allow a workaround descriptor to provide the vdso_clock_mode that matches the platform.
Signed-off-by: Marc Zyngier <maz@kernel.org> --- arch/arm64/include/asm/arch_timer.h | 3 +++ drivers/clocksource/arm_arch_timer.c | 3 +++ 2 files changed, 6 insertions(+)
diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 7ae54d7d333a..fb8dfcbf9c01 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -18,6 +18,8 @@ #include <linux/smp.h> #include <linux/types.h> +#include <vdso/clocksource.h> + #include <clocksource/arm_arch_timer.h> #if IS_ENABLED(CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND) @@ -58,6 +60,7 @@ struct arch_timer_erratum_workaround { u64 (*read_cntvct_el0)(void); int (*set_next_event_phys)(unsigned long, struct clock_event_device *); int (*set_next_event_virt)(unsigned long, struct clock_event_device *); + enum vdso_clock_mode vdso_clock_mode; }; DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *, diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index ecf7b7db2d05..f828835c568f 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -566,6 +566,9 @@ void arch_timer_enable_workaround(const struct arch_timer_erratum_workaround *wa if (wa->read_cntvct_el0) { clocksource_counter.vdso_clock_mode = VDSO_CLOCKMODE_NONE; vdso_default = VDSO_CLOCKMODE_NONE; + } else { + clocksource_counter.vdso_clock_mode = wa->vdso_clock_mode; + vdso_default = wa->vdso_clock_mode; } } -- 2.27.0
| |