arm64: arch_timer: Allow an workaround descriptor to disable compat vdso
As we are about to disable the vdso for compat tasks in some circumstances, let's allow a workaround descriptor to express exactly that. Signed-off-by: Marc Zyngier <maz@kernel.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20200706163802.1836732-3-maz@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
97884ca8c2
commit
c1fbec4ac0
|
@ -58,6 +58,7 @@ struct arch_timer_erratum_workaround {
|
||||||
u64 (*read_cntvct_el0)(void);
|
u64 (*read_cntvct_el0)(void);
|
||||||
int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
|
int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
|
||||||
int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
|
int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
|
||||||
|
bool disable_compat_vdso;
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
|
DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
|
||||||
|
|
|
@ -566,6 +566,9 @@ void arch_timer_enable_workaround(const struct arch_timer_erratum_workaround *wa
|
||||||
if (wa->read_cntvct_el0) {
|
if (wa->read_cntvct_el0) {
|
||||||
clocksource_counter.vdso_clock_mode = VDSO_CLOCKMODE_NONE;
|
clocksource_counter.vdso_clock_mode = VDSO_CLOCKMODE_NONE;
|
||||||
vdso_default = VDSO_CLOCKMODE_NONE;
|
vdso_default = VDSO_CLOCKMODE_NONE;
|
||||||
|
} else if (wa->disable_compat_vdso && vdso_default != VDSO_CLOCKMODE_NONE) {
|
||||||
|
vdso_default = VDSO_CLOCKMODE_ARCHTIMER_NOCOMPAT;
|
||||||
|
clocksource_counter.vdso_clock_mode = vdso_default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue