Subject: [RFC PATCH 2/2] clocksource: dw_apb: allow build for architectures other than arm

From: [email-masked] (John Stultz)
Date: Thu, 30 May 2013 09:11:17 -0700

On 05/29/2013 10:32 PM, Baruch Siach wrote:
> Hi John,
>
> On Tue, May 28, 2013 at 01:24:17PM -0700, John Stultz wrote:
>> On 05/26/2013 05:12 AM, Baruch Siach wrote:
>>>   static const struct of_device_id osctimer_ids[] __initconst = {
>>> @@ -124,3 +135,10 @@ void __init dw_apb_timer_init(void)
>>>   	init_sched_clock();
>>>   }
>>> +
>>> +#ifndef CONFIG_HAVE_SETUP_SCHED_CLOCK
>>> +unsigned long long notrace sched_clock()
>>> +{
>>> +	return read_sched_clock() * sched_clock_mult;
>>> +}
>>> +#endif
>> Also, can you try to condense the number of #ifndef
>> CONFIG_HAVE_SETUP_SCHED_CLOCK checks to one, and consolidate the
>> needed functions all in that one conditional?
> Thanks for your comments. I'll rework the patch and resubmit.
>
> I've just noticed that I have a bigger problem. read_sched_clock() returns
> u32, not u64. This means that in a rate of, say, 100MHz it will wrap around
> after a little more than 40 seconds. Would it make sense to put ARM's 32 bin
> sched_clock extension code (arch/arm/kernel/sched_clock.c) is a common place
> (maybe drivers/clocksource), and use that? There seems to be nothing ARM
> specific in this code, after all.

Yea, working out an actual generic sched_clock implementation is 
something I'd like to see done.

Though I'd really rather we not toss yet another chunk of infrastructure 
in the drivers/clocksource directory. Instead we should probably have a 
kernel/time/sched_clock.c.

Then its just the issue of tying that and the clocksource code together 
so you just register existing capable clocksources with a SCHED_CLOCK 
flag or via a different registration hook.

I don't think it will be an easy job, but if you want to give it a shot, 
I'd be quite interested in reviewing the patches!

thanks
-john