From: awilliam@xenbuild.aw Date: Mon, 28 Aug 2006 19:18:36 +0000 (-0600) Subject: [IA64] fix VTi hangs X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15687 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d70fb73eda107cd8336ad097684c639594615a3b;p=xen.git [IA64] fix VTi hangs In some scenarios, xen_timer_interrupt will not set machine itm, this may make this LP not receive timer interrupt any more. Signed-off-by: Anthony Xu --- diff --git a/xen/arch/ia64/xen/xentime.c b/xen/arch/ia64/xen/xentime.c index b1d32c50ae..0ebce66c29 100644 --- a/xen/arch/ia64/xen/xentime.c +++ b/xen/arch/ia64/xen/xentime.c @@ -109,6 +109,7 @@ void xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) { unsigned long new_itm, old_itc; + int f_setitm = 0; #if 0 #define HEARTBEAT_FREQ 16 // period in seconds @@ -129,11 +130,12 @@ xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) vcpu_pend_timer(current); // ensure another timer interrupt happens even if domain doesn't vcpu_set_next_timer(current); + f_setitm = 1; } new_itm = local_cpu_data->itm_next; - if (!VMX_DOMAIN(current) && !time_after(ia64_get_itc(), new_itm)) + if (f_setitm && !time_after(ia64_get_itc(), new_itm)) return; while (1) {