 
	
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: problem in using MSR in the hypervisor
 I first used wrmsr_safe() to write a non-zero value into the msr
(MSR_P4_IQ_PERFCTR0), and then read the msr by rdmsr_safe(). But zero
is read.
long
On Fri, Oct 8, 2010 at 4:42 PM, Long Wang <longwang.longwang@xxxxxxxxx> wrote:
> 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
 
 | 
|  | Lists.xenproject.org is hosted with RackSpace, monitoring our |