From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] clocksource: arm_arch_timer: unify sched_clock init
Date: Fri, 19 Apr 2013 10:34:15 -0700 [thread overview]
Message-ID: <51718017.3060405@codeaurora.org> (raw)
In-Reply-To: <51709FD7.8050408@gmail.com>
On 04/18/13 18:37, Rob Herring wrote:
> On 04/18/2013 07:00 PM, Stephen Boyd wrote:
>> On 04/18/13 12:30, Rob Herring wrote:
>>> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
>>> index 122ff05..17ed8e4 100644
>>> --- a/drivers/clocksource/arm_arch_timer.c
>>> +++ b/drivers/clocksource/arm_arch_timer.c
>>> @@ -266,6 +266,15 @@ static struct notifier_block arch_timer_cpu_nb __cpuinitdata = {
>>> .notifier_call = arch_timer_cpu_notify,
>>> };
>>>
>>> +static u64 sched_clock_mult __read_mostly;
>>> +
>>> +unsigned long long notrace arch_timer_sched_clock(void)
>>> +{
>>> + return arch_timer_read_counter() * sched_clock_mult;
>>> +}
>>> +unsigned long long sched_clock(void) \
>>> + __attribute__((weak, alias("arch_timer_sched_clock")));
>> I'm still lost, how does this prevent the timer in ARM's 32 bit
>> sched_clock code from getting setup in sched_clock_postinit()? That
>> print is still there right?
I still see this:
[ 0.000000] sched_clock: ARM arch timer >56 bits at 19200kHz,
resolution 52ns
[ 0.000000] Architected cp15 timer running at 19.20MHz (virt).
[ 0.000000] Switching to timer-based delay loop
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns,
wraps every 4294967286ms
>> Who owns sched_clock() in multi-target builds?
> For arm64, it does not define sched_clock, so it will get
> arch_timer_sched_clock.
>
> For arm, sched_clock is defined in arch/arm/kernel/sched_clock.c and the
> weak alias is not used. The arm sched_clock function just calls a
> function pointer which defaults to sched_clock_32 (which is the original
> arm sched_clock implementation). If the arch timer is present, then the
> function pointer is set to arch_timer_sched_clock and any calls to
> setup_sched_clock and the sched_clock_postinit have no effect.
> Otherwise, the functionality is basically unchanged for <=32-bit
> sched_clock implementations.
Ok. I was missing the part where the function pointer is assigned.
>
>> Why can't we play along with the sched_clock code that lives in arm?
>> Maybe we should resurrect those clocksource sched_clock patches again.
>> Or maybe we should add support for setup_sched_clock_64() in arm's sched
>> clock code.
> That's what I originally had which Russell objected to. The needs for
> the arch timer is a bit different since we don't need to deal with
> wrapping. And we need the same boot time offset and suspend handling in
> both arm and arm64.
>
I would much rather we play along with arm's sched_clock code. If we can
add support for 64 bits alongside the 32 bit stuff in the same file we
should be able to generalize the entire code to generic kernel code and
use it on even more arches. I'll try to put something together today.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2013-04-19 17:34 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-18 19:30 [PATCH 1/2] clocksource: arm_arch_timer: unify sched_clock init Rob Herring
2013-04-18 19:30 ` [PATCH 2/2] clocksource: arm_arch_timer: add boot and suspend sched_clock offset Rob Herring
2013-04-19 14:46 ` Catalin Marinas
2013-04-19 0:00 ` [PATCH 1/2] clocksource: arm_arch_timer: unify sched_clock init Stephen Boyd
2013-04-19 1:37 ` Rob Herring
2013-04-19 17:34 ` Stephen Boyd [this message]
2013-04-20 0:29 ` [PATCH 0/4] ARM 64 bit sched_clock take #2 Stephen Boyd
2013-04-20 0:29 ` [PATCH 1/4] ARM: sched_clock: Remove unused needs_suspend member Stephen Boyd
2013-04-20 0:29 ` [PATCH 2/4] ARM: sched_clock: Return suspended count earlier Stephen Boyd
2013-04-20 0:29 ` [PATCH 3/4] ARM: sched_clock: Add support for >32 bit sched_clock Stephen Boyd
2013-04-22 10:48 ` Will Deacon
2013-04-22 15:35 ` Stephen Boyd
2013-04-20 0:29 ` [PATCH 4/4] ARM: arch_timer: Move to setup_sched_clock_64() Stephen Boyd
2013-04-22 15:16 ` [PATCH 0/4] ARM 64 bit sched_clock take #2 Arnd Bergmann
2013-04-22 15:34 ` Mark Rutland
2013-04-22 15:36 ` Stephen Boyd
2013-04-22 15:51 ` Mark Rutland
2013-04-22 17:00 ` John Stultz
2013-04-22 20:46 ` Rob Herring
2013-04-23 16:34 ` Stephen Boyd
2013-05-01 0:54 ` [PATCH 5/4] sched: Make ARM's sched_clock generic for all architectures Stephen Boyd
2013-05-01 0:54 ` [PATCH 6/4] arm64: Move to generic sched_clock infrastructure Stephen Boyd
2013-05-01 9:11 ` Catalin Marinas
2013-05-01 14:44 ` Christopher Covington
2013-05-31 20:40 ` [PATCH 5/4] sched: Make ARM's sched_clock generic for all architectures John Stultz
2013-05-31 22:13 ` Stephen Boyd
2013-05-31 23:50 ` John Stultz
2013-04-19 14:45 ` [PATCH 1/2] clocksource: arm_arch_timer: unify sched_clock init Catalin Marinas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51718017.3060405@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).