From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Anup Patel <anup@brainfault.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Sean Christopherson <seanjc@google.com>
Cc: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
kvmarm@lists.linux.dev, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org,
David Matlack <dmatlack@google.com>,
David Stevens <stevensd@chromium.org>
Subject: [PATCH v12 00/84] KVM: Stop grabbing references to PFNMAP'd pages
Date: Fri, 26 Jul 2024 16:51:09 -0700 [thread overview]
Message-ID: <20240726235234.228822-1-seanjc@google.com> (raw)
arm64 folks, the first two patches are bug fixes, but I have very low
confidence that they are correct and/or desirable. If they are more or
less correct, I can post them separately if that'd make life easier. I
included them here to avoid conflicts, and because I'm pretty sure how
KVM deals with MTE tags vs. dirty logging will impact what APIs KVM needs
to provide to arch code.
On to the series... The TL;DR is that I would like to get input on two
things:
1. Marking folios dirty/accessed only on the intial stage-2 page fault
2. The new APIs for faulting, prefetching, and doing "lookups" on pfns
This is (spiritually) v12 of David Steven's series to play nice with pfns
that are "valid", i.e. have a struct page, but are not refcounted. Whereas
David's series only (mostly) fixed things for x86, this series goes for
broke and completely eliminates KVM's long-standing (and heinous) behavior
of essentially guessing which pfns are refcounted pages (see
kvm_pfn_to_refcounted_page()).
Getting there requires "fixing" arch code that isn't obviously broken.
Specifically, to get rid of kvm_pfn_to_refcounted_page(), KVM needs to
stop marking pages/folios dirty/accessed based solely on the pfn that's
stored in KVM's stage-2 page tables. In v11, KVM x86 did this by tagging
SPTEs with a flag (using a software-available bit).
But that isn't a viable option for some flavors of x86 (we're out of
software-available bits), and more importantly I've convinced myself[*]
that marking folios _dirty_ after SPTEs have been installed is completely
unnecessary, and that marking folios accessed is likewise unnecessary for
real world workloads (and if this is a sticking point, I have ideas on
how to handle it more gracefully; more at the bottom).
So, instead of tracking which SPTEs correspond to refcounted pages, v12
simply removes all of the code that operates on "struct page" based on
the pfn in stage-2 PTEs. This is the back ~40-50% of the series. Most
of the patches are relevatively uninteresting from a code perspective,
it's the concept itself (of not marking folios dirty/accessed from SPTEs)
that needs discussion.
For x86 in particular, which sets accessed/dirty status when that info
would be "lost", e.g. when SPTEs are zapped or KVM clears the dirty flag
in a SPTE, foregoing the updates provides very measurable performance
improvements for related operations. E.g. when clearing dirty bits as
part of dirty logging, and zapping SPTEs to reconstitue huge pages when
disabling dirty logging.
The other big change from v11 is that I opted to go with dedicated,
specific, and hopefully descriptive APIs to wrap kvm_follow_pfn() instead
of expose the "inner" helper to arch code. In part because I still don't
love kvm_follow_pfn(), and fewer callers means its easier to change if/when
someone comes up with a better name. But also because I think/hope that
having dedicated APIs will make it easier for arch developers to understand
what is the right/preferred way to do certain operations. E.g. so that all
architectures use the same core flow for handling stage-2 page faults.
Long term, I would love to standardize that code even more, but this series
is already waaaay too big.
Along the way, I also discovered that several of the inputs to hva_to_pfn()
(and it's myriad wrappers) could be removed. E.g. the rather weirdly named
@atomic flag can be removed by deduplicating x86's prefetching code.
As for capturing accessed information on zapped SPTEs, e.g. to prevent
losing accessed information because NUMA balancing mucks with things, my
thought is that arch code can preserve the accessed information in SPTEs
that are unmapped/zapped because protections were modified, e.g. so that
LRU-initiated aging can still collect information. I'm not at all
convinced that this is necessary outside of tests that care about exact
counts, e.g. KVM selftests, but I'll post an RFC KVM x86 series to get
the conversation started.
Note, I'm purposefully not capturing the delta from v11=>v12, because
there is zero chance I will get everything, and while this is a spiritual
successor to David's v11, in practice it's like 98% new code.
[*] https://lore.kernel.org/all/20240320005024.3216282-1-seanjc@google.com
David Stevens (3):
KVM: Replace "async" pointer in gfn=>pfn with "no_wait" and error code
KVM: Introduce kvm_follow_pfn() to eventually replace "gfn_to_pfn"
APIs
KVM: Migrate kvm_vcpu_map() to kvm_follow_pfn()
Sean Christopherson (81):
KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits
ZONE_DEVICE
KVM: arm64: Disallow copying MTE to guest memory while KVM is dirty
logging
KVM: Drop KVM_ERR_PTR_BAD_PAGE and instead return NULL to indicate an
error
KVM: Allow calling kvm_release_page_{clean,dirty}() on a NULL page
pointer
KVM: Add kvm_release_page_unused() API to put pages that KVM never
consumes
KVM: x86/mmu: Skip the "try unsync" path iff the old SPTE was a leaf
SPTE
KVM: x86/mmu: Mark folio dirty when creating SPTE, not when
zapping/modifying
KVM: x86/mmu: Mark page/folio accessed only when zapping leaf SPTEs
KVM: x86/mmu: Don't force flush if SPTE update clears Accessed bit
KVM: x86/mmu: Use gfn_to_page_many_atomic() when prefetching indirect
PTEs
KVM: Rename gfn_to_page_many_atomic() to kvm_prefetch_pages()
KVM: Drop @atomic param from gfn=>pfn and hva=>pfn APIs
KVM: Annotate that all paths in hva_to_pfn() might sleep
KVM: x86/mmu: Drop kvm_page_fault.hva, i.e. don't track intermediate
hva
KVM: Drop unused "hva" pointer from __gfn_to_pfn_memslot()
KVM: Remove pointless sanity check on @map param to kvm_vcpu_(un)map()
KVM: Explicitly initialize all fields at the start of kvm_vcpu_map()
KVM: Use NULL for struct page pointer to indicate mremapped memory
KVM: nVMX: Rely on kvm_vcpu_unmap() to track validity of eVMCS mapping
KVM: nVMX: Drop pointless msr_bitmap_map field from struct nested_vmx
KVM: nVMX: Add helper to put (unmap) vmcs12 pages
KVM: Use plain "struct page" pointer instead of single-entry array
KVM: Provide refcounted page as output field in struct kvm_follow_pfn
KVM: Move kvm_{set,release}_page_{clean,dirty}() helpers up in
kvm_main.c
KVM: pfncache: Precisely track refcounted pages
KVM: Pin (as in FOLL_PIN) pages during kvm_vcpu_map()
KVM: nVMX: Mark vmcs12's APIC access page dirty when unmapping
KVM: Pass in write/dirty to kvm_vcpu_map(), not kvm_vcpu_unmap()
KVM: Get writable mapping for __kvm_vcpu_map() only when necessary
KVM: Disallow direct access (w/o mmu_notifier) to unpinned pfn by
default
KVM: Add a helper to lookup a pfn without grabbing a reference
KVM: x86: Use kvm_lookup_pfn() to check if retrying #PF is useful
KVM: x86: Use kvm_lookup_pfn() to check if APIC access page was
installed
KVM: x86/mmu: Add "mmu" prefix fault-in helpers to free up generic
names
KVM: x86/mmu: Put direct prefetched pages via kvm_release_page_clean()
KVM: x86/mmu: Add common helper to handle prefetching SPTEs
KVM: x86/mmu: Add helper to "finish" handling a guest page fault
KVM: x86/mmu: Mark pages/folios dirty at the origin of make_spte()
KVM: Move declarations of memslot accessors up in kvm_host.h
KVM: Add kvm_faultin_pfn() to specifically service guest page faults
KVM: x86/mmu: Convert page fault paths to kvm_faultin_pfn()
KVM: guest_memfd: Provide "struct page" as output from
kvm_gmem_get_pfn()
KVM: x86/mmu: Put refcounted pages instead of blindly releasing pfns
KVM: x86/mmu: Don't mark unused faultin pages as accessed
KVM: Move x86's API to release a faultin page to common KVM
KVM: VMX: Hold mmu_lock until page is released when updating APIC
access page
KVM: VMX: Use __kvm_faultin_page() to get APIC access page/pfn
KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()
KVM: PPC: e500: Mark "struct page" pfn accessed before dropping
mmu_lock
KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults
KVM: arm64: Mark "struct page" pfns accessed/dirty before dropping
mmu_lock
KVM: arm64: Use __kvm_faultin_pfn() to handle memory aborts
KVM: RISC-V: Mark "struct page" pfns dirty iff a stage-2 PTE is
installed
KVM: RISC-V: Mark "struct page" pfns accessed before dropping mmu_lock
KVM: RISC-V: Use kvm_faultin_pfn() when mapping pfns into the guest
KVM: PPC: Use __kvm_faultin_pfn() to handle page faults on Book3s HV
KVM: PPC: Use __kvm_faultin_pfn() to handle page faults on Book3s
Radix
KVM: PPC: Drop unused @kvm_ro param from
kvmppc_book3s_instantiate_page()
KVM: PPC: Book3S: Mark "struct page" pfns dirty/accessed after
installing PTE
KVM: PPC: Use kvm_faultin_pfn() to handle page faults on Book3s PR
KVM: LoongArch: Mark "struct page" pfns dirty only in "slow" page
fault path
KVM: LoongArch: Mark "struct page" pfns accessed only in "slow" page
fault path
KVM: LoongArch: Mark "struct page" pfn accessed before dropping
mmu_lock
KVM: LoongArch: Use kvm_faultin_pfn() to map pfns into the guest
KVM: MIPS: Mark "struct page" pfns dirty only in "slow" page fault
path
KVM: MIPS: Mark "struct page" pfns accessed only in "slow" page fault
path
KVM: MIPS: Mark "struct page" pfns accessed prior to dropping mmu_lock
KVM: MIPS: Use kvm_faultin_pfn() to map pfns into the guest
KVM: PPC: Remove extra get_page() to fix page refcount leak
KVM: PPC: Use kvm_vcpu_map() to map guest memory to patch dcbz
instructions
KVM: Convert gfn_to_page() to use kvm_follow_pfn()
KVM: Add support for read-only usage of gfn_to_page()
KVM: arm64: Use __gfn_to_page() when copying MTE tags to/from
userspace
KVM: PPC: Explicitly require struct page memory for Ultravisor sharing
KVM: Drop gfn_to_pfn() APIs now that all users are gone
KVM: s390: Use kvm_release_page_dirty() to unpin "struct page" memory
KVM: Make kvm_follow_pfn.refcounted_page a required field
KVM: x86/mmu: Don't mark "struct page" accessed when zapping SPTEs
KVM: arm64: Don't mark "struct page" accessed when making SPTE young
KVM: Drop APIs that manipulate "struct page" via pfns
KVM: Don't grab reference on VM_MIXEDMAP pfns that have a "struct
page"
Documentation/virt/kvm/locking.rst | 80 ++--
arch/arm64/include/asm/kvm_pgtable.h | 4 +-
arch/arm64/kvm/guest.c | 25 +-
arch/arm64/kvm/hyp/pgtable.c | 7 +-
arch/arm64/kvm/mmu.c | 21 +-
arch/loongarch/kvm/mmu.c | 40 +-
arch/mips/kvm/mmu.c | 26 +-
arch/powerpc/include/asm/kvm_book3s.h | 4 +-
arch/powerpc/kvm/book3s.c | 7 +-
arch/powerpc/kvm/book3s_32_mmu_host.c | 7 +-
arch/powerpc/kvm/book3s_64_mmu_host.c | 12 +-
arch/powerpc/kvm/book3s_64_mmu_hv.c | 25 +-
arch/powerpc/kvm/book3s_64_mmu_radix.c | 35 +-
arch/powerpc/kvm/book3s_hv_nested.c | 4 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 25 +-
arch/powerpc/kvm/book3s_pr.c | 14 +-
arch/powerpc/kvm/book3s_xive_native.c | 2 +-
arch/powerpc/kvm/e500_mmu_host.c | 19 +-
arch/riscv/kvm/mmu.c | 9 +-
arch/s390/kvm/vsie.c | 4 +-
arch/x86/kvm/lapic.c | 15 +-
arch/x86/kvm/mmu/mmu.c | 191 ++++----
arch/x86/kvm/mmu/mmu_internal.h | 5 +-
arch/x86/kvm/mmu/paging_tmpl.h | 29 +-
arch/x86/kvm/mmu/spte.c | 23 +-
arch/x86/kvm/mmu/tdp_mmu.c | 16 -
arch/x86/kvm/svm/nested.c | 4 +-
arch/x86/kvm/svm/sev.c | 12 +-
arch/x86/kvm/svm/svm.c | 8 +-
arch/x86/kvm/vmx/nested.c | 42 +-
arch/x86/kvm/vmx/vmx.c | 28 +-
arch/x86/kvm/vmx/vmx.h | 2 -
arch/x86/kvm/x86.c | 16 +-
include/linux/kvm_host.h | 124 +++--
virt/kvm/guest_memfd.c | 19 +-
virt/kvm/kvm_main.c | 603 ++++++++++---------------
virt/kvm/kvm_mm.h | 36 +-
virt/kvm/pfncache.c | 20 +-
38 files changed, 698 insertions(+), 865 deletions(-)
base-commit: 332d2c1d713e232e163386c35a3ba0c1b90df83f
--
2.46.0.rc1.232.g9752f9e123-goog
next reply other threads:[~2024-07-26 23:52 UTC|newest]
Thread overview: 150+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-26 23:51 Sean Christopherson [this message]
2024-07-26 23:51 ` [PATCH v12 01/84] KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE Sean Christopherson
2024-07-31 16:23 ` Alex Bennée
2024-07-31 20:36 ` Sean Christopherson
2024-08-01 10:07 ` Marc Zyngier
2024-08-07 14:15 ` Catalin Marinas
2024-08-08 9:54 ` Steven Price
2024-08-22 14:24 ` (subset) " Marc Zyngier
2024-07-26 23:51 ` [PATCH v12 02/84] KVM: arm64: Disallow copying MTE to guest memory while KVM is dirty logging Sean Christopherson
2024-08-01 7:34 ` Aneesh Kumar K.V
2024-08-01 18:01 ` Sean Christopherson
2024-08-05 7:57 ` Aneesh Kumar K.V
2024-08-05 22:09 ` Sean Christopherson
2024-08-07 16:21 ` Catalin Marinas
2024-08-08 9:54 ` Steven Price
2024-08-22 14:24 ` (subset) " Marc Zyngier
2024-07-26 23:51 ` [PATCH v12 03/84] KVM: Drop KVM_ERR_PTR_BAD_PAGE and instead return NULL to indicate an error Sean Christopherson
2024-08-01 8:57 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 04/84] KVM: Allow calling kvm_release_page_{clean,dirty}() on a NULL page pointer Sean Christopherson
2024-08-01 9:03 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 05/84] KVM: Add kvm_release_page_unused() API to put pages that KVM never consumes Sean Christopherson
2024-08-01 9:20 ` Alex Bennée
2024-08-01 14:43 ` Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 06/84] KVM: x86/mmu: Skip the "try unsync" path iff the old SPTE was a leaf SPTE Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 07/84] KVM: x86/mmu: Mark folio dirty when creating SPTE, not when zapping/modifying Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 08/84] KVM: x86/mmu: Mark page/folio accessed only when zapping leaf SPTEs Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 09/84] KVM: x86/mmu: Don't force flush if SPTE update clears Accessed bit Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 10/84] KVM: x86/mmu: Use gfn_to_page_many_atomic() when prefetching indirect PTEs Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 11/84] KVM: Rename gfn_to_page_many_atomic() to kvm_prefetch_pages() Sean Christopherson
2024-08-02 11:16 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 12/84] KVM: Drop @atomic param from gfn=>pfn and hva=>pfn APIs Sean Christopherson
2024-08-01 9:31 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 13/84] KVM: Annotate that all paths in hva_to_pfn() might sleep Sean Christopherson
2024-08-08 12:00 ` Alex Bennée
2024-08-08 13:16 ` Sean Christopherson
2024-08-08 15:18 ` Alex Bennée
2024-08-08 15:31 ` Sean Christopherson
2024-08-08 16:16 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 14/84] KVM: Replace "async" pointer in gfn=>pfn with "no_wait" and error code Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 15/84] KVM: x86/mmu: Drop kvm_page_fault.hva, i.e. don't track intermediate hva Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 16/84] KVM: Drop unused "hva" pointer from __gfn_to_pfn_memslot() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 17/84] KVM: Introduce kvm_follow_pfn() to eventually replace "gfn_to_pfn" APIs Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 18/84] KVM: Remove pointless sanity check on @map param to kvm_vcpu_(un)map() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 19/84] KVM: Explicitly initialize all fields at the start of kvm_vcpu_map() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 20/84] KVM: Use NULL for struct page pointer to indicate mremapped memory Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 21/84] KVM: nVMX: Rely on kvm_vcpu_unmap() to track validity of eVMCS mapping Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 22/84] KVM: nVMX: Drop pointless msr_bitmap_map field from struct nested_vmx Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 23/84] KVM: nVMX: Add helper to put (unmap) vmcs12 pages Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 24/84] KVM: Use plain "struct page" pointer instead of single-entry array Sean Christopherson
2024-08-01 9:53 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 25/84] KVM: Provide refcounted page as output field in struct kvm_follow_pfn Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 26/84] KVM: Move kvm_{set,release}_page_{clean,dirty}() helpers up in kvm_main.c Sean Christopherson
2024-08-01 9:55 ` Alex Bennée
2024-07-26 23:51 ` [PATCH v12 27/84] KVM: pfncache: Precisely track refcounted pages Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 28/84] KVM: Migrate kvm_vcpu_map() to kvm_follow_pfn() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 29/84] KVM: Pin (as in FOLL_PIN) pages during kvm_vcpu_map() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 30/84] KVM: nVMX: Mark vmcs12's APIC access page dirty when unmapping Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 31/84] KVM: Pass in write/dirty to kvm_vcpu_map(), not kvm_vcpu_unmap() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 32/84] KVM: Get writable mapping for __kvm_vcpu_map() only when necessary Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 33/84] KVM: Disallow direct access (w/o mmu_notifier) to unpinned pfn by default Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 34/84] KVM: Add a helper to lookup a pfn without grabbing a reference Sean Christopherson
2024-07-30 10:41 ` Paolo Bonzini
2024-07-30 20:15 ` Sean Christopherson
2024-07-31 10:11 ` Paolo Bonzini
2024-07-26 23:51 ` [PATCH v12 35/84] KVM: x86: Use kvm_lookup_pfn() to check if retrying #PF is useful Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 36/84] KVM: x86: Use kvm_lookup_pfn() to check if APIC access page was installed Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 37/84] KVM: x86/mmu: Add "mmu" prefix fault-in helpers to free up generic names Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 38/84] KVM: x86/mmu: Put direct prefetched pages via kvm_release_page_clean() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 39/84] KVM: x86/mmu: Add common helper to handle prefetching SPTEs Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 40/84] KVM: x86/mmu: Add helper to "finish" handling a guest page fault Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 41/84] KVM: x86/mmu: Mark pages/folios dirty at the origin of make_spte() Sean Christopherson
2024-07-30 8:57 ` Paolo Bonzini
2024-07-26 23:51 ` [PATCH v12 42/84] KVM: Move declarations of memslot accessors up in kvm_host.h Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 43/84] KVM: Add kvm_faultin_pfn() to specifically service guest page faults Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 44/84] KVM: x86/mmu: Convert page fault paths to kvm_faultin_pfn() Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 45/84] KVM: guest_memfd: Provide "struct page" as output from kvm_gmem_get_pfn() Sean Christopherson
2024-07-30 9:05 ` Paolo Bonzini
2024-07-30 20:00 ` Sean Christopherson
2024-07-31 10:12 ` Paolo Bonzini
2024-07-26 23:51 ` [PATCH v12 46/84] KVM: x86/mmu: Put refcounted pages instead of blindly releasing pfns Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 47/84] KVM: x86/mmu: Don't mark unused faultin pages as accessed Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 48/84] KVM: Move x86's API to release a faultin page to common KVM Sean Christopherson
2024-07-30 8:58 ` Paolo Bonzini
2024-07-30 19:15 ` Sean Christopherson
2024-07-31 10:18 ` Paolo Bonzini
2024-07-26 23:51 ` [PATCH v12 49/84] KVM: VMX: Hold mmu_lock until page is released when updating APIC access page Sean Christopherson
2024-07-26 23:51 ` [PATCH v12 50/84] KVM: VMX: Use __kvm_faultin_page() to get APIC access page/pfn Sean Christopherson
2024-07-30 8:59 ` Paolo Bonzini
2024-07-26 23:52 ` [PATCH v12 51/84] KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map() Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 52/84] KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 53/84] KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 54/84] KVM: arm64: Mark "struct page" pfns accessed/dirty before dropping mmu_lock Sean Christopherson
2024-08-05 23:25 ` Oliver Upton
2024-08-05 23:26 ` Oliver Upton
2024-08-05 23:53 ` Sean Christopherson
2024-08-05 23:56 ` Oliver Upton
2024-08-06 8:55 ` Marc Zyngier
2024-08-06 15:19 ` Sean Christopherson
2024-08-06 8:24 ` Fuad Tabba
2024-07-26 23:52 ` [PATCH v12 55/84] KVM: arm64: Use __kvm_faultin_pfn() to handle memory aborts Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 56/84] KVM: RISC-V: Mark "struct page" pfns dirty iff a stage-2 PTE is installed Sean Christopherson
2024-07-31 8:11 ` Andrew Jones
2024-08-06 15:03 ` Anup Patel
2024-07-26 23:52 ` [PATCH v12 57/84] KVM: RISC-V: Mark "struct page" pfns accessed before dropping mmu_lock Sean Christopherson
2024-07-31 8:12 ` Andrew Jones
2024-08-06 15:04 ` Anup Patel
2024-07-26 23:52 ` [PATCH v12 58/84] KVM: RISC-V: Use kvm_faultin_pfn() when mapping pfns into the guest Sean Christopherson
2024-07-31 8:11 ` Andrew Jones
2024-08-06 15:04 ` Anup Patel
2024-07-26 23:52 ` [PATCH v12 59/84] KVM: PPC: Use __kvm_faultin_pfn() to handle page faults on Book3s HV Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 60/84] KVM: PPC: Use __kvm_faultin_pfn() to handle page faults on Book3s Radix Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 61/84] KVM: PPC: Drop unused @kvm_ro param from kvmppc_book3s_instantiate_page() Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 62/84] KVM: PPC: Book3S: Mark "struct page" pfns dirty/accessed after installing PTE Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 63/84] KVM: PPC: Use kvm_faultin_pfn() to handle page faults on Book3s PR Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 64/84] KVM: LoongArch: Mark "struct page" pfns dirty only in "slow" page fault path Sean Christopherson
2024-08-02 7:53 ` maobibo
2024-08-02 19:32 ` Sean Christopherson
2024-08-03 3:02 ` maobibo
2024-08-05 23:22 ` Sean Christopherson
2024-08-06 1:16 ` maobibo
2024-08-08 11:38 ` maobibo
2024-07-26 23:52 ` [PATCH v12 65/84] KVM: LoongArch: Mark "struct page" pfns accessed " Sean Christopherson
2024-08-02 7:34 ` maobibo
2024-07-26 23:52 ` [PATCH v12 66/84] KVM: LoongArch: Mark "struct page" pfn accessed before dropping mmu_lock Sean Christopherson
2024-08-08 11:47 ` maobibo
2024-07-26 23:52 ` [PATCH v12 67/84] KVM: LoongArch: Use kvm_faultin_pfn() to map pfns into the guest Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 68/84] KVM: MIPS: Mark "struct page" pfns dirty only in "slow" page fault path Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 69/84] KVM: MIPS: Mark "struct page" pfns accessed " Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 70/84] KVM: MIPS: Mark "struct page" pfns accessed prior to dropping mmu_lock Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 71/84] KVM: MIPS: Use kvm_faultin_pfn() to map pfns into the guest Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 72/84] KVM: PPC: Remove extra get_page() to fix page refcount leak Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 73/84] KVM: PPC: Use kvm_vcpu_map() to map guest memory to patch dcbz instructions Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 74/84] KVM: Convert gfn_to_page() to use kvm_follow_pfn() Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 75/84] KVM: Add support for read-only usage of gfn_to_page() Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 76/84] KVM: arm64: Use __gfn_to_page() when copying MTE tags to/from userspace Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 77/84] KVM: PPC: Explicitly require struct page memory for Ultravisor sharing Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 78/84] KVM: Drop gfn_to_pfn() APIs now that all users are gone Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 79/84] KVM: s390: Use kvm_release_page_dirty() to unpin "struct page" memory Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 80/84] KVM: Make kvm_follow_pfn.refcounted_page a required field Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 81/84] KVM: x86/mmu: Don't mark "struct page" accessed when zapping SPTEs Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 82/84] KVM: arm64: Don't mark "struct page" accessed when making SPTE young Sean Christopherson
2024-07-26 23:52 ` [PATCH v12 83/84] KVM: Drop APIs that manipulate "struct page" via pfns Sean Christopherson
2024-08-02 11:03 ` Alex Bennée
2024-07-26 23:52 ` [PATCH v12 84/84] KVM: Don't grab reference on VM_MIXEDMAP pfns that have a "struct page" Sean Christopherson
2024-07-30 11:38 ` Paolo Bonzini
2024-07-30 20:21 ` Sean Christopherson
2024-07-31 9:50 ` Paolo Bonzini
2024-07-30 11:52 ` [PATCH v12 00/84] KVM: Stop grabbing references to PFNMAP'd pages Paolo Bonzini
2024-07-30 22:35 ` Sean Christopherson
2024-08-27 9:06 ` Alex Bennée
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=20240726235234.228822-1-seanjc@google.com \
--to=seanjc@google.com \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=borntraeger@linux.ibm.com \
--cc=chenhuacai@kernel.org \
--cc=dmatlack@google.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=maobibo@loongson.cn \
--cc=maz@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=oliver.upton@linux.dev \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=pbonzini@redhat.com \
--cc=stevensd@chromium.org \
--cc=zhaotianrui@loongson.cn \
/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).