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

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



Looks like it works now.

> -----Original Message-----
> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> Sent: Wednesday, December 16, 2009 3:30 PM
> To: Dan Magenheimer; xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [Xen-changelog] [xen-unstable] x86_emulate: 
> Emulate RDTSCP
> instruction.
> 
> 
> Would have done if the original HVM TSC_AUX patch was up to it. I've
> rewritten it about 1/4 the size and does more, as c/s 20646.
> 
>  -- Keir
> 
> On 16/12/2009 20:27, "Dan Magenheimer" 
> <dan.magenheimer@xxxxxxxxxx> wrote:
> 
> > 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®.