On Mon, Feb 02, 2015 at 05:36:33PM +0000, Mark Rutland wrote:
> From: Catalin Marinas <[email protected]>
> 
> Commit 0b46b8a718c6 got back-ported to stable, but the later fix in commit
> d6ad36913083d683 didn't as it wasn't appropriately Cc'd. This has left arm64
> broken in stable when booted at EL2:
> 
>       BUG: failure at 
> ./arch/arm64/include/asm/arch_timer.h:112/arch_counter_get_cntpct()!
>

Looks like the 3.16 kernel is also affected, as it includes a backport
of commit 0b46b8a718c6.  I'll queue this for the 3.16 kernel as well.

Cheers,
--
Luís

> Mark.
> 
> ---->8----
> Commit d6ad36913083d683aad4e02e53580c995f1a6ede upstream.
> 
> Commit 0b46b8a718c6 (clocksource: arch_timer: Fix code to use physical
> timers when requested) introduces the use of physical counters in the
> ARM architected timer driver. However, he arm64 kernel uses CNTVCT in
> VDSO. When booting in EL2, the kernel switches to the physical timers to
> make things easier for KVM but it continues to use the virtual counter
> both in user and kernel. While in such scenario CNTVCT == CNTPCT (since
> CNTVOFF is initialised by the kernel to 0), we want to spot firmware
> bugs corrupting CNTVOFF early (which would affect CNTVCT).
> 
> Signed-off-by: Catalin Marinas <[email protected]>
> Tested-by: Yingjoe Chen <[email protected]>
> Cc: Daniel Lezcano <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> Fixes: 0b46b8a718c6 ("clocksource: arch_timer: Fix code to use physical 
> timers when requested")
> Cc: Ian Campbell <[email protected]>
> Cc: [email protected] # 3.18.x
> Signed-off-by: Mark Rutland <[email protected]>
> ---
>  drivers/clocksource/arm_arch_timer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clocksource/arm_arch_timer.c 
> b/drivers/clocksource/arm_arch_timer.c
> index 1fa2af9..84b4c8b 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -462,7 +462,7 @@ static void __init arch_counter_register(unsigned type)
>  
>       /* Register the CP15 based counter if we have one */
>       if (type & ARCH_CP15_TIMER) {
> -             if (arch_timer_use_virtual)
> +             if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual)
>                       arch_timer_read_counter = arch_counter_get_cntvct;
>               else
>                       arch_timer_read_counter = arch_counter_get_cntpct;
> -- 
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to