On 01/26/2011 12:24 PM, Avi Kivity wrote:
On 01/23/2011 01:25 PM, Matteo Signorini wrote:
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
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html