2022-09-14 06:57:10

by Kunkun Jiang

[permalink] [raw]
Subject: [PATCH v3] clocksource/drivers/arm_arch_timer: Fix handling of ARM erratum 858921

The commit a38b71b0833e ("clocksource/drivers/arm_arch_timer:
Move system register timer programming over to CVAL") moves the
programming of the timers from the countdown timer (TVAL) over
to the comparator (CVAL). This makes it necessary to read the
counter when programming next event. However, the workaround of
Cortex-A73 erratum 858921 does not set the corresponding
set_next_event_phys and set_next_event_virt.

Add the appropriate hooks to apply the erratum mitigation when
programming the next timer event.

Fixes: a38b71b0833e ("clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL")
Signed-off-by: Kunkun Jiang <[email protected]>
Acked-by: Marc Zyngier <[email protected]>
---
drivers/clocksource/arm_arch_timer.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 9ab8221ee3c6..ff935efb6a88 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -473,6 +473,8 @@ static const struct arch_timer_erratum_workaround ool_workarounds[] = {
.desc = "ARM erratum 858921",
.read_cntpct_el0 = arm64_858921_read_cntpct_el0,
.read_cntvct_el0 = arm64_858921_read_cntvct_el0,
+ .set_next_event_phys = erratum_set_next_event_phys,
+ .set_next_event_virt = erratum_set_next_event_virt,
},
#endif
#ifdef CONFIG_SUN50I_ERRATUM_UNKNOWN1
--
2.27.0


2022-09-14 10:39:34

by Oliver Upton

[permalink] [raw]
Subject: Re: [PATCH v3] clocksource/drivers/arm_arch_timer: Fix handling of ARM erratum 858921

On Wed, Sep 14, 2022 at 02:14:24PM +0800, Kunkun Jiang wrote:
> The commit a38b71b0833e ("clocksource/drivers/arm_arch_timer:
> Move system register timer programming over to CVAL") moves the
> programming of the timers from the countdown timer (TVAL) over
> to the comparator (CVAL). This makes it necessary to read the
> counter when programming next event. However, the workaround of
> Cortex-A73 erratum 858921 does not set the corresponding
> set_next_event_phys and set_next_event_virt.
>
> Add the appropriate hooks to apply the erratum mitigation when
> programming the next timer event.
>
> Fixes: a38b71b0833e ("clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL")
> Signed-off-by: Kunkun Jiang <[email protected]>
> Acked-by: Marc Zyngier <[email protected]>

Reviewed-by: Oliver Upton <[email protected]>

--
Thanks,
Oliver

2022-09-20 09:25:13

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH v3] clocksource/drivers/arm_arch_timer: Fix handling of ARM erratum 858921

On 14/09/2022 12:18, Oliver Upton wrote:
> On Wed, Sep 14, 2022 at 02:14:24PM +0800, Kunkun Jiang wrote:
>> The commit a38b71b0833e ("clocksource/drivers/arm_arch_timer:
>> Move system register timer programming over to CVAL") moves the
>> programming of the timers from the countdown timer (TVAL) over
>> to the comparator (CVAL). This makes it necessary to read the
>> counter when programming next event. However, the workaround of
>> Cortex-A73 erratum 858921 does not set the corresponding
>> set_next_event_phys and set_next_event_virt.
>>
>> Add the appropriate hooks to apply the erratum mitigation when
>> programming the next timer event.
>>
>> Fixes: a38b71b0833e ("clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL")
>> Signed-off-by: Kunkun Jiang <[email protected]>
>> Acked-by: Marc Zyngier <[email protected]>
>
> Reviewed-by: Oliver Upton <[email protected]>

Applied, thanks


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

Subject: [tip: timers/core] clocksource/drivers/arm_arch_timer: Fix handling of ARM erratum 858921

The following commit has been merged into the timers/core branch of tip:

Commit-ID: 6c3b62d93e195f78c1437c8fa7581e9b2f00886e
Gitweb: https://git.kernel.org/tip/6c3b62d93e195f78c1437c8fa7581e9b2f00886e
Author: Kunkun Jiang <[email protected]>
AuthorDate: Wed, 14 Sep 2022 14:14:24 +08:00
Committer: Daniel Lezcano <[email protected]>
CommitterDate: Tue, 20 Sep 2022 10:49:45 +02:00

clocksource/drivers/arm_arch_timer: Fix handling of ARM erratum 858921

The commit a38b71b0833e ("clocksource/drivers/arm_arch_timer:
Move system register timer programming over to CVAL") moves the
programming of the timers from the countdown timer (TVAL) over
to the comparator (CVAL). This makes it necessary to read the
counter when programming next event. However, the workaround of
Cortex-A73 erratum 858921 does not set the corresponding
set_next_event_phys and set_next_event_virt.

Add the appropriate hooks to apply the erratum mitigation when
programming the next timer event.

Fixes: a38b71b0833e ("clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL")
Signed-off-by: Kunkun Jiang <[email protected]>
Acked-by: Marc Zyngier <[email protected]>
Reviewed-by: Oliver Upton <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Daniel Lezcano <[email protected]>
---
drivers/clocksource/arm_arch_timer.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 9ab8221..ff935ef 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -473,6 +473,8 @@ static const struct arch_timer_erratum_workaround ool_workarounds[] = {
.desc = "ARM erratum 858921",
.read_cntpct_el0 = arm64_858921_read_cntpct_el0,
.read_cntvct_el0 = arm64_858921_read_cntvct_el0,
+ .set_next_event_phys = erratum_set_next_event_phys,
+ .set_next_event_virt = erratum_set_next_event_virt,
},
#endif
#ifdef CONFIG_SUN50I_ERRATUM_UNKNOWN1