[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] RE: [Xen-changelog] [xen-unstable] x86_emulate: Emulate RDTSCP instruction.



Is this patch supposed to allow an application
in an HVM domain to successfully execute an rdtscp
instruction even on a processor that doesn't have
hardware support for the instruction?

If so, I tried it and it doesn't seem to work.
The app segfaults (same, I think, as it did before
the patch).

> -----Original Message-----
> From: Xen patchbot-unstable
> [mailto:patchbot-unstable@xxxxxxxxxxxxxxxxxxx]
> Sent: Wednesday, December 16, 2009 7:00 AM
> To: xen-changelog@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-changelog] [xen-unstable] x86_emulate: Emulate RDTSCP
> instruction.
> 
> 
> # HG changeset patch
> # User Keir Fraser <keir.fraser@xxxxxxxxxx>
> # Date 1260967518 0
> # Node ID cbcb3d564b2fb51574b8a1d06cd6e7780839c331
> # Parent  b543acc1aaad743f20e8ee44ab048ca239350685
> x86_emulate: Emulate RDTSCP instruction.
> 
> Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
> ---
>  xen/arch/x86/x86_emulate/x86_emulate.c |   13 ++++++++++++-
>  1 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff -r b543acc1aaad -r cbcb3d564b2f 
> xen/arch/x86/x86_emulate/x86_emulate.c
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c  Wed Dec 16 
> 12:32:35 2009 +0000
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c  Wed Dec 16 
> 12:45:18 2009 +0000
> @@ -292,6 +292,7 @@ struct operand {
>  #define MSR_LSTAR        0xc0000082
>  #define MSR_CSTAR        0xc0000083
>  #define MSR_FMASK        0xc0000084
> +#define MSR_TSC_AUX      0xc0000103
>  
>  /* Control register flags. */
>  #define CR0_PE    (1<<0)
> @@ -3503,6 +3504,16 @@ x86_emulate(
>              break;
>          }
>  
> +        if ( modrm == 0xf9 ) /* rdtscp */
> +        {
> +            uint64_t tsc_aux;
> +            fail_if(ops->read_msr == NULL);
> +            if ( (rc = ops->read_msr(MSR_TSC_AUX, &tsc_aux, 
> ctxt)) != 0 )
> +                goto done;
> +            _regs.ecx = (uint32_t)tsc_aux;
> +            goto rdtsc;
> +        }
> +
>          switch ( modrm_reg & 7 )
>          {
>          case 0: /* sgdt */
> @@ -3712,7 +3723,7 @@ x86_emulate(
>          break;
>      }
>  
> -    case 0x31: /* rdtsc */ {
> +    case 0x31: rdtsc: /* rdtsc */ {
>          unsigned long cr4;
>          uint64_t val;
>          if ( !mode_ring0() )
> 
> _______________________________________________
> Xen-changelog mailing list
> Xen-changelog@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-changelog
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.