Message ID | cover.1665214747.git.houwenlong.hwl@antgroup.com (mailing list archive) |
---|---|
Headers | show |
Series | KVM: x86/mmu: Fix wrong usages of range-based tlb flushing | expand |
On Mon, 10 Oct 2022 20:19:11 +0800, Hou Wenlong wrote: > 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. > > [...] David and/or Hou, it's probably a good idea to double check my results, there were a few minor conflicts and I doubt anything would fail if I messed up. Applied to kvm-x86 mmu, thanks! [1/6] KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h https://github.com/kvm-x86/linux/commit/bb05964f0a3c [2/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in kvm_set_pte_rmapp() https://github.com/kvm-x86/linux/commit/564246ae7da2 [3/6] KVM: x86/mmu: Reduce gfn range of tlb flushing in tdp_mmu_map_handle_target_level() https://github.com/kvm-x86/linux/commit/c6753e20e09d [4/6] KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range https://github.com/kvm-x86/linux/commit/4fa7e22ed6ed [5/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in validate_direct_spte() https://github.com/kvm-x86/linux/commit/976d07c25056 [6/6] KVM: x86/mmu: Cleanup range-based flushing for given page https://github.com/kvm-x86/linux/commit/f9309825c4b1 -- https://github.com/kvm-x86/linux/tree/next https://github.com/kvm-x86/linux/tree/fixes
On Thu, Jan 19, 2023, Sean Christopherson wrote: > On Mon, 10 Oct 2022 20:19:11 +0800, Hou Wenlong wrote: > > 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. > > > > [...] > > David and/or Hou, it's probably a good idea to double check my results, there > were a few minor conflicts and I doubt anything would fail if I messed up. Gah, doesn't even compile because I missed a paranthesis. Messed up my scripts and didn't pull 'mmu' into 'next. Force pushed, new hashes are below. Testing now... [1/6] KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h https://github.com/kvm-x86/linux/commit/bb05964f0a3c [2/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in kvm_set_pte_rmapp() https://github.com/kvm-x86/linux/commit/c61baeaa2a14 [3/6] KVM: x86/mmu: Reduce gfn range of tlb flushing in tdp_mmu_map_handle_target_level() https://github.com/kvm-x86/linux/commit/24c17bc3def7 [4/6] KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range https://github.com/kvm-x86/linux/commit/873f68d8dac3 [5/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in validate_direct_spte() https://github.com/kvm-x86/linux/commit/22f34c933198 [6/6] KVM: x86/mmu: Cleanup range-based flushing for given page https://github.com/kvm-x86/linux/commit/e7b406974086