From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Tim Deegan <tim@xen.org>, IanCampbell <Ian.Campbell@citrix.com>,
Xen-devel List <xen-devel@lists.xen.org>
Subject: Re: Xen-4.5 HVMOP ABI issues
Date: Fri, 28 Nov 2014 15:46:47 +0000 [thread overview]
Message-ID: <547898E7.30400@citrix.com> (raw)
In-Reply-To: <5478A056020000780004B7CE@mail.emea.novell.com>
On 28/11/14 15:18, Jan Beulich wrote:
>>>> On 28.11.14 at 14:55, <andrew.cooper3@citrix.com> wrote:
>> The problem is with continuations which reuse the upper bits of the
>> input register, not with this HVMOP_op_mask specifically; the
>> HVMOP_op_mask simply adds to an existing problem. This is something
>> which needs considering urgently because, as you identify above, we have
>> already suffered an accidental ABI breakage with the mem-op widening.
> Since we can't retroactively fix the mem-op widening, I still don't see
> what's urgent here: As long as we don't change any of these masks,
> nothing bad is going to happen. Of course one thing to consider with
> this aspect in mind is whether to change the hvm-op or gnttab-op
> masks again _before_ 4.5 goes out, based on whether we feel they're
> wide enough for the (un)foreseeable future.
By urgent, I mean exactly this, while we have the ability to tweak the
masks.
>
>> 32bit HVM guests reliably form a continuation on every single iteration
>> of a continuable hypercall (e.g. decrease reservation, which is the base
>> of my XSA-111 PoC), making it trivial to construct a migrateable HVM
>> domain which exposes the issue.
> Hmm, I can't offhand see why that would be, but what you write
> reads like you determined the reason?
I have never identified why, but it is reliable. c/s 79de2d31f1 proves
that some preemption condition is true for 32bit HVM guests by the time
the hypercall handler is called. It is unreliable with 64bit HVM
guests, suggesting that the compat translation layer may be the root
cause of the issue.
> I ask because an unavoidable
> use of continuations is certainly nice for making sure those code paths
> get tested, but would be quite desirable to get eliminated at least for
> non-debug builds.
While the preemption code is necessary to avoid spending ludicrous
quantities of time synchronously in Xen, it is currently having the
worst possible effect it could have on the system, by causing 32bit HVM
guests to undergo a vmentry/vmexit and double compat translation for
each iteration.
~Andrew
next prev parent reply other threads:[~2014-11-28 15:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-28 11:36 Xen-4.5 HVMOP ABI issues Andrew Cooper
2014-11-28 13:07 ` Jan Beulich
2014-11-28 13:11 ` Ian Campbell
2014-11-28 13:55 ` Andrew Cooper
2014-11-28 15:18 ` Jan Beulich
2014-11-28 15:46 ` Andrew Cooper [this message]
2014-12-04 13:49 ` Jan Beulich
2014-12-04 14:28 ` Andrew Cooper
2014-12-04 14:55 ` Jan Beulich
2014-12-04 15:46 ` Andrew Cooper
2014-12-04 16:11 ` Jan Beulich
2014-12-04 16:45 ` Andrew Cooper
2014-12-04 15:49 ` Tim Deegan
2014-12-05 2:19 ` Konrad Rzeszutek Wilk
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=547898E7.30400@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=JBeulich@suse.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.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.