ia64/xen-unstable

changeset 11050:909c0cdda57f

[IA64] Add support for sending event channel interrupts to VT-i guest

Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
Signed-off-by: Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com>
author awilliam@xenbuild.aw
date Tue Aug 22 14:42:05 2006 -0600 (2006-08-22)
parents 37b25baa3a75
children 36ebe6270252
files xen/arch/ia64/vmx/vmx_process.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_process.c	Tue Aug 22 14:40:48 2006 -0600
     1.2 +++ b/xen/arch/ia64/vmx/vmx_process.c	Tue Aug 22 14:42:05 2006 -0600
     1.3 @@ -186,6 +186,7 @@ void leave_hypervisor_tail(struct pt_reg
     1.4  {
     1.5      struct domain *d = current->domain;
     1.6      struct vcpu *v = current;
     1.7 +    int callback_irq;
     1.8      // FIXME: Will this work properly if doing an RFI???
     1.9      if (!is_idle_domain(d) ) {	// always comes from guest
    1.10  //        struct pt_regs *user_regs = vcpu_regs(current);
    1.11 @@ -213,6 +214,13 @@ void leave_hypervisor_tail(struct pt_reg
    1.12  //           v->arch.irq_new_pending = 1;
    1.13  //       }
    1.14  
    1.15 +        callback_irq = d->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
    1.16 +        if (callback_irq != 0 && local_events_need_delivery()) {
    1.17 +            /*inject para-device call back irq*/
    1.18 +            v->vcpu_info->evtchn_upcall_mask = 1;
    1.19 +            vmx_vcpu_pend_interrupt(v, callback_irq);
    1.20 +        }
    1.21 +
    1.22          if ( v->arch.irq_new_pending ) {
    1.23              v->arch.irq_new_pending = 0;
    1.24              v->arch.irq_new_condition = 0;