linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ARM: virt: Relax arch timer version check during early boot
@ 2020-01-20 13:38 Vladimir Murzin
  2020-01-20 14:01 ` Marc Zyngier
  0 siblings, 1 reply; 3+ messages in thread
From: Vladimir Murzin @ 2020-01-20 13:38 UTC (permalink / raw)
  To: linux-arm-kernel; +Cc: maz, kvmarm

Updates to the Generic Timer architecture allow ID_PFR1.GenTimer to
have values other than 0 or 1 while still preserving backward
compatibility. At the moment, Linux is quite strict in the way it
handles this field at early boot and will not configure arch timer if
it doesn't find the value 1.

Since here use ubfx for arch timer version extraction (hyb-stub build
with -march=armv7-a, so it is safe)

To help backports (even though the code was correct at the time of writing)
Fixes: 8ec58be9f3ff ("ARM: virt: arch_timers: enable access to physical timers")
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
---

Changelog:

    v1 -> v2
       - Clarify that backward compatibility is preserved (per Marc)

 arch/arm/kernel/hyp-stub.S | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S
index ae50203..6607fa8 100644
--- a/arch/arm/kernel/hyp-stub.S
+++ b/arch/arm/kernel/hyp-stub.S
@@ -146,10 +146,9 @@ ARM_BE8(orr	r7, r7, #(1 << 25))     @ HSCTLR.EE
 #if !defined(ZIMAGE) && defined(CONFIG_ARM_ARCH_TIMER)
 	@ make CNTP_* and CNTPCT accessible from PL1
 	mrc	p15, 0, r7, c0, c1, 1	@ ID_PFR1
-	lsr	r7, #16
-	and	r7, #0xf
-	cmp	r7, #1
-	bne	1f
+	ubfx	r7, r7, #16, #4
+	teq	r7, #0
+	beq	1f
 	mrc	p15, 4, r7, c14, c1, 0	@ CNTHCTL
 	orr	r7, r7, #3		@ PL1PCEN | PL1PCTEN
 	mcr	p15, 4, r7, c14, c1, 0	@ CNTHCTL
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ARM: virt: Relax arch timer version check during early boot
  2020-01-20 13:38 [PATCH v2] ARM: virt: Relax arch timer version check during early boot Vladimir Murzin
@ 2020-01-20 14:01 ` Marc Zyngier
  2020-01-20 14:09   ` Vladimir Murzin
  0 siblings, 1 reply; 3+ messages in thread
From: Marc Zyngier @ 2020-01-20 14:01 UTC (permalink / raw)
  To: Vladimir Murzin; +Cc: kvmarm, linux-arm-kernel

On 2020-01-20 13:38, Vladimir Murzin wrote:
> Updates to the Generic Timer architecture allow ID_PFR1.GenTimer to
> have values other than 0 or 1 while still preserving backward
> compatibility. At the moment, Linux is quite strict in the way it
> handles this field at early boot and will not configure arch timer if
> it doesn't find the value 1.
> 
> Since here use ubfx for arch timer version extraction (hyb-stub build
> with -march=armv7-a, so it is safe)
> 
> To help backports (even though the code was correct at the time of 
> writing)
> Fixes: 8ec58be9f3ff ("ARM: virt: arch_timers: enable access to physical 
> timers")
> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>

Acked-by: Marc Zyngier <maz@kernel.org>

Feel free to put it into Russell's patch system.

Thanks,

         M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ARM: virt: Relax arch timer version check during early boot
  2020-01-20 14:01 ` Marc Zyngier
@ 2020-01-20 14:09   ` Vladimir Murzin
  0 siblings, 0 replies; 3+ messages in thread
From: Vladimir Murzin @ 2020-01-20 14:09 UTC (permalink / raw)
  To: Marc Zyngier; +Cc: kvmarm, linux-arm-kernel

On 1/20/20 2:01 PM, Marc Zyngier wrote:
> On 2020-01-20 13:38, Vladimir Murzin wrote:
>> Updates to the Generic Timer architecture allow ID_PFR1.GenTimer to
>> have values other than 0 or 1 while still preserving backward
>> compatibility. At the moment, Linux is quite strict in the way it
>> handles this field at early boot and will not configure arch timer if
>> it doesn't find the value 1.
>>
>> Since here use ubfx for arch timer version extraction (hyb-stub build
>> with -march=armv7-a, so it is safe)
>>
>> To help backports (even though the code was correct at the time of writing)
>> Fixes: 8ec58be9f3ff ("ARM: virt: arch_timers: enable access to physical timers")
>> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
> 
> Acked-by: Marc Zyngier <maz@kernel.org>
> 
> Feel free to put it into Russell's patch system.

Patch has been accepted as patch 8955/1

Thanks!

Vladimir

> 
> Thanks,
> 
>         M.


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-01-20 14:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-20 13:38 [PATCH v2] ARM: virt: Relax arch timer version check during early boot Vladimir Murzin
2020-01-20 14:01 ` Marc Zyngier
2020-01-20 14:09   ` Vladimir Murzin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).