From: Sean Christopherson <seanjc@google.com>
To: Anish Moorthy <amoorthy@google.com>
Cc: oliver.upton@linux.dev, kvm@vger.kernel.org,
kvmarm@lists.linux.dev, pbonzini@redhat.com, maz@kernel.org,
robert.hoo.linux@gmail.com, jthoughton@google.com,
ricarkol@google.com, axelrasmussen@google.com,
peterx@redhat.com, nadav.amit@gmail.com,
isaku.yamahata@gmail.com, kconsul@linux.vnet.ibm.com
Subject: Re: [PATCH v5 10/17] KVM: Implement KVM_CAP_USERFAULT_ON_MISSING by atomizing __gfn_to_pfn_memslot() calls
Date: Fri, 6 Oct 2023 00:17:48 +0000 [thread overview]
Message-ID: <ZR9SLOQcFEqPg01A@google.com> (raw)
In-Reply-To: <CAF7b7mqUkP1jDf_TF_DpGcAKqn+nYx4ZPasW00qT4nOr-76e_Q@mail.gmail.com>
On Thu, Oct 05, 2023, Anish Moorthy wrote:
> On Wed, Oct 4, 2023 at 6:44 PM Sean Christopherson <seanjc@google.com> wrote:
> >
> > Eh, the shortlog basically says "do work" with a lot of fancy words. It really
> > just boils down to:
> >
> > KVM: Let callers of __gfn_to_pfn_memslot() opt-out of USERFAULT_ON_MISSING
> >
> > On Fri, Sep 08, 2023, Anish Moorthy wrote:
> > > Change the "atomic" parameter of __gfn_to_pfn_memslot() to an enum which
> >
> > I've pushed back on more booleans multiple times, but IMO this is even worse.
> > E.g. what does an "upgrade" to atomic even mean?
>
> Oh, that bad huh? Based on what you mentioned earlier about some
> callers of __gfn_to_pfn_memslot() needing to opt out of the memslot
> flag, it seemed like there were basically three ways (wrt to @atomic)
> that function needed to be called
>
> 1. With atomic = true
> 2. With atomic = false, and some way to make sure that's respected
> whatever the memslot flag says
> 3. With atomic = false, but respecting the memslot flag (ie, changing
> to atomic = true when it's set).
>
> An "upgrade" in this context was meant to describe case 3 (when the
> memslot flag is set). Anyways despite terminology issues, the idea of
> an enum encapsulating those three cases seems like, essentially, the
> right thing to do. Though of course, let me know if you disagree :)
The problem is that the three possibilities aren't directly related. The existing
use of atomic truly means "this call can't sleep/block". The userfault-on-missing
case has nothing to do with sleeping being illegal, the behavior of @atomic just
happens to align exactly with what is needed *today*.
E.g. if there was a flavor of gup() that could fault in memory without sleeping,
that could be used for the @atomic case but not the userfault-on-missing case.
I doubt such a variation will ever exist, but "that probably won't happen" isn't
a good reason to conflate the two things.
> > Since we have line of sight to getting out of boolean hell via David's series,
> > just bite the bullet for now. Deciphering the callers will suck, but not really
> > anymore than it already sucks.
>
> Sorry, what exactly are you suggesting via "bite the bullet" here?
Add another boolean, the "bool can_do_userfault" from the diff that got snipped.
next prev parent reply other threads:[~2023-10-06 0:17 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-08 22:28 [PATCH v5 00/17] Improve KVM + userfaultfd live migration via annotated memory faults Anish Moorthy
2023-09-08 22:28 ` [PATCH v5 01/17] KVM: Clarify documentation of hva_to_pfn()'s 'atomic' parameter Anish Moorthy
2023-09-08 22:28 ` [PATCH v5 02/17] KVM: Add docstrings to __kvm_read/write_guest_page() Anish Moorthy
2023-10-05 1:18 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 03/17] KVM: Simplify error handling in __gfn_to_pfn_memslot() Anish Moorthy
2023-09-08 22:28 ` [PATCH v5 04/17] KVM: Add KVM_CAP_MEMORY_FAULT_INFO Anish Moorthy
2023-10-05 1:14 ` Sean Christopherson
2023-10-05 18:45 ` Anish Moorthy
2023-10-05 22:13 ` Sean Christopherson
2023-10-10 22:58 ` David Matlack
2023-10-10 23:40 ` Sean Christopherson
2023-10-16 17:07 ` David Matlack
2023-10-16 19:14 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 05/17] KVM: Annotate -EFAULTs from kvm_vcpu_read/write_guest_page() Anish Moorthy
2023-09-14 8:04 ` kernel test robot
2023-10-05 1:53 ` Sean Christopherson
2023-10-05 23:03 ` Anish Moorthy
2023-09-08 22:28 ` [PATCH v5 06/17] KVM: x86: Annotate -EFAULTs from kvm_handle_error_pfn() Anish Moorthy
2023-10-05 1:26 ` Sean Christopherson
2023-10-05 23:57 ` Anish Moorthy
2023-10-06 0:36 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 07/17] KVM: arm64: Annotate -EFAULT from user_mem_abort() Anish Moorthy
2023-09-28 21:42 ` Anish Moorthy
2023-10-05 1:26 ` Sean Christopherson
2023-10-10 23:01 ` David Matlack
2023-09-08 22:28 ` [PATCH v5 08/17] KVM: Allow hva_pfn_fast() to resolve read faults Anish Moorthy
2023-09-08 22:28 ` [PATCH v5 09/17] KVM: Introduce KVM_CAP_USERFAULT_ON_MISSING without implementation Anish Moorthy
2023-10-10 23:16 ` David Matlack
2023-10-11 17:54 ` Anish Moorthy
2023-10-16 19:38 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 10/17] KVM: Implement KVM_CAP_USERFAULT_ON_MISSING by atomizing __gfn_to_pfn_memslot() calls Anish Moorthy
2023-10-05 1:44 ` Sean Christopherson
2023-10-05 18:58 ` Anish Moorthy
2023-10-06 0:17 ` Sean Christopherson [this message]
2023-10-11 22:04 ` Anish Moorthy
2023-11-01 21:53 ` Anish Moorthy
2023-11-01 22:03 ` Sean Christopherson
2023-11-01 22:25 ` Anish Moorthy
2023-11-01 22:39 ` David Matlack
2023-11-01 22:42 ` Sean Christopherson
2023-11-02 19:14 ` Anish Moorthy
2023-11-02 20:25 ` Anish Moorthy
2023-11-03 20:05 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 11/17] KVM: x86: Enable KVM_CAP_USERFAULT_ON_MISSING Anish Moorthy
2023-10-05 1:52 ` Sean Christopherson
2023-11-01 22:55 ` Anish Moorthy
2023-11-02 14:31 ` Sean Christopherson
2023-09-08 22:28 ` [PATCH v5 12/17] KVM: arm64: " Anish Moorthy
2023-09-08 22:29 ` [PATCH v5 13/17] KVM: selftests: Report per-vcpu demand paging rate from demand paging test Anish Moorthy
2023-09-08 22:29 ` [PATCH v5 14/17] KVM: selftests: Allow many vCPUs and reader threads per UFFD in " Anish Moorthy
2023-09-08 22:29 ` [PATCH v5 15/17] KVM: selftests: Use EPOLL in userfaultfd_util reader threads and signal errors via TEST_ASSERT Anish Moorthy
2023-09-08 22:29 ` [PATCH v5 16/17] KVM: selftests: Add memslot_flags parameter to memstress_create_vm() Anish Moorthy
2023-09-08 22:29 ` [PATCH v5 17/17] KVM: selftests: Handle memory fault exits in demand_paging_test Anish Moorthy
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=ZR9SLOQcFEqPg01A@google.com \
--to=seanjc@google.com \
--cc=amoorthy@google.com \
--cc=axelrasmussen@google.com \
--cc=isaku.yamahata@gmail.com \
--cc=jthoughton@google.com \
--cc=kconsul@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=nadav.amit@gmail.com \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=ricarkol@google.com \
--cc=robert.hoo.linux@gmail.com \
/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.