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