[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] SVM patch to fix problem with instruction decode.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID e995d090bba912d26579538130c8fdfc525e5902 # Parent fbc3a2657fefa4621e52de168efc3f99f74c8f03 SVM patch to fix problem with instruction decode. Signed-off-by: Tom Woller <thomas.woller@xxxxxxx> diff -r fbc3a2657fef -r e995d090bba9 xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Tue Mar 21 21:57:47 2006 +++ b/xen/arch/x86/hvm/svm/svm.c Wed Mar 22 09:35:35 2006 @@ -1243,20 +1243,19 @@ "svm_io_instruction: port 0x%lx real %d, eip=%lx:%lx, " "exit_qualification = %lx", (unsigned long) port, real, cs, eip, (unsigned long)info.bytes); - - /* - * On SVM, the RIP of the intruction following the IN/OUT is saved in - * ExitInfo2 - */ - vmcb->rip = vmcb->exitinfo2; - /* string instruction */ if (info.fields.str) { unsigned long addr, count = 1; int sign = regs->eflags & EF_DF ? -1 : 1; + /* Need the original rip, here. */ addr = svm_get_io_address(vmcb, regs, dir, real); + /* + * On SVM, the RIP of the intruction following the IN/OUT is saved in + * ExitInfo2 + */ + vmcb->rip = vmcb->exitinfo2; /* "rep" prefix */ if (info.fields.rep) @@ -1295,6 +1294,12 @@ } else { + /* + * On SVM, the RIP of the intruction following the IN/OUT is saved in + * ExitInfo2 + */ + vmcb->rip = vmcb->exitinfo2; + if (port == 0xe9 && dir == IOREQ_WRITE && size == 1) hvm_print_line(v, regs->eax); /* guest debug output */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |