xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: Tamas K Lengyel <tamas.k.lengyel@gmail.com>
Cc: "Tamas K Lengyel" <tamas.lengyel@intel.com>,
	"Wei Liu" <wl@xen.org>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: [PATCH for-4.14] x86/hap: use get_gfn_type in hap_update_paging_modes
Date: Wed, 17 Jun 2020 16:24:25 +0200	[thread overview]
Message-ID: <15ff55e0-2b75-b1dd-9fa5-3b50f7aa8d9c@suse.com> (raw)
In-Reply-To: <CABfawhk4N9MsjWqf87hPpyEHP27E=SpiHUSC+bVhAh4xW9-n8w@mail.gmail.com>

On 17.06.2020 15:43, Tamas K Lengyel wrote:
> On Wed, Jun 17, 2020 at 7:36 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 17.06.2020 15:31, Tamas K Lengyel wrote:
>>> On Wed, Jun 17, 2020 at 7:28 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>>
>>>> On 17.06.2020 15:21, Tamas K Lengyel wrote:
>>>>> On Wed, Jun 17, 2020 at 7:04 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>>>>
>>>>>> On 17.06.2020 15:00, Tamas K Lengyel wrote:
>>>>>>> On Wed, Jun 17, 2020 at 3:59 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>>>>>> If there are code paths of both kinds, which approach to use in
>>>>>>>> vmx_load_pdptrs() may need to be chosen based on what
>>>>>>>> paging_locked_by_me() returns. Or perhaps an unlocked query is
>>>>>>>> fine in either case?
>>>>>>>
>>>>>>> Perhaps adjusting vmx_load_pdptrs to chose the unlocked query would be
>>>>>>> fine. But at that point what is the reason for having the lock
>>>>>>> ordering at all? Why not just have a single recursive lock and avoid
>>>>>>> issues like this altogether?
>>>>>>
>>>>>> With just a single lock, contention problems we already know we
>>>>>> have would be even worse. When the current locking model was
>>>>>> introduced, there was actually a plan to make gfn_lock() more
>>>>>> fine-grained (i.e. not simply "de-generate" to p2m_lock()), for
>>>>>> example.
>>>>>
>>>>> Sigh. Well, I've been checking and adjust vmx_load_pdptrs to use an
>>>>> unlocked query doesn't seem as straightforward because, well, there is
>>>>> no unlocked version of p2m_get_page_from_gfn which would also do the
>>>>> "fixups".
>>>>
>>>> Which fixups do we need here, in particular? Of course, whenever
>>>> any fixups get done, the operation can't be lock-less.
>>>>
>>>>> What seems redundant to me though is that
>>>>> hap_update_paging_modes takes both the p2m_lock via get_gfn PLUS the
>>>>> paging_lock. Does it really need to take the paging_lock?
>>>>
>>>> From mm-locks.h's comments:
>>>>
>>>>  * For HAP, it protects the NPT/EPT tables and mode changes.
>>>
>>> We do the population of the EPT as part of fork_page() if there was a
>>> hole in the p2m when the query was issued using P2M_ALLOC (or
>>> P2M_UNSHARE). I checked and without the paging lock held it throws up
>>> at hap_alloc's ASSERT.. So yea, currently I don't think we have a
>>> better route then what I currently sent in.
>>
>> You didn't answer my question regarding the "fixups" needed, so
>> for the moment it's not clear to me yet whether indeed there's
>> no better way.
> 
> Umm, I did. The fixups entail populating the EPT from the parent as I
> described above.

Isn't this taken care of by the new call to get_gfn_type() which you add?
As said before, I think at the point we want to obtain the PDPTs all
other adjustments and arrangements should have been done already, by
higher layers. This code should have no need to do anything beyond a
simple lookup.

Jan


  reply	other threads:[~2020-06-17 14:24 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-16 19:31 [PATCH for-4.14] x86/hap: use get_gfn_type in hap_update_paging_modes Tamas K Lengyel
2020-06-17  8:23 ` Roger Pau Monné
2020-06-17 12:49   ` Tamas K Lengyel
2020-06-17 14:29     ` Roger Pau Monné
2020-06-17 14:45       ` Tamas K Lengyel
2020-06-17  9:58 ` Jan Beulich
2020-06-17 13:00   ` Tamas K Lengyel
2020-06-17 13:04     ` Jan Beulich
2020-06-17 13:21       ` Tamas K Lengyel
2020-06-17 13:28         ` Jan Beulich
2020-06-17 13:31           ` Tamas K Lengyel
2020-06-17 13:36             ` Jan Beulich
2020-06-17 13:43               ` Tamas K Lengyel
2020-06-17 14:24                 ` Jan Beulich [this message]
2020-06-17 14:49                   ` Tamas K Lengyel
2020-06-17 15:46                     ` Jan Beulich
2020-06-17 15:54                       ` Tamas K Lengyel
2020-06-17 15:59                         ` Tamas K Lengyel

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=15ff55e0-2b75-b1dd-9fa5-3b50f7aa8d9c@suse.com \
    --to=jbeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=roger.pau@citrix.com \
    --cc=tamas.k.lengyel@gmail.com \
    --cc=tamas.lengyel@intel.com \
    --cc=wl@xen.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).