[PATCH kernel v4] KVM: PPC: Make KVM_CAP_IRQFD_RESAMPLE support platform dependent

Paolo Bonzini pbonzini at redhat.com
Fri Mar 31 08:19:51 PDT 2023


On Thu, Oct 27, 2022 at 9:38 AM Alexey Kardashevskiy <aik at ozlabs.ru> wrote:
>
> Paolo, ping?

Queued, thanks (the automated message used the wrong reply but this is
the patch I applied).

Paolo

>
> On 04/10/2022 10:57, Alexey Kardashevskiy wrote:
> > When introduced, IRQFD resampling worked on POWER8 with XICS. However
> > KVM on POWER9 has never implemented it - the compatibility mode code
> > ("XICS-on-XIVE") misses the kvm_notify_acked_irq() call and the native
> > XIVE mode does not handle INTx in KVM at all.
> >
> > This moved the capability support advertising to platforms and stops
> > advertising it on XIVE, i.e. POWER9 and later.
> >
> > This should cause no behavioural change for other architectures.
> >
> > Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>
> > Acked-by: Nicholas Piggin <npiggin at gmail.com>
> > Acked-by: Marc Zyngier <maz at kernel.org>
> > ---
> > Changes:
> > v4:
> > * removed incorrect clause about changing behavoir on MIPS and RISCV
> >
> > v3:
> > * removed all ifdeferry
> > * removed the capability for MIPS and RISCV
> > * adjusted the commit log about MIPS and RISCV
> >
> > v2:
> > * removed ifdef for ARM64.
> > ---
> >   arch/arm64/kvm/arm.c       | 1 +
> >   arch/powerpc/kvm/powerpc.c | 6 ++++++
> >   arch/s390/kvm/kvm-s390.c   | 1 +
> >   arch/x86/kvm/x86.c         | 1 +
> >   virt/kvm/kvm_main.c        | 1 -
> >   5 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
> > index 2ff0ef62abad..d2daa4d375b5 100644
> > --- a/arch/arm64/kvm/arm.c
> > +++ b/arch/arm64/kvm/arm.c
> > @@ -218,6 +218,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> >       case KVM_CAP_VCPU_ATTRIBUTES:
> >       case KVM_CAP_PTP_KVM:
> >       case KVM_CAP_ARM_SYSTEM_SUSPEND:
> > +     case KVM_CAP_IRQFD_RESAMPLE:
> >               r = 1;
> >               break;
> >       case KVM_CAP_SET_GUEST_DEBUG2:
> > diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
> > index fb1490761c87..908ce8bd91c9 100644
> > --- a/arch/powerpc/kvm/powerpc.c
> > +++ b/arch/powerpc/kvm/powerpc.c
> > @@ -593,6 +593,12 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> >               break;
> >   #endif
> >
> > +#ifdef CONFIG_HAVE_KVM_IRQFD
> > +     case KVM_CAP_IRQFD_RESAMPLE:
> > +             r = !xive_enabled();
> > +             break;
> > +#endif
> > +
> >       case KVM_CAP_PPC_ALLOC_HTAB:
> >               r = hv_enabled;
> >               break;
> > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> > index edfd4bbd0cba..7521adadb81b 100644
> > --- a/arch/s390/kvm/kvm-s390.c
> > +++ b/arch/s390/kvm/kvm-s390.c
> > @@ -577,6 +577,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> >       case KVM_CAP_SET_GUEST_DEBUG:
> >       case KVM_CAP_S390_DIAG318:
> >       case KVM_CAP_S390_MEM_OP_EXTENSION:
> > +     case KVM_CAP_IRQFD_RESAMPLE:
> >               r = 1;
> >               break;
> >       case KVM_CAP_SET_GUEST_DEBUG2:
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > index 43a6a7efc6ec..2d6c5a8fdf14 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -4395,6 +4395,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> >       case KVM_CAP_VAPIC:
> >       case KVM_CAP_ENABLE_CAP:
> >       case KVM_CAP_VM_DISABLE_NX_HUGE_PAGES:
> > +     case KVM_CAP_IRQFD_RESAMPLE:
> >               r = 1;
> >               break;
> >       case KVM_CAP_EXIT_HYPERCALL:
> > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> > index 584a5bab3af3..05cf94013f02 100644
> > --- a/virt/kvm/kvm_main.c
> > +++ b/virt/kvm/kvm_main.c
> > @@ -4447,7 +4447,6 @@ static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg)
> >   #endif
> >   #ifdef CONFIG_HAVE_KVM_IRQFD
> >       case KVM_CAP_IRQFD:
> > -     case KVM_CAP_IRQFD_RESAMPLE:
> >   #endif
> >       case KVM_CAP_IOEVENTFD_ANY_LENGTH:
> >       case KVM_CAP_CHECK_EXTENSION_VM:
>
> --
> Alexey
>




More information about the linux-arm-kernel mailing list