Re: [PATCH] x86: svm: use kvm_register_write()/read()

2015-02-20 Thread Joel Schopp

On 02/20/2015 02:54 PM, Borislav Petkov wrote:
> On Fri, Feb 20, 2015 at 12:39:40PM -0600, Joel Schopp wrote:
>> 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 
>> Signed-off-by:Joel Schopp 
> This SOB chain looks strange. If David is the author, you want to have
> him in From: at the beginning of the patch.
>
> Stuff you did ontop should be in []-braces before your SOB, like this:
Will resend with From: line and braces for clarification.

>
> Signed-off-by: David Kaplan 
> [ Did this and that to patch. ]
> Signed-off-by: Joel Schopp 
>

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] x86: svm: use kvm_register_write()/read()

2015-02-20 Thread Borislav Petkov
On Fri, Feb 20, 2015 at 12:39:40PM -0600, Joel Schopp wrote:
> 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 
> Signed-off-by:Joel Schopp 

This SOB chain looks strange. If David is the author, you want to have
him in From: at the beginning of the patch.

Stuff you did ontop should be in []-braces before your SOB, like this:

Signed-off-by: David Kaplan 
[ Did this and that to patch. ]
Signed-off-by: Joel Schopp 

-- 
Regards/Gruss,
Boris.

ECO tip #101: Trim your mails when you reply.
--
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] x86: svm: use kvm_register_write()/read()

2015-02-20 Thread Joel Schopp
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 
Signed-off-by:Joel Schopp 
---
 arch/x86/kvm/svm.c |   19 +--
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index d319e0c..a7d88e4 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -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 & 0x;
-   svm->vcpu.arch.regs[VCPU_REGS_RDX] = data >> 32;
+   kvm_register_write(&svm->vcpu, VCPU_REGS_RAX, data & 
0x);
+   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;

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html