[RFC/NOT FOR MERGING] HACK: add global/private timers for A9

Stephen Boyd
2015-06-03T21:41:39Z

On 06/03/2015 02:28 PM, Felipe Balbi wrote:
> On Wed, Jun 03, 2015 at 04:04:55PM -0500, Felipe Balbi wrote:
>> On Wed, Jun 03, 2015 at 10:55:27PM +0200, Arnd Bergmann wrote:
>>> On Wednesday 03 June 2015 15:32:45 Felipe Balbi wrote:
>>>> Hi Tony and Russell,
>>>>
>>>> AM43xx, even though it's a single processor A9, it still has TWD and global
>>>> timer. I was doing some profiling with RT v4.0 and latency is 3.5x lower just
>>>> by switching from gptimer to twd/global.
>>>>
>>>> The only problem is that currently, is_smp() check prevents me from using twd
>>>> with AM43xx (that's why it's commented below, for testing purposes).
>>>>
>>>> In the hopes that we can start a, hopefully, small thread around the subject,
>>>> I'm sending this HACK which I used to get TWD and global timer enabled so I
>>>> could measure latencies with cyclictest.
>>>>
>>>> Is it so that TWD shouldn't be available on UP integrations of ARM's Cortex-A
>>>> processors ?
>>>>
>>>>
>>> I wondered about this recently when looking at something unrelated
>>> and noticed that the check had been introduced as part of
>>> 904464b91eca8 ("ARM: 7655/1: smp_twd: make twd_local_timer_of_register()
>>> no-op for nosmp").
>>>
>>> I suspect this was just the wrong fix at the time, and that the
>>> real culprit is either alloc_percpu() or request_percpu_irq()
>>> getting called too early on a machine without SMP support.
>>>
>>> Possibly the problem is already resolved independently, if you
>>> didn't run into it.
>> no, no splats, nothing at all. See [1]
>>
>> [1] http://hastebin.com/helekubutu
> Adding Shawn
>

Mason was also interested in doing this. See [2]. From what I could tell
back then, commit 904464b91eca8 was working around the local timer APIs
that no longer exist.

[2] http://thread.gmane.org/gmane.linux.ports.arm.kernel/389931/focus=392348

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project