All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/6] KVM: x86/mmu: Fix wrong usages of range-based tlb flushing
@ 2022-09-23 10:52 Hou Wenlong
  2022-09-23 10:52 ` [PATCH v3 1/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in validate_direct_spte() Hou Wenlong
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Hou Wenlong @ 2022-09-23 10:52 UTC (permalink / raw)
  To: kvm; +Cc: David Matlack

Commit c3134ce240eed
("KVM: Replace old tlb flush function with new one to flush a specified range.")
replaces old tlb flush function with kvm_flush_remote_tlbs_with_address()
to do tlb flushing. However, the gfn range of tlb flushing is wrong in
some cases. E.g., when a spte is dropped, the start gfn of tlb flushing
should be the gfn of spte not the base gfn of SP which contains the spte.
Although, as Paolo said, Hyper-V may treat a 1-page flush the same if the
address points to a huge page, and no fixes are reported so far. So it seems
that it works well for Hyper-V. But it would be better to use the
correct size for huge page. So this patchset would fix them and introduce
some helper functions as David suggested to make the code clear.

Changed from v2:
- Introduce kvm_flush_remote_tlbs_gfn() in Patch 1 early.
- Move round_gfn_for_level() in tdp_iter.c into mmu_internal.h for
  common usage and cleanup the call sites of rounding down the GFN.
- Drop Patch 6.

Changed from v1:
- Align down gfn in kvm_set_pte_rmapp() instead of change iterator->gfn
  in rmap_walk_init_level() in Patch 2.
- Introduce some helper functions for common operations as David
  suggested.

v2: https://lore.kernel.org/kvm/cover.1661331396.git.houwenlong.hwl@antgroup.com

Hou Wenlong (6):
  KVM: x86/mmu: Fix wrong gfn range of tlb flushing in
    validate_direct_spte()
  KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h
  KVM: x86/mmu: Fix wrong gfn range of tlb flushing in
    kvm_set_pte_rmapp()
  KVM: x86/mmu: Reduce gfn range of tlb flushing in
    tdp_mmu_map_handle_target_level()
  KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range
  KVM: x86/mmu: Cleanup range-based flushing for given page

 arch/x86/kvm/mmu/mmu.c          | 43 +++++++++++++++++++++++----------
 arch/x86/kvm/mmu/mmu_internal.h | 15 ++++++++++++
 arch/x86/kvm/mmu/paging_tmpl.h  |  5 ++--
 arch/x86/kvm/mmu/tdp_iter.c     | 11 +++------
 arch/x86/kvm/mmu/tdp_mmu.c      |  6 ++---
 5 files changed, 52 insertions(+), 28 deletions(-)

--
2.31.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-10-07 16:26 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-23 10:52 [PATCH v3 0/6] KVM: x86/mmu: Fix wrong usages of range-based tlb flushing Hou Wenlong
2022-09-23 10:52 ` [PATCH v3 1/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in validate_direct_spte() Hou Wenlong
2022-09-28 20:51   ` Sean Christopherson
2022-09-23 10:52 ` [PATCH v3 2/6] KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h Hou Wenlong
2022-09-23 10:52 ` [PATCH v3 3/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in kvm_set_pte_rmapp() Hou Wenlong
2022-09-23 10:52 ` [PATCH v3 4/6] KVM: x86/mmu: Reduce gfn range of tlb flushing in tdp_mmu_map_handle_target_level() Hou Wenlong
2022-09-23 10:52 ` [PATCH v3 5/6] KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range Hou Wenlong
2022-09-23 10:52 ` [PATCH v3 6/6] KVM: x86/mmu: Cleanup range-based flushing for given page Hou Wenlong
2022-10-07 16:26 ` [PATCH v3 0/6] KVM: x86/mmu: Fix wrong usages of range-based tlb flushing Sean Christopherson

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.