From: cov@codeaurora.org (Christopher Covington)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 2/4] ARM: arch_timers: register a time/cycle counter
Date: Tue, 17 Jul 2012 12:41:04 -0400 [thread overview]
Message-ID: <500595A0.8020302@codeaurora.org> (raw)
In-Reply-To: <1341566422-20368-3-git-send-email-marc.zyngier@arm.com>
Hi Marc,
On 07/06/2012 05:20 AM, Marc Zyngier wrote:
> Some subsystems (KVM for example) need access to a cycle counter.
> In the KVM case, this is used to measure the time delta between
> host and guest in order to accurately generate timer events for
> the guest.
[...]
> diff --git a/arch/arm/kernel/arch_timer.c b/arch/arm/kernel/arch_timer.c
> index 54599e9..2b5da66 100644
> --- a/arch/arm/kernel/arch_timer.c
> +++ b/arch/arm/kernel/arch_timer.c
> @@ -318,6 +318,15 @@ static cycle_t arch_counter_read(struct clocksource *cs)
> return arch_counter_get_cntpct();
> }
>
> +static cycle_t arch_counter_read_cc(const struct cyclecounter *cc)
> +{
> + /*
> + * Always use the physical counter for the clocksource.
> + * CNTHCTL.PL1PCTEN must be set to 1.
> + */
> + return arch_counter_get_cntpct();
> +}
Why not just provide a wrapper around arch_timer_counter_read()? Will a
guest OS never need or want to use the cyclecounter (and clocksource for
that matter) interface?
> +
> static struct clocksource clocksource_counter = {
> .name = "arch_sys_counter",
> .rating = 400,
> @@ -326,6 +335,18 @@ static struct clocksource clocksource_counter = {
> .flags = CLOCK_SOURCE_IS_CONTINUOUS,
> };
>
> +static struct cyclecounter cyclecounter = {
> + .read = arch_counter_read_cc,
> + .mask = CLOCKSOURCE_MASK(56),
> +};
> +
> +static struct timecounter timecounter;
> +
> +struct timecounter *arch_timer_get_timecounter(void)
> +{
> + return &timecounter;
> +}
> +
> static void __cpuinit arch_timer_stop(struct clock_event_device *clk)
> {
> int i;
[...]
Thanks,
Christopher
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
next prev parent reply other threads:[~2012-07-17 16:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-06 9:20 [RFC PATCH 0/4] arch_timers patches to enable KVM support Marc Zyngier
2012-07-06 9:20 ` [RFC PATCH 1/4] ARM: arch_timers: enable the use of the virtual timer Marc Zyngier
2012-07-16 21:12 ` Christopher Covington
2012-07-17 16:41 ` Christopher Covington
2012-07-06 9:20 ` [RFC PATCH 2/4] ARM: arch_timers: register a time/cycle counter Marc Zyngier
2012-07-17 16:41 ` Christopher Covington [this message]
2012-07-06 9:20 ` [RFC PATCH 3/4] ARM: arch_timers: give the virtual timer its own interrupt handler Marc Zyngier
2012-07-17 16:57 ` Christopher Covington
2012-07-06 9:20 ` [RFC PATCH 4/4] ARM: arch_timers: dynamic switch to physical timer and virtual timer offloading Marc Zyngier
2012-07-17 19:02 ` Christopher Covington
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=500595A0.8020302@codeaurora.org \
--to=cov@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.