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

[Xen-devel] Re: [PATCH] x86 hvm: fix missing ticks issue in c/s 20218



Keir Fraser writes:
> This patch is very dubious. It appears to break pt_process_missed_ticks()
> logic for timer modes 0 and 1. When a VCPU gets rescheduled it will have
> missed ticks folded into ->scheduled and ->pending_intr_nr fields, but since
> you stomp on the logic for tracking pending_intr_nr, most of those missed
> ticks will never get delivered.

I've forgotten VCPU switch. Indeed, it's pretty fragile. :-)
What about modifying pt_restore_timer() not to advance pt->scheduled?
For example,

diff -r 0f8376078dc1 xen/arch/x86/hvm/vpt.c
--- a/xen/arch/x86/hvm/vpt.c    Wed Sep 23 18:19:30 2009 +0100
+++ b/xen/arch/x86/hvm/vpt.c    Fri Sep 25 18:12:12 2009 +0900
@@ -189,8 +189,10 @@ void pt_restore_timer(struct vcpu *v)
     {
         if ( pt->pending_intr_nr == 0 )
         {
-            pt_process_missed_ticks(pt);
-            set_timer(&pt->timer, pt->scheduled);
+            if ( pt->scheduled > NOW() )
+                set_timer(&pt->timer, pt->scheduled);
+            else
+                pt->pending_intr_nr = 1;
         }
     }

We should rename pending_intr_nr to pending_intr(boolean).

Thanks,
Kouya

> I think the fix is to move the line 'pt->scheduled += pt->period' out of
> pt_intr_post() and back into pt_timer_fn(). This is because you have
> otherwise broken the invariant that pt->scheduled always gets incremented
> along with pt->pending_intr_nr. All the rest of your 'fixes' are I think
> merely working around that fundamental brokeness.
> 
> Please try moving that one line and see if the bug goes away.
> 
>  -- Keir
>  
> On 25/09/2009 05:37, "Kouya Shimura" <kouya@xxxxxxxxxxxxxx> wrote:
> 
> > Although c/s 20229 fixes missing ticks issue in c/s 20218,
> > it's not enough.
> > 
> > - set a timer to the next period more straightforwardly.
> > - fix an unexpected behavior of both timer_mode=2 and timer_mode=3.
> >   extra interrupts might be delivered to a guest.
> > 
> > Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
> > 
> 

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


 


Rackspace

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