|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: problem in using MSR in the hypervisor
I added code in the hypervisor to manipulate MSR. Here is my code in
emulate_privileged_op() in the Xen hypervisor:
....
// for WRMSR
case MSR_P4_IQ_PERFCTR0:
case MSR_P4_IQ_CCCR0:
case MSR_P4_CRU_ESCR0:
case MSR_P4_IQ_PERFCTR2:
case MSR_P4_IQ_CCCR2:
case MSR_P4_CRU_ESCR1:
wrmsr_safe(regs->ecx, eax, edx);
break;
......
// for RDMSR
case MSR_P4_IQ_PERFCTR0:
case MSR_P4_IQ_CCCR0:
case MSR_P4_CRU_ESCR0:
case MSR_P4_IQ_PERFCTR2:
case MSR_P4_IQ_CCCR2:
case MSR_P4_CRU_ESCR1:
printk("the_cs = 0x%x\n", the_cs);
__asm__ volatile(
"mov %%cs, %0\n"
:"=r"(the_cs)
:
);
printk("the_cs = 0x%x\n", the_cs);
rdmsr_safe(regs->ecx, regs->eax, regs->edx);
break;
The wrmsr_safe() and rdmsr_safe() trigger a general protection fault,
and the value read from the msr is 0. But I printed out the cs
descriptor, and found the CPL is 0. Why there is a general protection
fault here? How can I fix this?
thanks,
long
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|