direct-io.hg

changeset 11946:6268aa7b9177

[IA64] Bind event channels of VT-i domain to vcpu 0

Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
author awilliam@xenbuild.aw
date Mon Oct 02 21:27:49 2006 -0600 (2006-10-02)
parents c3f71a4ed653
children 64290e7622d2
files xen/arch/ia64/vmx/vmx_process.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_process.c	Mon Oct 02 14:09:49 2006 -0600
     1.2 +++ b/xen/arch/ia64/vmx/vmx_process.c	Mon Oct 02 21:27:49 2006 -0600
     1.3 @@ -198,7 +198,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 +
     1.9      // FIXME: Will this work properly if doing an RFI???
    1.10      if (!is_idle_domain(d) ) {	// always comes from guest
    1.11  //        struct pt_regs *user_regs = vcpu_regs(current);
    1.12 @@ -226,11 +226,14 @@ void leave_hypervisor_tail(struct pt_reg
    1.13  //           v->arch.irq_new_pending = 1;
    1.14  //       }
    1.15  
    1.16 -        callback_irq = d->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
    1.17 -        if (callback_irq != 0 && local_events_need_delivery()) {
    1.18 -            /*inject para-device call back irq*/
    1.19 -            v->vcpu_info->evtchn_upcall_mask = 1;
    1.20 -            vmx_vcpu_pend_interrupt(v, callback_irq);
    1.21 +        if (v->vcpu_id == 0) {
    1.22 +            int callback_irq =
    1.23 +                d->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
    1.24 +            if (callback_irq != 0 && local_events_need_delivery()) {
    1.25 +                /*inject para-device call back irq*/
    1.26 +                v->vcpu_info->evtchn_upcall_mask = 1;
    1.27 +                vmx_vcpu_pend_interrupt(v, callback_irq);
    1.28 +            }
    1.29          }
    1.30  
    1.31          if ( v->arch.irq_new_pending ) {