All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <JBeulich@suse.com>,
	Mukesh Rathor <mukesh.rathor@oracle.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	boris.ostrovsky@oracle.com, Aravind.Gopalakrishnan@amd.com,
	suravee.suthikulpanit@amd.com
Subject: Re: [RFH]: AMD CR intercept for lmsw/clts
Date: Tue, 05 Aug 2014 14:00:25 +0100	[thread overview]
Message-ID: <53E0D569.2030700@citrix.com> (raw)
In-Reply-To: <53E0E61F0200007800029731@mail.emea.novell.com>

On 05/08/2014 13:11, Jan Beulich wrote:
>>>> On 05.08.14 at 13:16, <andrew.cooper3@citrix.com> wrote:
>> On 05/08/2014 08:46, Jan Beulich wrote:
>>> I'd prefer this - it seems pretty ugly to me that handle_mmio()/
>>> x86_emulate() gets used for this purpose - but am not certain this
>>> will actually work out nicely for other than CLTS: All the
>>> instructions currently handled specially are ones with fixed
>>> operands, and only CLTS fits that.
>>>
>>> You'll btw have the same problem with SMSW and DRx accesses,
>>> string I/O instructions, as well as (on older CPUs) with moves to/from
>>> CRx and INVLPG.
>> SMSW certainly, but what is wrong with the others?  For those, the exit
>> info appears to give fully decoded information.
> All the decoding info is conditional upon decoding assists being
> available. And for string I/O handle_mmio() is being used kind of
> unconditionally.

The decode assists apply strictly to mov CRx/DRx, INTn, INVLPG and
(nested) #PF.  In contrast, the IOIO intercept appears to
unconditionally fill the decode information in exitinfo1, so I believe
the current code is correct.

>
>>> In the case this doesn't turn out reasonable, rather than
>>> manipulating handle_mmio() any further, I'd suggest to investigate
>>> bypassing that function in favor of a more direct access to the x86
>>> emulator. After all you're not after any MMIO emulation here, just
>>> bare instructions (many of which without memory operands at all).
>> In the AMD System manual (vol 2), there are special cases listed for
>> lmsw, clts and smsw in section 15.8.1.  In each case, bit 63 of
>> exitinfo1 will be clear (which is checked using magic numbers in the
>> code).  It would appear that under these circumstances, the only
>> information provided is "it wasn't a mov instruction".
> Right, except that at least for CLTS (not having any operands) the
> light weight decoding could still be used. I'd even think decoding the
> CRx/DRx moves would be okay as they only permit register
> operands. But with LMSW and SMSW having memory operands it
> would indeed start to become like re-implementing x86_emulate().
> Question is whether one couldn't simply forbid PVH guests to use
> them, as moves to/from CR0 provide all the needed functionality.

I think that is a very dangerous route to take.

Despite the current limitations, I firmly believe that PVH should be HVM
- device model, rather than PV + VMX/SVM.  Restricting the use of
certain instructions would certainly move PVH into the latter category.

Fundamentally, the end goal of PVH needs deciding ASAP, and documenting,
to help guide decisions like this.

~Andrew

  reply	other threads:[~2014-08-05 13:00 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-05  1:33 [RFH]: AMD CR intercept for lmsw/clts Mukesh Rathor
2014-08-05  7:46 ` Jan Beulich
2014-08-05 11:16   ` Andrew Cooper
2014-08-05 12:11     ` Jan Beulich
2014-08-05 13:00       ` Andrew Cooper [this message]
2014-08-05 13:15         ` Jan Beulich
2014-08-05 22:30         ` Mukesh Rathor
2014-08-06  9:34           ` Andrew Cooper
2014-08-15 21:04             ` Konrad Rzeszutek Wilk
2014-08-15 21:48               ` Andrew Cooper
2014-08-05 22:22   ` Mukesh Rathor

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=53E0D569.2030700@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=Aravind.Gopalakrishnan@amd.com \
    --cc=JBeulich@suse.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=mukesh.rathor@oracle.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=xen-devel@lists.xenproject.org \
    /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.