From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: elena.ufimtseva@oracle.com, tim@xen.org, wei.liu2@citrix.com,
ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com,
andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com,
xen-devel@lists.xen.org, roger.pau@citrix.com
Subject: Re: [PATCH v2 1/4] x86/compat: Test whether guest has 32b shinfo instead of being a PV 32b domain
Date: Wed, 08 Jul 2015 10:40:34 -0400 [thread overview]
Message-ID: <559D3662.4070803@oracle.com> (raw)
In-Reply-To: <559D4AF2020000780008E463@mail.emea.novell.com>
On 07/08/2015 10:08 AM, Jan Beulich wrote:
>>>> On 08.07.15 at 15:59, <boris.ostrovsky@oracle.com> wrote:
>> On 07/08/2015 02:48 AM, Jan Beulich wrote:
>>>>>> On 07.07.15 at 19:13, <boris.ostrovsky@oracle.com> wrote:
>>>> On 07/07/2015 12:15 PM, Jan Beulich wrote:
>>>>>>>> On 07.07.15 at 17:46, <boris.ostrovsky@oracle.com> wrote:
>>>>>> On 07/07/2015 05:11 AM, Jan Beulich wrote:
>>>>>>>>>> On 29.06.15 at 22:21, <boris.ostrovsky@oracle.com> wrote:
>>>>>>>> @@ -737,7 +737,7 @@ int arch_set_info_guest(
>>>>>>>>
>>>>>>>> /* The context is a compat-mode one if the target domain is
>> compat-mode;
>>>>>>>> * we expect the tools to DTRT even in compat-mode callers. */
>>>>>>>> - compat = is_pv_32on64_domain(d);
>>>>>>>> + compat = has_32bit_shinfo(d);
>>>>>>> Furthermore, looking at uses like this, tying such decisions to the
>>>>>>> shared info layout looks kind of odd. I think for documentation
>>>>>>> purposes we may need a differently named alias.
>>>>>> Yes, it does look odd, which is why I was asking in another thread about
>>>>>> having another field in domain structure (well, I was asking about
>>>>>> replacing has_32bit_shinfo but I think I can see now that wouldn't be
>>>>>> right).
>>>>>>
>>>>>> Are you suggesting a new macro, e.g.
>>>>>> #define is_32b_mode(d) ((d)->arch.has_32bit_shinfo)
>>>>>>
>>>>>> or would it better to add new field? Or get_mode() hvm op, similar to
>>>>>> set_mode(), which can look, say, at EFER?
>>>>> If looking at EFER (plus perhaps CS) is right in all the cases you
>>>>> care about, then yes. And remember we already have
>>>>> hvm_guest_x86_mode().
>>>> Can't use hvm_guest_x86_mode(), it asserts on 'v != current'. But adding
>>>> new op just because of that seems to be an overkill since it would
>>>> essentially do what .guest_x86_mode() does. How about
>>>> hvm_guest_x86_mode_unsafe() (with a better name) and wrap
>>>> hvm_guest_x86_mode() with the ASSERT around it?
>>> svm_guest_x86_mode() doesn't depend on v == current, but
>>> vmx_guest_x86_mode() would first need to be made safe (or
>>> get an "unsafe" sibling implementation). With that, the ASSERT()
>>> could then check for current or non-running vCPU.
>> By checking for non-running you mean v->is_running? I am not sure it's
>> safe to do since is_running is set in context switch before VMCS is
>> loaded later, in vmx_do_resume().
> No, I rather thought about making sure the vCPU is paused (i.e.
> can't become running under your feet).
What would prevent it from becoming running if it is paused, right after
the ASSERT?
-boris
>
>> OTOH, current itself is set before VMCS is loaded so I am not sure
>> whether the ASSERT in hvm_guest_x86_mode() is completely effective in
>> catching "bad" invocations anyway.
>>
>> I think we need vmx_vmcs_enter/exit in vmx_guest_x86_mode() regardless
>> of what current is. And drop the ASSERT.
> That's an option, but the current uses don't require that (and hence
> a change like that may be considered harming performance if some
> caller sits on a hot path).
next prev parent reply other threads:[~2015-07-08 14:40 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-29 20:21 [PATCH v2 0/4] 32-bit domU PVH support Boris Ostrovsky
2015-06-29 20:21 ` [PATCH v2 1/4] x86/compat: Test whether guest has 32b shinfo instead of being a PV 32b domain Boris Ostrovsky
2015-07-07 9:11 ` Jan Beulich
2015-07-07 15:46 ` Boris Ostrovsky
2015-07-07 16:15 ` Jan Beulich
2015-07-07 17:13 ` Boris Ostrovsky
2015-07-08 6:48 ` Jan Beulich
2015-07-08 13:59 ` Boris Ostrovsky
2015-07-08 14:08 ` Jan Beulich
2015-07-08 14:40 ` Boris Ostrovsky [this message]
2015-07-08 14:50 ` Jan Beulich
2015-07-08 20:57 ` Boris Ostrovsky
2015-07-09 7:02 ` Jan Beulich
2015-07-09 14:10 ` Boris Ostrovsky
2015-07-09 14:17 ` Jan Beulich
2015-07-09 14:30 ` Boris Ostrovsky
2015-07-09 16:05 ` Boris Ostrovsky
2015-07-09 16:15 ` Jan Beulich
2015-06-29 20:21 ` [PATCH v2 2/4] x86/pvh: Set 32b PVH guest mode in XEN_DOMCTL_set_address_size Boris Ostrovsky
2015-07-07 9:15 ` Jan Beulich
2015-07-07 15:53 ` Boris Ostrovsky
2015-07-07 16:16 ` Jan Beulich
2015-06-29 20:21 ` [PATCH v2 3/4] x86/pvh: Handle hypercalls for 32b PVH guests Boris Ostrovsky
2015-07-07 9:20 ` Jan Beulich
2015-07-07 15:54 ` Boris Ostrovsky
2015-06-29 20:21 ` [PATCH v2 4/4] libxc/x86/pvh: Allow creation of " Boris Ostrovsky
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=559D3662.4070803@oracle.com \
--to=boris.ostrovsky@oracle.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=elena.ufimtseva@oracle.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=roger.pau@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--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.