[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [HVM][PIT] Fix missed_ticks() logic.



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID cca6641d40875d955654fc75506b49fe85e7f03f
# Parent  28128dafbe03758434bc947002758edf60a2747e
[HVM][PIT] Fix missed_ticks() logic.
Signed-off-by Xiaowei Yang <xiaowei.yang@xxxxxxxxx>
---
 xen/arch/x86/hvm/intercept.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff -r 28128dafbe03 -r cca6641d4087 xen/arch/x86/hvm/intercept.c
--- a/xen/arch/x86/hvm/intercept.c      Wed Jun 07 13:38:08 2006 +0100
+++ b/xen/arch/x86/hvm/intercept.c      Wed Jun 07 13:42:21 2006 +0100
@@ -216,13 +216,14 @@ void hlt_timer_fn(void *data)
 
 static __inline__ void missed_ticks(struct periodic_time *pt)
 {
-    int missed_ticks;
-
-    missed_ticks = (NOW() - pt->scheduled)/(s_time_t) pt->period;
-    if ( missed_ticks++ >= 0 ) {
+    s_time_t missed_ticks;
+
+    missed_ticks = NOW() - pt->scheduled;
+    if ( missed_ticks > 0 ) {
+       missed_ticks = missed_ticks / (s_time_t) pt->period + 1;
         if ( missed_ticks > 1000 ) {
             /* TODO: Adjust guest time togther */
-            pt->pending_intr_nr ++;
+            pt->pending_intr_nr++;
         }
         else {
             pt->pending_intr_nr += missed_ticks;
@@ -236,6 +237,9 @@ void pt_timer_fn(void *data)
 {
     struct vcpu *v = data;
     struct periodic_time *pt = 
&(v->domain->arch.hvm_domain.pl_time.periodic_tm);
+
+    pt->pending_intr_nr++;
+    pt->scheduled += pt->period;
 
     /* pick up missed timer tick */
     missed_ticks(pt);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.