[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |