ia64/xen-unstable
changeset 12800:21267b552cc9
[IA64] Send events to VTI domain through level triggered irq.
Signed-off-by: Anthony Xu <anthony.xu@intel.com>
Signed-off-by: Anthony Xu <anthony.xu@intel.com>
author | awilliam@xenbuild2.aw |
---|---|
date | Thu Dec 07 05:43:04 2006 -0700 (2006-12-07) |
parents | 74de984434c9 |
children | 968caf47b548 |
files | xen/arch/ia64/vmx/vmx_process.c |
line diff
1.1 --- a/xen/arch/ia64/vmx/vmx_process.c Thu Dec 07 05:36:30 2006 -0700 1.2 +++ b/xen/arch/ia64/vmx/vmx_process.c Thu Dec 07 05:43:04 2006 -0700 1.3 @@ -206,28 +206,14 @@ void leave_hypervisor_tail(struct pt_reg 1.4 do_softirq(); 1.5 local_irq_disable(); 1.6 1.7 -// if (user_regs != regs) 1.8 -// printk("WARNING: checking pending interrupt in nested interrupt!!!\n"); 1.9 - 1.10 - /* FIXME: Check event pending indicator, and set 1.11 - * pending bit if necessary to inject back to guest. 1.12 - * Should be careful about window between this check 1.13 - * and above assist, since IOPACKET_PORT shouldn't be 1.14 - * injected into vmx domain. 1.15 - * 1.16 - * Now hardcode the vector as 0x10 temporarily 1.17 - */ 1.18 -// if (event_pending(v)&&(!(VLSAPIC_INSVC(v,0)&(1UL<<0x10)))) { 1.19 -// VCPU(v, irr[0]) |= 1UL << 0x10; 1.20 -// v->arch.irq_new_pending = 1; 1.21 -// } 1.22 - 1.23 if (v->vcpu_id == 0) { 1.24 int callback_irq = 1.25 d->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ]; 1.26 - if (callback_irq != 0) { 1.27 + if (callback_irq != 0 && local_events_need_delivery()) { 1.28 /* change level for para-device callback irq */ 1.29 - viosapic_set_irq(d, callback_irq, local_events_need_delivery()); 1.30 + /* use level irq to send discrete event */ 1.31 + viosapic_set_irq(d, callback_irq, 1); 1.32 + viosapic_set_irq(d, callback_irq, 0); 1.33 } 1.34 } 1.35