Consolidate the various functions that read and write guest memory
PATCH 4/6 Consolidate the various functions that read and write guest memory
emulator_write_emulated() uses struct kvm_vcpu instead of x86_emulate_ctxt to be called in place of kvm_write_guest().
Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected] -------------- "Software is hard" - Donald Knuth
drivers/kvm/kvm_main.c +6 -7
@@ -978,7 +978,7 @@static int emulator_write_std (unsigned long addr,const void *val,unsigned int bytes, -struct x86_emulate_ctxt *ctxt) +struct kvm_vcpu *vcpu) {printk (KERN_ERR "emulator_write_std: addr %lx n %d\n" , addr, bytes);
@@ -1061,9 +1061,8 @@static int emulator_write_emulated_onepage (unsigned long addr,const 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 = vcpu->mmu.gva_to_gpa (vcpu, addr);
@@ -1096,21 +1095,21 @@static int emulator_write_emulated (unsigned long addr,const void *val,unsigned int bytes, -struct x86_emulate_ctxt *ctxt) +struct kvm_vcpu *vcpu) {/* Crossing a page boundary? */ if (((addr + bytes -1 ) ^ addr) &PAGE_MASK ) {int rc, now; now = -addr & ~PAGE_MASK ; - rc =emulator_write_emulated_onepage (addr, val, now, ctxt); + rc =emulator_write_emulated_onepage (addr, val, now, vcpu);if (rc !=X86EMUL_CONTINUE )return rc; addr += now; val += now; bytes -= now; } -return emulator_write_emulated_onepage (addr, val, bytes, ctxt); +return emulator_write_emulated_onepage (addr, val, bytes, vcpu); } static int emulator_cmpxchg_emulated(unsigned long addr,
@@ -1125,7 +1124,7 @@ reported =1 ;printk (KERN_WARNING "kvm: emulating exchange as write\n" ); } -return emulator_write_emulated (addr, new, bytes, ctxt); +return emulator_write_emulated (addr, new, bytes, ctxt->vcpu); }static unsigned long get_segment_base (struct kvm_vcpu *vcpu,int seg)
drivers/kvm/x86_emulate.c +2 -2
@@ -1058,7 +1058,7 @@if ((rc = ops->write_std (register_address (ctxt->ss_base, _regs[VCPU_REGS_RSP ]), - &dst.val, dst.bytes, ctxt)) !=0 ) + &dst.val, dst.bytes, ctxt->vcpu)) !=0 ) goto done; no_wb =1 ;break ;
@@ -1097,7 +1097,7 @@else rc = ops->write_emulated ((unsigned long )dst.ptr, &dst.val, dst.bytes, - ctxt); + ctxt->vcpu);if (rc !=0 ) goto done;default :
drivers/kvm/x86_emulate.h +2 -2
@@ -71,7 +71,7 @@* @bytes: [IN ] Number of bytes to write to memory. */ int (*write_std)(unsigned long addr,const void *val, -unsigned int bytes,struct x86_emulate_ctxt * ctxt); +unsigned int bytes,struct kvm_vcpu *vcpu);/* * read_emulated: Read bytes from emulated/special memory area.
@@ -94,7 +94,7 @@int (*write_emulated) (unsigned long addr,const void *val,unsigned int bytes, -struct x86_emulate_ctxt * ctxt); +struct kvm_vcpu *vcpu);/* * cmpxchg_emulated: Emulate an atomic (LOCKed) CMPXCHG operation on an
-------------------------------------------------------------------------
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