All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Matlack <dmatlack@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, seanjc@google.com
Subject: Re: [PATCH v3 00/31] KVM: x86: pass arguments on the page fault path via struct kvm_page_fault
Date: Tue, 28 Sep 2021 23:27:39 +0000	[thread overview]
Message-ID: <YVOk6zw2b1bI+Qk7@google.com> (raw)
In-Reply-To: <20210924163152.289027-1-pbonzini@redhat.com>

On Fri, Sep 24, 2021 at 12:31:21PM -0400, Paolo Bonzini wrote:
> The current kvm page fault handlers passes around many arguments to the
> functions.  To simplify those arguments and local variables, introduce
> a data structure, struct kvm_page_fault, to hold those arguments and
> variables.  struct kvm_page_fault is allocated on stack on the caller
> of kvm fault handler, kvm_mmu_do_page_fault(), and passed around.
> 
> Later in the series, my patches are interleaved with David's work to
> add the memory slot to the struct and avoid repeated lookups.  Along the
> way you will find some cleanups of functions with a ludicrous number of
> arguments, so that they use struct kvm_page_fault as much as possible
> or at least receive related information from a single argument.  make_spte
> in particular goes from 11 to 10 arguments (yeah I know) despite gaining
> two for kvm_mmu_page and kvm_memory_slot.
> 
> This can be sometimes a bit debatable (for example struct kvm_mmu_page
> is used a little more on the TDP MMU paths), but overall I think the
> result is an improvement.  For example the SET_SPTE_* constants go
> away, and they absolutely didn't belong in the TDP MMU.  But if you
> disagree with some of the changes, please speak up loudly!

Thanks for getting this cleaned up and sent out. The series looks good
overall. I had 2 small comments but otherwise:

Reviewed-by: David Matlack <dmatlack@google.com>

> 
> Testing: survives kvm-unit-tests on Intel with all of ept=0, ept=1
> tdp_mmu=0, ept=1.  Will do more before committing to it in kvm/next of
> course.
> 
> Paolo
> 
> David Matlack (5):
>   KVM: x86/mmu: Fold rmap_recycle into rmap_add
>   KVM: x86/mmu: Pass the memslot around via struct kvm_page_fault
>   KVM: x86/mmu: Avoid memslot lookup in page_fault_handle_page_track
>   KVM: x86/mmu: Avoid memslot lookup in rmap_add
>   KVM: x86/mmu: Avoid memslot lookup in make_spte and
>     mmu_try_to_unsync_pages
> 
> Paolo Bonzini (25):
>   KVM: MMU: pass unadulterated gpa to direct_page_fault
>   KVM: MMU: Introduce struct kvm_page_fault
>   KVM: MMU: change mmu->page_fault() arguments to kvm_page_fault
>   KVM: MMU: change direct_page_fault() arguments to kvm_page_fault
>   KVM: MMU: change page_fault_handle_page_track() arguments to
>     kvm_page_fault
>   KVM: MMU: change kvm_faultin_pfn() arguments to kvm_page_fault
>   KVM: MMU: change handle_abnormal_pfn() arguments to kvm_page_fault
>   KVM: MMU: change __direct_map() arguments to kvm_page_fault
>   KVM: MMU: change FNAME(fetch)() arguments to kvm_page_fault
>   KVM: MMU: change kvm_tdp_mmu_map() arguments to kvm_page_fault
>   KVM: MMU: change tdp_mmu_map_handle_target_level() arguments to
>     kvm_page_fault
>   KVM: MMU: change fast_page_fault() arguments to kvm_page_fault
>   KVM: MMU: change kvm_mmu_hugepage_adjust() arguments to kvm_page_fault
>   KVM: MMU: change disallowed_hugepage_adjust() arguments to
>     kvm_page_fault
>   KVM: MMU: change tracepoints arguments to kvm_page_fault
>   KVM: MMU: mark page dirty in make_spte
>   KVM: MMU: unify tdp_mmu_map_set_spte_atomic and
>     tdp_mmu_set_spte_atomic_no_dirty_log
>   KVM: MMU: inline set_spte in mmu_set_spte
>   KVM: MMU: inline set_spte in FNAME(sync_page)
>   KVM: MMU: clean up make_spte return value
>   KVM: MMU: remove unnecessary argument to mmu_set_spte
>   KVM: MMU: set ad_disabled in TDP MMU role
>   KVM: MMU: pass kvm_mmu_page struct to make_spte
>   KVM: MMU: pass struct kvm_page_fault to mmu_set_spte
>   KVM: MMU: make spte an in-out argument in make_spte
> 
> Sean Christopherson (1):
>   KVM: x86/mmu: Verify shadow walk doesn't terminate early in page
>     faults
> 
>  arch/x86/include/asm/kvm_host.h       |   4 +-
>  arch/x86/include/asm/kvm_page_track.h |   4 +-
>  arch/x86/kvm/mmu.h                    |  84 +++++-
>  arch/x86/kvm/mmu/mmu.c                | 408 +++++++++++---------------
>  arch/x86/kvm/mmu/mmu_internal.h       |  22 +-
>  arch/x86/kvm/mmu/mmutrace.h           |  18 +-
>  arch/x86/kvm/mmu/page_track.c         |   6 +-
>  arch/x86/kvm/mmu/paging_tmpl.h        | 137 +++++----
>  arch/x86/kvm/mmu/spte.c               |  29 +-
>  arch/x86/kvm/mmu/spte.h               |  14 +-
>  arch/x86/kvm/mmu/tdp_mmu.c            | 123 +++-----
>  arch/x86/kvm/mmu/tdp_mmu.h            |   4 +-
>  12 files changed, 390 insertions(+), 463 deletions(-)
> 
> -- 
> 2.27.0
> 

      parent reply	other threads:[~2021-09-28 23:27 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-24 16:31 [PATCH v3 00/31] KVM: x86: pass arguments on the page fault path via struct kvm_page_fault Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 01/31] KVM: MMU: pass unadulterated gpa to direct_page_fault Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 02/31] KVM: MMU: Introduce struct kvm_page_fault Paolo Bonzini
2021-09-28 23:25   ` David Matlack
2021-09-29 11:13     ` Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 03/31] KVM: MMU: change mmu->page_fault() arguments to kvm_page_fault Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 04/31] KVM: MMU: change direct_page_fault() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 05/31] KVM: MMU: change page_fault_handle_page_track() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 06/31] KVM: MMU: change kvm_faultin_pfn() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 07/31] KVM: MMU: change handle_abnormal_pfn() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 08/31] KVM: MMU: change __direct_map() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 09/31] KVM: MMU: change FNAME(fetch)() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 10/31] KVM: MMU: change kvm_tdp_mmu_map() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 11/31] KVM: MMU: change tdp_mmu_map_handle_target_level() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 12/31] KVM: MMU: change fast_page_fault() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 13/31] KVM: MMU: change kvm_mmu_hugepage_adjust() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 14/31] KVM: MMU: change disallowed_hugepage_adjust() " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 15/31] KVM: MMU: change tracepoints " Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 16/31] KVM: x86/mmu: Verify shadow walk doesn't terminate early in page faults Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 17/31] KVM: x86/mmu: Fold rmap_recycle into rmap_add Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 18/31] KVM: MMU: mark page dirty in make_spte Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 19/31] KVM: MMU: unify tdp_mmu_map_set_spte_atomic and tdp_mmu_set_spte_atomic_no_dirty_log Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 20/31] KVM: x86/mmu: Pass the memslot around via struct kvm_page_fault Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 21/31] KVM: x86/mmu: Avoid memslot lookup in page_fault_handle_page_track Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 22/31] KVM: MMU: inline set_spte in mmu_set_spte Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 23/31] KVM: MMU: inline set_spte in FNAME(sync_page) Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 24/31] KVM: MMU: clean up make_spte return value Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 25/31] KVM: MMU: remove unnecessary argument to mmu_set_spte Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 26/31] KVM: MMU: set ad_disabled in TDP MMU role Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 27/31] KVM: MMU: pass kvm_mmu_page struct to make_spte Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 28/31] KVM: MMU: pass struct kvm_page_fault to mmu_set_spte Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 29/31] KVM: x86/mmu: Avoid memslot lookup in rmap_add Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 30/31] KVM: x86/mmu: Avoid memslot lookup in make_spte and mmu_try_to_unsync_pages Paolo Bonzini
2021-09-24 16:31 ` [PATCH v3 31/31] KVM: MMU: make spte an in-out argument in make_spte Paolo Bonzini
2021-09-28 23:20   ` David Matlack
2021-09-29 11:14     ` Paolo Bonzini
2021-09-28 23:27 ` David Matlack [this message]

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=YVOk6zw2b1bI+Qk7@google.com \
    --to=dmatlack@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.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.