From: Sean Christopherson <seanjc@google.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Paul Durrant <paul@xen.org>, Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 05/15] KVM: pfncache: remove KVM_GUEST_USES_PFN usage
Date: Mon, 27 Nov 2023 15:36:07 -0800 [thread overview]
Message-ID: <ZWUn50A5vxiTd-ZT@google.com> (raw)
In-Reply-To: <a1ebd80f87229fe513f9c2256982ef6c1d0cca2a.camel@infradead.org>
On Tue, Nov 21, 2023, David Woodhouse wrote:
> On Tue, 2023-11-21 at 18:02 +0000, Paul Durrant wrote:
> > From: Paul Durrant <pdurrant@amazon.com>
> >
> > As noted in [1] the KVM_GUEST_USES_PFN usage flag is never set by any
> > callers of kvm_gpc_init(), which also makes the 'vcpu' argument redundant.
> > Moreover, all existing callers specify KVM_HOST_USES_PFN so the usage
> > check in hva_to_pfn_retry() and hence the 'usage' argument to
> > kvm_gpc_init() are also redundant.
> > Remove the pfn_cache_usage enumeration and remove the redundant arguments,
> > fields of struct gfn_to_hva_cache, and all the related code.
> >
> > [1] https://lore.kernel.org/all/ZQiR8IpqOZrOpzHC@google.com/
> >
> > Signed-off-by: Paul Durrant <pdurrant@amazon.com>
>
> I think it's https://lore.kernel.org/all/ZBEEQtmtNPaEqU1i@google.com/
Yeah, that's the more important link.
> which is the key reference. I'm not sure I'm 100% on board, but I never
> got round to replying to Sean's email because it was one of those "put
> up or shut up situations" and I didn't have the bandwidth to actually
> write the code to prove my point.
>
> I think it *is* important to support non-pinned pages. There's a reason
> we even made the vapic page migratable. We want to support memory
> hotplug, we want to cope with machine checks telling us to move certain
> pages (which I suppose is memory hotplug). See commit 38b9917350cb
> ("kvm: vmx: Implement set_apic_access_page_addr") for example.
The vAPIC page is slightly different in that it effectively never opened a window
for page migration, i.e. once a vCPU was created that page was stuck. For nested
virtualization pages, the probability of being able to migrate a page at any given
time might be relatively low, but it's extremely unlikely for a page to be pinned
for the entire lifetime of a (L1) VM.
> I agree that in the first round of the nVMX code there were bugs. And
> sure, of *course* it isn't sufficient to wire up the invalidation
> without either a KVM_REQ_SOMETHIMG to put it back, or just a *check* on
> the corresponding gpc on the way back into the guest. We'd have worked
> that out.
Maybe. I spent most of a day, maybe longer, hacking at the nVMX code and was
unable to get line of sight to an end result that I felt would be worth pursuing.
I'm definitely not saying it's impossible, and I'm not dead set against
re-introducing KVM_GUEST_USES_PFN or similar, but a complete solution crosses the
threshold where it's unreasonable to ask/expect someone to pick up the work in
order to get their code/series merged.
Which is effectively what you said below, I just wanted to explain why I'm pushing
to remove KVM_GUEST_USES_PFN, and to say that if you or someone else were to write
the code it wouldn't be an automatic nak.
> And yes, the gpc has had bugs as we implemented it, but the point was
> that we got to something which *is* working, and forms a usable
> building block.
>
> So I'm not really sold on the idea of ditching KVM_GUEST_USES_PFN. I
> think we could get it working, and I think it's worth it. But my
> opinion is worth very little unless I express it in 'diff -up' form
> instead of prose, and reverting this particular patch is the least of
> my barriers to doing so, so reluctantly...
next prev parent reply other threads:[~2023-11-27 23:36 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-21 18:02 [PATCH v8 00/15] KVM: xen: update shared_info and vcpu_info handling Paul Durrant
2023-11-21 18:02 ` [PATCH v8 01/15] KVM: pfncache: Add a map helper function Paul Durrant
2023-11-21 18:02 ` [PATCH v8 02/15] KVM: pfncache: remove unnecessary exports Paul Durrant
2023-11-21 21:49 ` David Woodhouse
2023-11-22 8:44 ` Paul Durrant
2023-11-21 18:02 ` [PATCH v8 03/15] KVM: xen: mark guest pages dirty with the pfncache lock held Paul Durrant
2023-11-21 21:49 ` David Woodhouse
2023-11-21 18:02 ` [PATCH v8 04/15] KVM: pfncache: add a mark-dirty helper Paul Durrant
2023-11-21 18:02 ` [PATCH v8 05/15] KVM: pfncache: remove KVM_GUEST_USES_PFN usage Paul Durrant
2023-11-21 22:24 ` David Woodhouse
2023-11-27 23:36 ` Sean Christopherson [this message]
2023-11-21 18:02 ` [PATCH v8 06/15] KVM: pfncache: stop open-coding offset_in_page() Paul Durrant
2023-11-21 22:26 ` David Woodhouse
2023-11-21 18:02 ` [PATCH v8 07/15] KVM: pfncache: include page offset in uhva and use it consistently Paul Durrant
2023-11-21 22:35 ` David Woodhouse
2023-11-22 9:29 ` Paul Durrant
2023-11-22 8:54 ` Xu Yilun
2023-11-22 9:12 ` David Woodhouse
2023-11-22 14:27 ` Xu Yilun
2023-11-22 15:42 ` David Woodhouse
2023-11-22 15:52 ` Paul Durrant
2023-11-21 18:02 ` [PATCH v8 08/15] KVM: pfncache: allow a cache to be activated with a fixed (userspace) HVA Paul Durrant
2023-11-21 22:47 ` David Woodhouse
2023-11-22 10:07 ` Paul Durrant
2023-11-21 18:02 ` [PATCH v8 09/15] KVM: xen: allow shared_info to be mapped by fixed HVA Paul Durrant
2023-11-21 18:02 ` [PATCH v8 10/15] KVM: xen: allow vcpu_info " Paul Durrant
2023-11-21 18:02 ` [PATCH v8 11/15] KVM: selftests / xen: map shared_info using HVA rather than GFN Paul Durrant
2023-11-21 18:02 ` [PATCH v8 12/15] KVM: selftests / xen: re-map vcpu_info using HVA rather than GPA Paul Durrant
2023-11-21 18:02 ` [PATCH v8 13/15] KVM: xen: advertize the KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA capability Paul Durrant
2023-11-21 18:02 ` [PATCH v8 14/15] KVM: xen: split up kvm_xen_set_evtchn_fast() Paul Durrant
2023-11-21 22:49 ` David Woodhouse
2023-11-21 18:02 ` [PATCH v8 15/15] KVM: xen: allow vcpu_info content to be 'safely' copied Paul Durrant
2023-11-21 22:53 ` David Woodhouse
2023-11-22 10:39 ` David Woodhouse
2023-11-22 10:55 ` Paul Durrant
2023-11-22 11:25 ` David Woodhouse
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=ZWUn50A5vxiTd-ZT@google.com \
--to=seanjc@google.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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.