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>
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