lkml.org 
[lkml]   [2023]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v7 02/12] KVM: arm64: Use kvm_arch_flush_remote_tlbs()
    From


    On 7/22/23 10:22, Raghavendra Rao Ananta wrote:
    > Stop depending on CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL and opt to
    > standardize on kvm_arch_flush_remote_tlbs() since it avoids
    > duplicating the generic TLB stats across architectures that implement
    > their own remote TLB flush.
    >
    > This adds an extra function call to the ARM64 kvm_flush_remote_tlbs()
    > path, but that is a small cost in comparison to flushing remote TLBs.
    >
    > In addition, instead of just incrementing remote_tlb_flush_requests
    > stat, the generic interface would also increment the
    > remote_tlb_flush stat.
    >
    > Signed-off-by: Raghavendra Rao Ananta <rananta@google.com>
    Reviewed-by: Shaoqin Huang <shahuang@redhat.com>
    > ---
    > arch/arm64/include/asm/kvm_host.h | 3 +++
    > arch/arm64/kvm/Kconfig | 1 -
    > arch/arm64/kvm/mmu.c | 6 +++---
    > 3 files changed, 6 insertions(+), 4 deletions(-)
    >
    > diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
    > index 8b6096753740..7281222f24ef 100644
    > --- a/arch/arm64/include/asm/kvm_host.h
    > +++ b/arch/arm64/include/asm/kvm_host.h
    > @@ -1111,6 +1111,9 @@ int __init kvm_set_ipa_limit(void);
    > #define __KVM_HAVE_ARCH_VM_ALLOC
    > struct kvm *kvm_arch_alloc_vm(void);
    >
    > +#define __KVM_HAVE_ARCH_FLUSH_REMOTE_TLBS
    > +int kvm_arch_flush_remote_tlbs(struct kvm *kvm);
    > +
    > static inline bool kvm_vm_is_protected(struct kvm *kvm)
    > {
    > return false;
    > diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig
    > index f531da6b362e..6b730fcfee37 100644
    > --- a/arch/arm64/kvm/Kconfig
    > +++ b/arch/arm64/kvm/Kconfig
    > @@ -25,7 +25,6 @@ menuconfig KVM
    > select MMU_NOTIFIER
    > select PREEMPT_NOTIFIERS
    > select HAVE_KVM_CPU_RELAX_INTERCEPT
    > - select HAVE_KVM_ARCH_TLB_FLUSH_ALL
    > select KVM_MMIO
    > select KVM_GENERIC_DIRTYLOG_READ_PROTECT
    > select KVM_XFER_TO_GUEST_WORK
    > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
    > index 6db9ef288ec3..0ac721fa27f1 100644
    > --- a/arch/arm64/kvm/mmu.c
    > +++ b/arch/arm64/kvm/mmu.c
    > @@ -161,15 +161,15 @@ static bool memslot_is_logging(struct kvm_memory_slot *memslot)
    > }
    >
    > /**
    > - * kvm_flush_remote_tlbs() - flush all VM TLB entries for v7/8
    > + * kvm_arch_flush_remote_tlbs() - flush all VM TLB entries for v7/8
    > * @kvm: pointer to kvm structure.
    > *
    > * Interface to HYP function to flush all VM TLB entries
    > */
    > -void kvm_flush_remote_tlbs(struct kvm *kvm)
    > +int kvm_arch_flush_remote_tlbs(struct kvm *kvm)
    > {
    > - ++kvm->stat.generic.remote_tlb_flush_requests;
    > kvm_call_hyp(__kvm_tlb_flush_vmid, &kvm->arch.mmu);
    > + return 0;
    > }
    >
    > static bool kvm_is_device_pfn(unsigned long pfn)

    --
    Shaoqin

    \
     
     \ /
      Last update: 2023-07-24 11:14    [W:3.600 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site