Re: [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 02, 2015 at 05:36:33PM +0000, Mark Rutland wrote:
> From: Catalin Marinas <catalin.marinas@xxxxxxx>
> 
> 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 <catalin.marinas@xxxxxxx>
> Tested-by: Yingjoe Chen <yingjoe.chen@xxxxxxxxxxxx>
> Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> Fixes: 0b46b8a718c6 ("clocksource: arch_timer: Fix code to use physical timers when requested")
> Cc: Ian Campbell <ijc@xxxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx # 3.18.x
> Signed-off-by: Mark Rutland <mark.rutland@xxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]