ia64/xen-unstable

changeset 8840:9f662b5e7d3c

Absolutely must not return to HVM guest context until
synchronous I/O emulation is completed.

Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Mon Feb 13 12:16:16 2006 +0100 (2006-02-13)
parents 4caca2046421
children ba395fa2e86f
files xen/arch/x86/hvm/svm/vmcb.c xen/arch/x86/hvm/vmx/io.c
line diff
     1.1 --- a/xen/arch/x86/hvm/svm/vmcb.c	Mon Feb 13 10:23:26 2006 +0100
     1.2 +++ b/xen/arch/x86/hvm/svm/vmcb.c	Mon Feb 13 12:16:16 2006 +0100
     1.3 @@ -489,7 +489,8 @@ void svm_do_resume(struct vcpu *v)
     1.4  {
     1.5      struct hvm_virpit *vpit = &v->domain->arch.hvm_domain.vpit;
     1.6      
     1.7 -    if ( event_pending(v) )
     1.8 +    if ( event_pending(v) ||
     1.9 +         test_bit(ARCH_HVM_IO_WAIT, &v->arch.hvm_vcpu.ioflags) )
    1.10          hvm_wait_io();
    1.11  
    1.12      /* pick up the elapsed PIT ticks and re-enable pit_timer */
     2.1 --- a/xen/arch/x86/hvm/vmx/io.c	Mon Feb 13 10:23:26 2006 +0100
     2.2 +++ b/xen/arch/x86/hvm/vmx/io.c	Mon Feb 13 12:16:16 2006 +0100
     2.3 @@ -177,7 +177,8 @@ void vmx_do_resume(struct vcpu *v)
     2.4  
     2.5      vmx_stts();
     2.6  
     2.7 -    if ( event_pending(v) )
     2.8 +    if ( event_pending(v) ||
     2.9 +         test_bit(ARCH_HVM_IO_WAIT, &v->arch.hvm_vcpu.ioflags) )
    2.10          hvm_wait_io();
    2.11  
    2.12      /* pick up the elapsed PIT ticks and re-enable pit_timer */