From: Christoffer Dall <hidden> Date: 2014-12-28 14:20:34
Commit 0b46b8a718c6e ("clocksource: arch_timer: Fix code to...") fixes
timer issues with certain ARMv7 platforms, but unfortunately breaks
arm64 platforms with hyp mode (EL2) enabled.
The commit only sets arch_timer_use_virtual to false under CONFIG_ARM,
but forgets that the config variable is also set in other code paths
(actually, right underneath the check in the patch) with detrimental
consequences as we've now introduced a direct early call to BUG() on
practically all arm64 platforms.
One could argue that this code could be refactored to use different
variables for checking which *timer* to use and which *counter* to use,
which seems to be the desired difference between ARM and arm64 in this
case, but this approach fixes an urgent issue for now.
Cc: Sonny Rao <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Daniel Lezcano <redacted>
Cc: Olof Johansson <redacted>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <redacted>
Cc: Yingjoe Chen <redacted>
Signed-off-by: Christoffer Dall <redacted>
---
This was apparently already discovered by Yingjoe Chen in this thread
https://lkml.org/lkml/2014/11/24/41 and Catalin recommended a similar
fix.
drivers/clocksource/arm_arch_timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -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;elsearch_timer_read_counter=arch_counter_get_cntpct;
From: Marc Zyngier <hidden> Date: 2014-12-28 21:46:34
On 2014-12-28 14:20, Christoffer Dall wrote:
Commit 0b46b8a718c6e ("clocksource: arch_timer: Fix code to...")
fixes
timer issues with certain ARMv7 platforms, but unfortunately breaks
arm64 platforms with hyp mode (EL2) enabled.
The commit only sets arch_timer_use_virtual to false under
CONFIG_ARM,
but forgets that the config variable is also set in other code paths
(actually, right underneath the check in the patch) with detrimental
consequences as we've now introduced a direct early call to BUG() on
practically all arm64 platforms.
One could argue that this code could be refactored to use different
variables for checking which *timer* to use and which *counter* to
use,
which seems to be the desired difference between ARM and arm64 in
this
case, but this approach fixes an urgent issue for now.
Cc: Sonny Rao <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Daniel Lezcano <redacted>
Cc: Olof Johansson <redacted>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <redacted>
Cc: Yingjoe Chen <redacted>
Signed-off-by: Christoffer Dall <redacted>
---
This was apparently already discovered by Yingjoe Chen in this thread
https://lkml.org/lkml/2014/11/24/41 and Catalin recommended a similar
fix.
I'm increasingly worried about the time it takes to get such critical
fixes into the tree (arm64 is *dead* without it).
What is holding this patch which, as far as I remember, has been posted
by Catalin almost three weeks ago?
Daniel?
M.
--
Fast, cheap, reliable. Pick two.
From: Christoffer Dall <hidden> Date: 2014-12-29 08:35:03
On Sun, Dec 28, 2014 at 09:46:20PM +0000, Marc Zyngier wrote:
On 2014-12-28 14:20, Christoffer Dall wrote:
quoted
Commit 0b46b8a718c6e ("clocksource: arch_timer: Fix code to...")
fixes
timer issues with certain ARMv7 platforms, but unfortunately breaks
arm64 platforms with hyp mode (EL2) enabled.
The commit only sets arch_timer_use_virtual to false under
CONFIG_ARM,
but forgets that the config variable is also set in other code paths
(actually, right underneath the check in the patch) with detrimental
consequences as we've now introduced a direct early call to BUG() on
practically all arm64 platforms.
One could argue that this code could be refactored to use different
variables for checking which *timer* to use and which *counter* to
use,
which seems to be the desired difference between ARM and arm64 in
this
case, but this approach fixes an urgent issue for now.
Cc: Sonny Rao <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Daniel Lezcano <redacted>
Cc: Olof Johansson <redacted>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <redacted>
Cc: Yingjoe Chen <redacted>
Signed-off-by: Christoffer Dall <redacted>
---
This was apparently already discovered by Yingjoe Chen in this thread
https://lkml.org/lkml/2014/11/24/41 and Catalin recommended a similar
fix.
I'm increasingly worried about the time it takes to get such critical
fixes into the tree (arm64 is *dead* without it).
What is holding this patch which, as far as I remember, has been posted
by Catalin almost three weeks ago?
I didn't find that since I didn't think I'd have to go back that long on
lakml for something that breaks boot of an entire architecture. Sorry
for the confusion of a second patch, but fwiw, I now spent another few
hours bisecting this, so I would really like to see this fix go into
mainline ASAP as well to save others the trouble.
Thanks,
-Christoffer
From: Mark Rutland <mark.rutland@arm.com> Date: 2014-12-29 19:14:41
[Adding Arnd]
On Mon, Dec 29, 2014 at 08:35:09AM +0000, Christoffer Dall wrote:
On Sun, Dec 28, 2014 at 09:46:20PM +0000, Marc Zyngier wrote:
quoted
On 2014-12-28 14:20, Christoffer Dall wrote:
quoted
Commit 0b46b8a718c6e ("clocksource: arch_timer: Fix code to...")
fixes
timer issues with certain ARMv7 platforms, but unfortunately breaks
arm64 platforms with hyp mode (EL2) enabled.
The commit only sets arch_timer_use_virtual to false under
CONFIG_ARM,
but forgets that the config variable is also set in other code paths
(actually, right underneath the check in the patch) with detrimental
consequences as we've now introduced a direct early call to BUG() on
practically all arm64 platforms.
One could argue that this code could be refactored to use different
variables for checking which *timer* to use and which *counter* to
use,
which seems to be the desired difference between ARM and arm64 in
this
case, but this approach fixes an urgent issue for now.
Cc: Sonny Rao <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Daniel Lezcano <redacted>
Cc: Olof Johansson <redacted>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <redacted>
Cc: Yingjoe Chen <redacted>
Signed-off-by: Christoffer Dall <redacted>
---
This was apparently already discovered by Yingjoe Chen in this thread
https://lkml.org/lkml/2014/11/24/41 and Catalin recommended a similar
fix.
I'm increasingly worried about the time it takes to get such critical
fixes into the tree (arm64 is *dead* without it).
What is holding this patch which, as far as I remember, has been posted
by Catalin almost three weeks ago?
I didn't find that since I didn't think I'd have to go back that long on
lakml for something that breaks boot of an entire architecture. Sorry
for the confusion of a second patch, but fwiw, I now spent another few
hours bisecting this, so I would really like to see this fix go into
mainline ASAP as well to save others the trouble.
From: Daniel Lezcano <hidden> Date: 2014-12-29 20:54:38
On 12/29/2014 08:13 PM, Mark Rutland wrote:
[Adding Arnd]
On Mon, Dec 29, 2014 at 08:35:09AM +0000, Christoffer Dall wrote:
quoted
On Sun, Dec 28, 2014 at 09:46:20PM +0000, Marc Zyngier wrote:
quoted
On 2014-12-28 14:20, Christoffer Dall wrote:
quoted
Commit 0b46b8a718c6e ("clocksource: arch_timer: Fix code to...")
fixes
timer issues with certain ARMv7 platforms, but unfortunately breaks
arm64 platforms with hyp mode (EL2) enabled.
The commit only sets arch_timer_use_virtual to false under
CONFIG_ARM,
but forgets that the config variable is also set in other code paths
(actually, right underneath the check in the patch) with detrimental
consequences as we've now introduced a direct early call to BUG() on
practically all arm64 platforms.
One could argue that this code could be refactored to use different
variables for checking which *timer* to use and which *counter* to
use,
which seems to be the desired difference between ARM and arm64 in
this
case, but this approach fixes an urgent issue for now.
Cc: Sonny Rao <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Daniel Lezcano <redacted>
Cc: Olof Johansson <redacted>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <redacted>
Cc: Yingjoe Chen <redacted>
Signed-off-by: Christoffer Dall <redacted>
---
This was apparently already discovered by Yingjoe Chen in this thread
https://lkml.org/lkml/2014/11/24/41 and Catalin recommended a similar
fix.
I'm increasingly worried about the time it takes to get such critical
fixes into the tree (arm64 is *dead* without it).
What is holding this patch which, as far as I remember, has been posted
by Catalin almost three weeks ago?
I didn't find that since I didn't think I'd have to go back that long on
lakml for something that breaks boot of an entire architecture. Sorry
for the confusion of a second patch, but fwiw, I now spent another few
hours bisecting this, so I would really like to see this fix go into
mainline ASAP as well to save others the trouble.
Last I knew, Arnd was going to take the fix [1], which has been in
arm-soc's for-next and fixes branches for almost two weeks now. It
didn't make it into the last pull req due to some confusion over who was
going to take it.
On Monday 29 December 2014 21:54:33 Daniel Lezcano wrote:
On 12/29/2014 08:13 PM, Mark Rutland wrote:
quoted
On Mon, Dec 29, 2014 at 08:35:09AM +0000, Christoffer Dall wrote:
quoted
On Sun, Dec 28, 2014 at 09:46:20PM +0000, Marc Zyngier wrote:
quoted
What is holding this patch which, as far as I remember, has been posted
by Catalin almost three weeks ago?
I didn't find that since I didn't think I'd have to go back that long on
lakml for something that breaks boot of an entire architecture. Sorry
for the confusion of a second patch, but fwiw, I now spent another few
hours bisecting this, so I would really like to see this fix go into
mainline ASAP as well to save others the trouble.
Last I knew, Arnd was going to take the fix [1], which has been in
arm-soc's for-next and fixes branches for almost two weeks now. It
didn't make it into the last pull req due to some confusion over who was
going to take it.
I asked arm-soc team to take the fix because it was depending on a patch
which was already in their tree [1].
Sorry for dropping the ball on this, I've send out a pull request to Linus
now.
Arnd