[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] vmx realmode: Multiple I/O reads to qemu in an instruction is not
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201519735 0 # Node ID ed2ca78286a8c30ab68e37c7eccae6d1748f0d50 # Parent ed8ab1a36b09b8f952d36943180ac079144144f5 vmx realmode: Multiple I/O reads to qemu in an instruction is not allowed. But we do allow, for example, a read followed by a write (e.g., MOVS within video RAM). Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/arch/x86/hvm/vmx/realmode.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff -r ed8ab1a36b09 -r ed2ca78286a8 xen/arch/x86/hvm/vmx/realmode.c --- a/xen/arch/x86/hvm/vmx/realmode.c Mon Jan 28 10:17:05 2008 +0000 +++ b/xen/arch/x86/hvm/vmx/realmode.c Mon Jan 28 11:28:55 2008 +0000 @@ -534,12 +534,6 @@ static void realmode_emulate_one(struct goto fail; } - if ( io_completed && curr->arch.hvm_vmx.real_mode_io_in_progress ) - { - gdprintk(XENLOG_ERR, "Multiple I/O transactions in a single insn.\n"); - goto fail; - } - if ( rc == X86EMUL_UNHANDLEABLE ) { gdprintk(XENLOG_ERR, "Failed to emulate insn.\n"); @@ -547,7 +541,13 @@ static void realmode_emulate_one(struct } if ( rc == X86EMUL_RETRY ) - return; + { + BUG_ON(!curr->arch.hvm_vmx.real_mode_io_in_progress); + if ( !io_completed ) + return; + gdprintk(XENLOG_ERR, "Multiple I/O reads in a single insn.\n"); + goto fail; + } if ( curr->arch.hvm_vmx.real_mode_io_in_progress && (get_ioreq(curr)->vp_ioreq.dir == IOREQ_READ) ) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |