Re: [kvm-devel] [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

2007-11-18 Thread Avi Kivity
Sheng Yang wrote:
 From f8aca5afbc018e71dc37d2e6001bcec376499939 Mon Sep 17 00:00:00 2001
 From: Sheng Yang [EMAIL PROTECTED]
 Date: Fri, 16 Nov 2007 16:29:15 +0800
 Subject: [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

 For CR2 is unreliable and unavailable in many condition, this patch
 completely decode memory operand instead of using CR2 in x86 emulator.
   

Applied, thanks.

This is just a rename, right?  That means lods/stos was the last 
instance of using cr2.

-- 
error compiling committee.c: too many arguments to function


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

2007-11-18 Thread Sheng Yang
On Sunday 18 November 2007 18:35:22 Avi Kivity wrote:
 Sheng Yang wrote:
  From f8aca5afbc018e71dc37d2e6001bcec376499939 Mon Sep 17 00:00:00 2001
  From: Sheng Yang [EMAIL PROTECTED]
  Date: Fri, 16 Nov 2007 16:29:15 +0800
  Subject: [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator
 
  For CR2 is unreliable and unavailable in many condition, this patch
  completely decode memory operand instead of using CR2 in x86 emulator.

 Applied, thanks.

 This is just a rename, right?  That means lods/stos was the last
 instance of using cr2.

Yeah, I think so.

-- 
Thanks
Yang, Sheng

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

2007-11-16 Thread Sheng Yang
From f8aca5afbc018e71dc37d2e6001bcec376499939 Mon Sep 17 00:00:00 2001
From: Sheng Yang [EMAIL PROTECTED]
Date: Fri, 16 Nov 2007 16:29:15 +0800
Subject: [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

For CR2 is unreliable and unavailable in many condition, this patch
completely decode memory operand instead of using CR2 in x86 emulator.

Signed-off-by: Sheng Yang [EMAIL PROTECTED]
---
 drivers/kvm/x86.c |1 -
 drivers/kvm/x86_emulate.c |   18 +-
 drivers/kvm/x86_emulate.h |1 -
 3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
index 6d7f384..16b32bc 100644
--- a/drivers/kvm/x86.c
+++ b/drivers/kvm/x86.c
@@ -1352,7 +1352,6 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
 
vcpu-emulate_ctxt.vcpu = vcpu;
vcpu-emulate_ctxt.eflags = kvm_x86_ops-get_rflags(vcpu);
-   vcpu-emulate_ctxt.cr2 = cr2;
vcpu-emulate_ctxt.mode =
(vcpu-emulate_ctxt.eflags  X86_EFLAGS_VM)
? X86EMUL_MODE_REAL : cs_l
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index b9d2781..cbd50dd 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -1090,13 +1090,13 @@ static inline int emulate_grp45(struct 
x86_emulate_ctxt *ctxt,
 
 static inline int emulate_grp9(struct x86_emulate_ctxt *ctxt,
   struct x86_emulate_ops *ops,
-  unsigned long cr2)
+  unsigned long memop)
 {
struct decode_cache *c = ctxt-decode;
u64 old, new;
int rc;
 
-   rc = ops-read_emulated(cr2, old, 8, ctxt-vcpu);
+   rc = ops-read_emulated(memop, old, 8, ctxt-vcpu);
if (rc != 0)
return rc;
 
@@ -,7 +,7 @@ static inline int emulate_grp9(struct x86_emulate_ctxt 
*ctxt,
new = ((u64)c-regs[VCPU_REGS_RCX]  32) |
   (u32) c-regs[VCPU_REGS_RBX];
 
-   rc = ops-cmpxchg_emulated(cr2, old, new, 8, ctxt-vcpu);
+   rc = ops-cmpxchg_emulated(memop, old, new, 8, ctxt-vcpu);
if (rc != 0)
return rc;
ctxt-eflags |= EFLG_ZF;
@@ -1174,7 +1174,7 @@ static inline int writeback(struct x86_emulate_ctxt 
*ctxt,
 int
 x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
 {
-   unsigned long cr2 = ctxt-cr2;
+   unsigned long memop = 0;
u64 msr_data;
unsigned long saved_eip;
struct decode_cache *c = ctxt-decode;
@@ -1189,10 +1189,10 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct 
x86_emulate_ops *ops)
saved_eip = c-eip;
 
if (((c-d  ModRM)  (c-modrm_mod != 3)) || (c-d  MemAbs))
-   cr2 = c-modrm_ea;
+   memop = c-modrm_ea;
 
if (c-src.type == OP_MEM) {
-   c-src.ptr = (unsigned long *)cr2;
+   c-src.ptr = (unsigned long *)memop;
c-src.val = 0;
rc = ops-read_emulated((unsigned long)c-src.ptr,
c-src.val,
@@ -1208,7 +1208,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct 
x86_emulate_ops *ops)
 
 
if (c-dst.type == OP_MEM) {
-   c-dst.ptr = (unsigned long *)cr2;
+   c-dst.ptr = (unsigned long *)memop;
c-dst.bytes = (c-d  ByteOp) ? 1 : c-op_bytes;
c-dst.val = 0;
if (c-d  BitOp) {
@@ -1647,7 +1647,7 @@ twobyte_insn:
  ctxt-eflags);
break;
case 7: /* invlpg*/
-   emulate_invlpg(ctxt-vcpu, cr2);
+   emulate_invlpg(ctxt-vcpu, memop);
break;
default:
goto cannot_emulate;
@@ -1818,7 +1818,7 @@ twobyte_special_insn:
break;
}
case 0xc7:  /* Grp9 (cmpxchg8b) */
-   rc = emulate_grp9(ctxt, ops, cr2);
+   rc = emulate_grp9(ctxt, ops, memop);
if (rc != 0)
goto done;
break;
diff --git a/drivers/kvm/x86_emulate.h b/drivers/kvm/x86_emulate.h
index e34868b..c0a89c9 100644
--- a/drivers/kvm/x86_emulate.h
+++ b/drivers/kvm/x86_emulate.h
@@ -149,7 +149,6 @@ struct x86_emulate_ctxt {
 
/* Linear faulting address (if emulating a page-faulting instruction). 
*/
unsigned long eflags;
-   unsigned long cr2;
 
/* Emulated execution mode, represented by an X86EMUL_MODE value. */
int mode;
-- 
1.5.3.4

From f8aca5afbc018e71dc37d2e6001bcec376499939 Mon Sep 17 00:00:00 2001
From: Sheng Yang [EMAIL PROTECTED]
Date: Fri, 16 Nov 2007 16:29:15 +0800
Subject: [PATCH] KVM: x86 emulator: Discard CR2 in x86 emulator

For CR2 is unreliable and unavailable in many condition, this patch
completely decode