ia64/xen-unstable

changeset 11304:647d3208704a

[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 <anthony.xu@intel.com>
author awilliam@xenbuild.aw
date Mon Aug 28 13:18:36 2006 -0600 (2006-08-28)
parents 5586fd904efa
children 26ba157bef06
files xen/arch/ia64/xen/xentime.c
line diff
     1.1 --- a/xen/arch/ia64/xen/xentime.c	Mon Aug 28 13:14:52 2006 -0600
     1.2 +++ b/xen/arch/ia64/xen/xentime.c	Mon Aug 28 13:18:36 2006 -0600
     1.3 @@ -109,6 +109,7 @@ void
     1.4  xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
     1.5  {
     1.6  	unsigned long new_itm, old_itc;
     1.7 +	int f_setitm = 0;
     1.8  
     1.9  #if 0
    1.10  #define HEARTBEAT_FREQ 16	// period in seconds
    1.11 @@ -129,11 +130,12 @@ xen_timer_interrupt (int irq, void *dev_
    1.12  			vcpu_pend_timer(current);
    1.13  			// ensure another timer interrupt happens even if domain doesn't
    1.14  			vcpu_set_next_timer(current);
    1.15 +			f_setitm = 1;
    1.16  		}
    1.17  
    1.18  	new_itm = local_cpu_data->itm_next;
    1.19  
    1.20 -	if (!VMX_DOMAIN(current) && !time_after(ia64_get_itc(), new_itm))
    1.21 +	if (f_setitm && !time_after(ia64_get_itc(), new_itm)) 
    1.22  		return;
    1.23  
    1.24  	while (1) {