From: Joao Martins <joao.m.martins@oracle.com>
To: xen-devel@lists.xen.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Joao Martins <joao.m.martins@oracle.com>,
Keir Fraser <keir@xen.org>, Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 5/6] x86/time: refactor read_platform_stime()
Date: Tue, 29 Mar 2016 14:44:10 +0100 [thread overview]
Message-ID: <1459259051-4943-6-git-send-email-joao.m.martins@oracle.com> (raw)
In-Reply-To: <1459259051-4943-1-git-send-email-joao.m.martins@oracle.com>
To fetch the last read from the clocksource which was used to
calculate system_time. In the case of clocksource=tsc we will
use it to set tsc_timestamp.
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Cc: Keir Fraser <keir@xen.org>
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Changes since v1:
- Add missing spaces between brackets
- Move plt_stamp_counter to read_platform_stime()
- Add signature change in time_calibration_std_rendezvous()
---
xen/arch/x86/time.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 9cadfcb..123aa42 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -568,16 +568,19 @@ static void plt_overflow(void *unused)
set_timer(&plt_overflow_timer, NOW() + plt_overflow_period);
}
-static s_time_t read_platform_stime(void)
+static s_time_t read_platform_stime(u64 *stamp)
{
- u64 count;
+ u64 plt_stamp_counter, count;
s_time_t stime;
ASSERT(!local_irq_is_enabled());
spin_lock(&platform_timer_lock);
- count = plt_stamp64 + ((plt_src.read_counter() - plt_stamp) & plt_mask);
+ plt_stamp_counter = plt_src.read_counter();
+ count = plt_stamp64 + ((plt_stamp_counter - plt_stamp) & plt_mask);
stime = __read_platform_stime(count);
+ if ( stamp )
+ *stamp = plt_stamp_counter;
spin_unlock(&platform_timer_lock);
return stime;
@@ -727,7 +730,7 @@ void cstate_restore_tsc(void)
if ( boot_cpu_has(X86_FEATURE_NONSTOP_TSC) )
return;
- write_tsc(stime2tsc(read_platform_stime()));
+ write_tsc(stime2tsc(read_platform_stime(NULL)));
}
/***************************************************************************
@@ -1046,7 +1049,7 @@ int cpu_frequency_change(u64 freq)
local_irq_disable();
/* Platform time /first/, as we may be delayed by platform_timer_lock. */
- t->stime_master_stamp = read_platform_stime();
+ t->stime_master_stamp = read_platform_stime(NULL);
/* TSC-extrapolated time may be bogus after frequency change. */
/*t->stime_local_stamp = get_s_time();*/
t->stime_local_stamp = t->stime_master_stamp;
@@ -1364,7 +1367,7 @@ static void time_calibration_tsc_rendezvous(void *_r)
if ( r->master_stime == 0 )
{
- r->master_stime = read_platform_stime();
+ r->master_stime = read_platform_stime(NULL);
r->master_tsc_stamp = rdtsc();
}
atomic_inc(&r->semaphore);
@@ -1409,7 +1412,7 @@ static void time_calibration_std_rendezvous(void *_r)
{
while ( atomic_read(&r->semaphore) != (total_cpus - 1) )
cpu_relax();
- r->master_stime = read_platform_stime();
+ r->master_stime = read_platform_stime(NULL);
mb(); /* write r->master_stime /then/ signal */
atomic_inc(&r->semaphore);
}
@@ -1456,7 +1459,7 @@ void init_percpu_time(void)
local_irq_save(flags);
t->local_tsc_stamp = rdtsc();
- now = read_platform_stime();
+ now = read_platform_stime(NULL);
local_irq_restore(flags);
t->stime_master_stamp = now;
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-29 13:44 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 13:44 [PATCH v2 0/6] x86/time: PVCLOCK_TSC_STABLE_BIT support Joao Martins
2016-03-29 13:44 ` [PATCH v2 1/6] public/xen.h: add flags field to vcpu_time_info Joao Martins
2016-03-30 15:49 ` Ian Jackson
2016-03-30 16:33 ` Joao Martins
2016-03-31 7:09 ` Jan Beulich
2016-03-31 7:13 ` Jan Beulich
2016-03-31 11:04 ` Joao Martins
2016-04-05 10:16 ` Jan Beulich
2016-04-05 10:59 ` Joao Martins
2016-03-29 13:44 ` [PATCH v2 2/6] x86/time: refactor init_platform_time() Joao Martins
2016-04-01 16:10 ` Konrad Rzeszutek Wilk
2016-04-01 18:26 ` Joao Martins
2016-04-05 10:09 ` Jan Beulich
2016-04-05 10:55 ` Joao Martins
2016-04-05 11:16 ` Jan Beulich
2016-03-29 13:44 ` [PATCH v2 3/6] x86/time: implement tsc as clocksource Joao Martins
2016-03-29 17:39 ` Konrad Rzeszutek Wilk
2016-03-29 17:52 ` Joao Martins
2016-04-01 16:43 ` Konrad Rzeszutek Wilk
2016-04-01 18:38 ` Joao Martins
2016-04-01 18:45 ` Konrad Rzeszutek Wilk
2016-04-03 18:47 ` Joao Martins
2016-04-05 10:43 ` Jan Beulich
2016-04-05 14:56 ` Joao Martins
2016-04-05 15:12 ` Jan Beulich
2016-04-05 17:07 ` Joao Martins
2016-03-29 13:44 ` [PATCH v2 4/6] x86/time: streamline platform time init on plt_init() Joao Martins
2016-04-05 11:46 ` Jan Beulich
2016-04-05 15:12 ` Joao Martins
2016-04-05 15:22 ` Jan Beulich
2016-04-05 17:17 ` Joao Martins
2016-03-29 13:44 ` Joao Martins [this message]
2016-04-01 18:32 ` [PATCH v2 5/6] x86/time: refactor read_platform_stime() Konrad Rzeszutek Wilk
2016-04-05 11:52 ` Jan Beulich
2016-04-05 15:22 ` Joao Martins
2016-04-05 15:26 ` Jan Beulich
2016-04-05 17:08 ` Joao Martins
2016-03-29 13:44 ` [PATCH v2 6/6] x86/time: implement PVCLOCK_TSC_STABLE_BIT Joao Martins
2016-04-05 12:22 ` Jan Beulich
2016-04-05 21:34 ` Joao Martins
2016-04-07 15:58 ` Jan Beulich
2016-04-07 21:17 ` Joao Martins
2016-04-07 21:32 ` Jan Beulich
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=1459259051-4943-6-git-send-email-joao.m.martins@oracle.com \
--to=joao.m.martins@oracle.com \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xen.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).