linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64
@ 2014-12-10 11:02 Catalin Marinas
  2014-12-10 11:04 ` Daniel Lezcano
  0 siblings, 1 reply; 5+ messages in thread
From: Catalin Marinas @ 2014-12-10 11:02 UTC (permalink / raw)
  To: linux-arm-kernel

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@arm.com>
Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
---

Daniel,

Do you plan to take this patch and push into mainline (ideally before -rc1)?
Otherwise we can push it via the arm64 tree.

Thanks,

Catalin


 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 6a79fc4f900c..095c1774592c 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;

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

* [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64
  2014-12-10 11:02 [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64 Catalin Marinas
@ 2014-12-10 11:04 ` Daniel Lezcano
  2014-12-10 11:23   ` Catalin Marinas
  2014-12-15 10:58   ` Mark Rutland
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel Lezcano @ 2014-12-10 11:04 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/10/2014 12:02 PM, Catalin Marinas wrote:
> 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@arm.com>
> Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>
> Daniel,
>
> Do you plan to take this patch and push into mainline (ideally before -rc1)?
> Otherwise we can push it via the arm64 tree.

I will take care of it.

Thanks !

   -- Daniel

>
> Thanks,
>
> Catalin
>
>
>   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 6a79fc4f900c..095c1774592c 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;
>


-- 
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

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

* [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64
  2014-12-10 11:04 ` Daniel Lezcano
@ 2014-12-10 11:23   ` Catalin Marinas
  2014-12-15 10:58   ` Mark Rutland
  1 sibling, 0 replies; 5+ messages in thread
From: Catalin Marinas @ 2014-12-10 11:23 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Dec 10, 2014 at 11:04:38AM +0000, Daniel Lezcano wrote:
> On 12/10/2014 12:02 PM, Catalin Marinas wrote:
> > 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@arm.com>
> > Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> > ---
> >
> > Daniel,
> >
> > Do you plan to take this patch and push into mainline (ideally before -rc1)?
> > Otherwise we can push it via the arm64 tree.
> 
> I will take care of it.

Thanks.

-- 
Catalin

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

* [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64
  2014-12-10 11:04 ` Daniel Lezcano
  2014-12-10 11:23   ` Catalin Marinas
@ 2014-12-15 10:58   ` Mark Rutland
  2014-12-15 13:27     ` Daniel Lezcano
  1 sibling, 1 reply; 5+ messages in thread
From: Mark Rutland @ 2014-12-15 10:58 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Daniel,

On Wed, Dec 10, 2014 at 11:04:38AM +0000, Daniel Lezcano wrote:
> On 12/10/2014 12:02 PM, Catalin Marinas wrote:
> > 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@arm.com>
> > Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> > ---
> >
> > Daniel,
> >
> > Do you plan to take this patch and push into mainline (ideally before -rc1)?
> > Otherwise we can push it via the arm64 tree.
> 
> I will take care of it.
> 
> Thanks !
> 
>    -- Daniel

What's the state of this patch?

It doesn't seem to be in linux-next (next-20141215), which is failing to
boot for me due to hitting the BUG in the arm64 arch_counter_get_cntpct.

Thanks,
Mark.

> 
> >
> > Thanks,
> >
> > Catalin
> >
> >
> >   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 6a79fc4f900c..095c1774592c 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;
> >
> 
> 
> -- 
>   <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs
> 
> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64
  2014-12-15 10:58   ` Mark Rutland
@ 2014-12-15 13:27     ` Daniel Lezcano
  0 siblings, 0 replies; 5+ messages in thread
From: Daniel Lezcano @ 2014-12-15 13:27 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Olof, Arnd,

Do you mind to apply this patch ?

I was about to take care of it but it depends on the commit:

https://git.kernel.org/cgit/linux/kernel/git/arm/arm-soc.git/commit/drivers/clocksource?h=for-next&id=0b46b8a718c6e90910a1b1b0fe797be3c167e186

Thanks
   -- Daniel



On 12/15/2014 11:58 AM, Mark Rutland wrote:
> Hi Daniel,
>
> On Wed, Dec 10, 2014 at 11:04:38AM +0000, Daniel Lezcano wrote:
>> On 12/10/2014 12:02 PM, Catalin Marinas wrote:
>>> 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@arm.com>
>>> Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
>>> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
>>> ---
>>>
>>> Daniel,
>>>
>>> Do you plan to take this patch and push into mainline (ideally before -rc1)?
>>> Otherwise we can push it via the arm64 tree.
>>
>> I will take care of it.
>>
>> Thanks !
>>
>>     -- Daniel
>
> What's the state of this patch?
>
> It doesn't seem to be in linux-next (next-20141215), which is failing to
> boot for me due to hitting the BUG in the arm64 arch_counter_get_cntpct.
>
> Thanks,
> Mark.
>
>>
>>>
>>> Thanks,
>>>
>>> Catalin
>>>
>>>
>>>    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 6a79fc4f900c..095c1774592c 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;
>>>
>>
>>
>> --
>>    <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs
>>
>> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
>> <http://twitter.com/#!/linaroorg> Twitter |
>> <http://www.linaro.org/linaro-blog/> Blog
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

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

end of thread, other threads:[~2014-12-15 13:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-10 11:02 [PATCH] clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64 Catalin Marinas
2014-12-10 11:04 ` Daniel Lezcano
2014-12-10 11:23   ` Catalin Marinas
2014-12-15 10:58   ` Mark Rutland
2014-12-15 13:27     ` Daniel Lezcano

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).