PATCH 2/6] Consolidate the various functions that read and write guest memory
emulator_read_emulated() uses struct kvm_vcpu instead of x86_emulate_ctxt to be consistency with emulator_read_std().
Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected] -------------- "Software is hard" - Donald Knuth
drivers/kvm/kvm_main.c +1 -2
@@ -1037,9 +1037,8 @@static int emulator_read_emulated (unsigned long addr,void *val,unsigned int bytes, -struct x86_emulate_ctxt *ctxt) +struct kvm_vcpu *vcpu) { -struct kvm_vcpu *vcpu = ctxt->vcpu;struct kvm_io_device *mmio_dev;gpa_t gpa;
drivers/kvm/x86_emulate.c +7 -5
@@ -782,7 +782,7 @@ src.type =OP_MEM ; src.ptr = (unsigned long *)cr2;if ((rc = ops->read_emulated ((unsigned long )src.ptr, - &src.val, src.bytes, ctxt)) !=0 ) + &src.val, src.bytes, ctxt->vcpu)) !=0 ) goto done; src.orig_val = src.val;break ;
@@ -852,7 +852,7 @@ }if (!(d & Mov) &&/* optimisation - avoid slow emulated read */ ((rc = ops->read_emulated ((unsigned long )dst.ptr, - &dst.val, dst.bytes, ctxt)) !=0 )) + &dst.val, dst.bytes, ctxt->vcpu)) !=0 )) goto done;break ; }
@@ -1132,7 +1132,7 @@ _regs[VCPU_REGS_RDI]);if ((rc = ops->read_emulated (register_address ( override_base ? *override_base : ctxt->ds_base, - _regs[VCPU_REGS_RSI ]), &dst.val, dst.bytes, ctxt)) !=0 ) + _regs[VCPU_REGS_RSI ]), &dst.val, dst.bytes, ctxt->vcpu)) !=0 ) goto done;register_address_increment (_regs[VCPU_REGS_RSI ], (_eflags &EFLG_DF ) ? -dst.bytes : dst.bytes);
@@ -1154,7 +1154,8 @@ dst.type =OP_REG ; dst.bytes = (d & ByteOp) ?1 : op_bytes; dst.ptr = (unsigned long *)&_regs[VCPU_REGS_RAX ]; -if ((rc = ops->read_emulated (cr2, &dst.val, dst.bytes, ctxt)) !=0 ) +if ((rc = ops->read_emulated (cr2, &dst.val, dst.bytes, + ctxt->vcpu)) !=0 ) goto done;register_address_increment (_regs[VCPU_REGS_RSI ], (_eflags &EFLG_DF ) ? -dst.bytes : dst.bytes);
@@ -1379,7 +1380,8 @@case 0xc7 :/* Grp9 (cmpxchg8b) */ {u64 old, new; -if ((rc = ops->read_emulated (cr2, &old,8 , ctxt)) !=0 ) +if ((rc = ops->read_emulated (cr2, &old,8 , ctxt->vcpu)) + !=0 ) goto done;if (((u32) (old >>0 ) != (u32 ) _regs[VCPU_REGS_RAX ]) || ((u32) (old >>32 ) != (u32 ) _regs[VCPU_REGS_RDX ])) {
drivers/kvm/x86_emulate.h +1 -1
@@ -82,7 +82,7 @@int (*read_emulated) (unsigned long addr,void *val,unsigned int bytes, -struct x86_emulate_ctxt * ctxt); +struct kvm_vcpu *vcpu);/* * write_emulated: Read bytes from emulated/special memory area.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel