All of lore.kernel.org
 help / color / mirror / Atom feed
From: Emre Can Sezer <ecsezer@ncsu.edu>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: Xen Devel <xen-devel@lists.xensource.com>
Subject: Re: x86 instruction emulation in hvm
Date: Mon, 11 May 2009 18:15:37 -0400	[thread overview]
Message-ID: <4A08A389.9060200@ncsu.edu> (raw)
In-Reply-To: <C6290823.A474%keir.fraser@eu.citrix.com>

Yup.  Not only did hvm_get_segment_register() work like a charm, but I 
also ran into another problem as you have foretold.

The instruction is fxsave, which uses a mask to copy some CPU 
information to a 512byte memory.  Any chance of an emulation function 
for this instruction?

As a side note, I know of quite a few research papers that mention 
emulating memory writes to pages, some using Xen.  This leads me to 
believe that the problem of emulating most of these functions should 
have been solved.  I know it's not relevant for Xen production code, but 
I'm wondering if there is a full emulator (perhaps QEMU?) inside Xen 
that I can switch to instead of trying to add these functionalities in 
an ad-hoc manner?

John



Keir Fraser wrote:
> On 07/05/2009 20:39, "Emre Can Sezer" <ecsezer@ncsu.edu> wrote:
>
>   
>> I'm running an HVM guest using shadow page tables on a 64bit machine.
>> I'm working on a project where I mark certain pages read-only and
>> capture the writes into these pages.  I then try to emulate the write
>> instructions using x86_emulate as is done in arch/x86/mm/shadow/multi.c.
>>
>> The instruction I'm trying to emulate is:
>> asm("mov %%gs,%0" : "=m" (p->thread.gsindex));
>>
>> Since the source operand is a segment register, and the x86_emulate_ops
>> structure that is being used does not have a ops->read_segment function
>> defined, the emulation fails.
>>
>> Is there an easy way to add or activate this functionality?  Perhaps a
>> full emulator, since one would expect to see other cases of memory
>> writes that are not handled as well.
>>     
>
> Easily implemented -- you pass through to hvm_get_segment_register(). My
> guess is you'll quickly fault on another instruction which is not so easily
> fixed up, however.
>
>  -- Keir
>
>
>   

  reply	other threads:[~2009-05-11 22:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-14 22:16 Xen Guest Memory Isolation Ahmed Azab
2009-04-15  8:34 ` Tim Deegan
2009-05-07 19:39   ` x86 instruction emulation in hvm Emre Can Sezer
2009-05-07 20:50     ` Keir Fraser
2009-05-11 22:15       ` Emre Can Sezer [this message]
2009-05-12  7:57         ` Keir Fraser
2009-06-05 18:43           ` Interrupt for HVM guests Emre Can Sezer
2009-06-05 18:58             ` Keir Fraser
2009-06-08 19:24               ` Emre Can Sezer
2009-06-08 21:29                 ` Keir Fraser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A08A389.9060200@ncsu.edu \
    --to=ecsezer@ncsu.edu \
    --cc=keir.fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.