Re: [PATCH 1/2] clocksource/drivers/timer-ti-dm: Prepare to handle dra7 timer wrap issue
From: Tony Lindgren <tony@atomide.com>
Date: 2021-03-23 06:32:57
Also in:
linux-omap, lkml
* Daniel Lezcano [off-list ref] [210322 18:24]:
On 22/03/2021 17:33, Tony Lindgren wrote:quoted
Hi, * Daniel Lezcano [off-list ref] [210322 15:56]:quoted
On 04/03/2021 08:37, Tony Lindgren wrote:quoted
There is a timer wrap issue on dra7 for the ARM architected timer. In a typical clock configuration the timer fails to wrap after 388 days. To work around the issue, we need to use timer-ti-dm timers instead. Let's prepare for adding support for percpu timers by adding a common dmtimer_clkevt_init_common() and call it from dmtimer_clockevent_init(). This patch makes no intentional functional changes. Signed-off-by: Tony Lindgren <tony@atomide.com> ---[ ... ]quoted
@@ -575,33 +574,60 @@ static int __init dmtimer_clockevent_init(struct device_node *np) */ writel_relaxed(OMAP_TIMER_CTRL_POSTED, t->base + t->ifctrl); + if (dev->cpumask == cpu_possible_mask) + irqflags = IRQF_TIMER; + else + irqflags = IRQF_TIMER | IRQF_NOBALANCING;Can you explain the reasoning behind the test above ?In the per cpu case we assign one dmtimer per cpu, and we want the interrupt handling on the assigned CPU. In the per cpu case we have the cpu specified with dev->cpumask unlike for the normal clockevent case. In the per cpu dmtimer case the interrupt line is not wired per cpu though, so I don't think we want to add IRQF_PERCPU here.If it is per cpu, then the parameter will be cpumask_of(cpu). If there is one cpu, no balancing can happen and then the IRQF_NOBALANCING is not needed, neither this test and the irqflags, right?
Oh yeah you're right, none of that is needed. For the percpu case we already have irq_force_affinity() in omap_dmtimer_starting_cpu(). I'll update and send out v2 of these two patches. Thanks, Tony _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel