mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
RISC-V: KVM: Remove redundant TLB flush operations
The function kvm_arch_mmu_enable_log_dirty_pt_masked() is invoked from
two distinct call paths:
kvm_clear_dirty_log_protect()
kvm_arch_mmu_enable_log_dirty_pt_masked()
kvm_vm_ioctl_reset_dirty_pages()
kvm_dirty_ring_reset()
kvm_reset_dirty_gfn()
kvm_arch_mmu_enable_log_dirty_pt_masked()
In both scenarios, the caller already performs a remote TLB flush after
dirty logging is enabled, so the TLB flush inside
kvm_arch_mmu_enable_log_dirty_pt_masked() is unnecessary. Remove it.
Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20260731091215.1549430-4-wang.yechao255@zte.com.cn
Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
da870fdafa
commit
6854a0f4d9
|
|
@ -163,14 +163,15 @@ void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm,
|
|||
phys_addr_t start = (base_gfn + __ffs(mask)) << PAGE_SHIFT;
|
||||
phys_addr_t end = (base_gfn + __fls(mask) + 1) << PAGE_SHIFT;
|
||||
struct kvm_gstage gstage;
|
||||
bool flush;
|
||||
|
||||
kvm_riscv_gstage_init(&gstage, kvm);
|
||||
|
||||
flush = kvm_riscv_gstage_wp_range(&gstage, start, end);
|
||||
if (flush)
|
||||
kvm_flush_remote_tlbs_range(kvm, start >> PAGE_SHIFT,
|
||||
(end - start) >> PAGE_SHIFT);
|
||||
kvm_riscv_gstage_wp_range(&gstage, start, end);
|
||||
|
||||
/*
|
||||
* Remote TLB flush is not needed here since callers of
|
||||
* kvm_arch_mmu_enable_log_dirty_pt_masked() already do it.
|
||||
*/
|
||||
}
|
||||
|
||||
void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user