ia64/xen-unstable

changeset 12523:0114b372dfae

[IA64] fix a bug in vmx_send_assist_req()

We must do_softirq() explicitly to enter scheduler

If not, booting a windows guest and a linux guest at the same time
will lead to a system hang.

Signed-off-by: Zhang Xin <xing.z.zhang@intel.com>
author awilliam@xenbuild.aw
date Wed Nov 22 10:13:31 2006 -0700 (2006-11-22)
parents 8254ba7c0def
children b39844e292f6
files xen/arch/ia64/vmx/vmx_support.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_support.c	Wed Nov 22 10:10:38 2006 -0700
     1.2 +++ b/xen/arch/ia64/vmx/vmx_support.c	Wed Nov 22 10:13:31 2006 -0700
     1.3 @@ -76,11 +76,6 @@ void vmx_send_assist_req(struct vcpu *v)
     1.4      p->state = STATE_IOREQ_READY;
     1.5      notify_via_xen_event_channel(v->arch.arch_vmx.xen_port);
     1.6  
     1.7 -    /*
     1.8 -     * Waiting for MMIO completion
     1.9 -     *   like the wait_on_xen_event_channel() macro like...
    1.10 -     *   but, we can't call do_softirq() at this point..
    1.11 -     */
    1.12      for (;;) {
    1.13          if (p->state != STATE_IOREQ_READY &&
    1.14              p->state != STATE_IOREQ_INPROCESS)
    1.15 @@ -96,6 +91,7 @@ void vmx_send_assist_req(struct vcpu *v)
    1.16          }
    1.17  
    1.18          raise_softirq(SCHEDULE_SOFTIRQ);
    1.19 +        do_softirq();
    1.20          mb();
    1.21      }
    1.22