x86: svm: use kvm_register_write()/read()
PATCH v2 1/1 x86: svm: use kvm_register_write()/read()
From: David Kaplan <[email protected]>
KVM has nice wrappers to access the register values, clean up a few places that should use them but currently do not.
--- arch/x86/kvm/svm.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
arch/x86/kvm/svm.c +9 -10
@@ -2757,11 +2757,11 @@ static int invlpga_interception(struct vcpu_svm *svm) {struct kvm_vcpu *vcpu = &svm->vcpu; -trace_kvm_invlpga (svm->vmcb->save.rip, vcpu->arch.regs[VCPU_REGS_RCX ], - vcpu->arch.regs[VCPU_REGS_RAX ]); +trace_kvm_invlpga (svm->vmcb->save.rip,kvm_register_read (&svm->vcpu,VCPU_REGS_RCX ), +kvm_register_read (&svm->vcpu,VCPU_REGS_RAX ));/* Let's treat INVLPGA the same as INVLPG (can be optimized!) */ -kvm_mmu_invlpg (vcpu, vcpu->arch.regs[VCPU_REGS_RAX ]); +kvm_mmu_invlpg (vcpu,kvm_register_read (&svm->vcpu,VCPU_REGS_RAX )); svm->next_rip =kvm_rip_read (&svm->vcpu) +3 ;skip_emulated_instruction (&svm->vcpu);
@@ -2770,7 +2770,7 @@ static int invlpga_interception(struct vcpu_svm *svm)static int skinit_interception (struct vcpu_svm *svm) { -trace_kvm_skinit (svm->vmcb->save.rip, svm->vcpu.arch.regs[VCPU_REGS_RAX ]); +trace_kvm_skinit (svm->vmcb->save.rip,kvm_register_read (&svm->vcpu,VCPU_REGS_RAX ));kvm_queue_exception (&svm->vcpu,UD_VECTOR );return 1 ;
@@ -3133,7 +3133,7 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 *data)static int rdmsr_interception (struct vcpu_svm *svm) { -u32 ecx = svm->vcpu.arch.regs[VCPU_REGS_RCX ]; +u32 ecx =kvm_register_read (&svm->vcpu,VCPU_REGS_RCX );u64 data;if (svm_get_msr (&svm->vcpu, ecx, &data)) {
@@ -3142,8 +3142,8 @@ static int rdmsr_interception(struct vcpu_svm *svm) }else {trace_kvm_msr_read (ecx, data); - svm->vcpu.arch.regs[VCPU_REGS_RAX ] = data &0xffffffff ; - svm->vcpu.arch.regs[VCPU_REGS_RDX ] = data >>32 ; +kvm_register_write (&svm->vcpu,VCPU_REGS_RAX , data &0xffffffff ); +kvm_register_write (&svm->vcpu,VCPU_REGS_RDX , data >>32 ); svm->next_rip =kvm_rip_read (&svm->vcpu) +2 ;skip_emulated_instruction (&svm->vcpu); }
@@ -3246,9 +3246,8 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)static int wrmsr_interception (struct vcpu_svm *svm) {struct msr_data msr; -u32 ecx = svm->vcpu.arch.regs[VCPU_REGS_RCX ]; -u64 data = (svm->vcpu.arch.regs[VCPU_REGS_RAX ] &-1u ) - | ((u64)(svm->vcpu.arch.regs[VCPU_REGS_RDX ] &-1u ) <<32 ); +u32 ecx =kvm_register_read (&svm->vcpu,VCPU_REGS_RCX ); +u64 data =kvm_read_edx_eax (&svm->vcpu); msr.data = data; msr.index = ecx;
Quoted 8 lines · Joel Schopp
From: David Kaplan <[email protected]>
KVM has nice wrappers to access the register values, clean up a few places that should use them but currently do not.
Signed-off-by David Kaplan <[email protected]>[forward port and testing]Signed-off-by Joel Schopp <[email protected]>
Looks good.
Quoted 8 lines
--- arch/x86/kvm/svm.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)arch/x86/kvm/svm.c +0
-0
...
arch/x86/kvm/svm.c static int rdmsr_interception(struct vcpu_svm *svm) · line 3146
Quoted 8 lines
arch/x86/kvm/svm.c +2
-2@@ -3142,8 +3142,8 @@ static int rdmsr_interception(struct vcpu_svm *svm) }else {trace_kvm_msr_read (ecx, data); - svm->vcpu.arch.regs[VCPU_REGS_RAX ] = data &0xffffffff ; - svm->vcpu.arch.regs[VCPU_REGS_RDX ] = data >>32 ; +kvm_register_write (&svm->vcpu,VCPU_REGS_RAX , data &0xffffffff ); +kvm_register_write (&svm->vcpu,VCPU_REGS_RDX , data >>32 );
Right, kvm is missing kvm_write_edx_eax() in addition to the read variant. Someone might want to do a patch and such, ^^hint hint^^...
:-)
Signature · 5 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--Marcelo Tosatti
AppliedQuoted 6 lines · Borislav Petkov
Quoted 5 lines · Joel Schopp
From: David Kaplan <[email protected]>
KVM has nice wrappers to access the register values, clean up a few places that should use them but currently do not.
Quoted 7 lines
Quoted 3 lines
Signed-off-by David Kaplan <[email protected]>[forward port and testing]Signed-off-by Joel Schopp <[email protected]>Looks good.
Acked-by Borislav Petkov <[email protected]>
Applied, thanks.