Thread (3 messages) 3 messages, 3 authors, 2011-01-27

Re: ms_sysenter_eip zero value

From: Matteo <hidden>
Date: 2011-01-27 13:02:13

On 01/26/2011 12:24 PM, Avi Kivity wrote:
On 01/23/2011 01:25 PM, Matteo Signorini wrote:
quoted
Hi,

I'm having some problems understanding the sysenter instruction.
As far as I know, in order to successfully call the sysenter 
instruction,
MSR_IA32_SYSENTER_CS and MSR_IA32_SYSENTER_EIP registers have to be
correctly set.

So I printed the value of such registers while the VM was running but
the output is 0 for both.

now:

1) I'm having this problem ONLY with the Intel CPU (vmx.c source code).
When I run the same code on an AMD CPU (svm.c source code)
MSR_IA32_SYSENTER_EIP and MSR_IA32_SYSENTER_CS contain nonzero values.

2) I am 100% sure the guest is not executing an int80 but a sysenter

so there is something here I can't understand...
please help me solving this problem.
How are you printing out the values? Maybe the problem is there?
arguably there is something I'm doing wrong but I don't think it's the  print format.

Let me explain what I'm doing. I have modified a little bit the  "cpu_dump_state" function called by the monitor's "do_info_registers"  function in order to print  an additional element and precisely the env->sysenter_cs/eip value.

Now, as stated before I don't think the problem is the format because if  I  use the same code on an AMD machine, the value printed during the VM  execution is a  non zero value so I'm wondering why this difference from amd and intel?

Matteo

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help