From: Steffen Eiden <seiden@linux.ibm.com>
To: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
David Hildenbrand <david@kernel.org>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Farhan Ali <alifm@linux.ibm.com>,
Eric Farman <farman@linux.ibm.com>,
Tony Krowiak <akrowiak@linux.ibm.com>,
Halil Pasic <pasic@linux.ibm.com>,
Jason Herne <jjherne@linux.ibm.com>,
Harald Freudenberger <freude@linux.ibm.com>,
Holger Dengler <dengler@linux.ibm.com>,
Alex Williamson <alex@shazbot.org>,
kvm@vger.kernel.org, linux-s390@vger.kernel.org,
linux-kernel@vger.kernel.org, Jason Gunthorpe <jgg@ziepe.ca>
Subject: Re: [PATCH v4 4/6] KVM/vfio: Use file-based reference counting for KVM
Date: Wed, 30 Sep 2026 09:35:57 +0200 [thread overview]
Message-ID: <20260930073557.770322-A-seiden@linux.ibm.com> (raw)
In-Reply-To: <20260929195954.3db8f840@p-imbrenda>
On Tue, Sep 29, 2026 at 07:59:54PM +0200, Claudio Imbrenda wrote:
> On Mon, 28 Sep 2026 15:07:05 +0200
> Steffen Eiden <seiden@linux.ibm.com> wrote:
>
> > Replace manual module reference counting with file-based reference
> > counting for KVM integration. Previously, VFIO used symbol_get() to
> > obtain function pointers for kvm_get_kvm_safe() and kvm_put_kvm(),
> > then manually tracked module references through these symbols. This
> > approach required storing the put_kvm function pointer in each device
> > and carefully managing symbol references.
> >
> > Pass struct file pointers instead of struct kvm pointers throughout the
> > VFIO-KVM interface, leveraging the kernel's existing file reference
> > counting via get_file()/get_file_active() and fput(). Convert the x86
> > page-track API and update s390 vfio to use file_to_kvm_<arch>(). This
> > simplifies the code.
> >
> > Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
> > Co-developed-by: Sean Christopherson <seanjc@google.com>
> > Signed-off-by: Sean Christopherson <seanjc@google.com>
> > Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
> > ---
> > arch/s390/include/asm/kvm_host_s390.h | 2 +-
> > arch/s390/kvm/s390/pci.c | 9 ++++--
> > arch/x86/include/asm/kvm_page_track.h | 10 +++---
> > arch/x86/kvm/mmu/page_track.c | 22 +++++++++-----
> > drivers/s390/crypto/vfio_ap_ops.c | 20 ++++++++----
> > drivers/vfio/group.c | 11 ++++++-
> > drivers/vfio/vfio.h | 12 ++++----
> > drivers/vfio/vfio_main.c | 57 +++++++++++------------------------
> > include/linux/vfio.h | 5 ++-
> > virt/kvm/vfio.c | 13 +++++---
> > 10 files changed, 87 insertions(+), 74 deletions(-)
> >
> > diff --git a/arch/s390/include/asm/kvm_host_s390.h b/arch/s390/include/asm/kvm_host_s390.h
> > index 8a7eed5847e1..9519b8028b10 100644
> > --- a/arch/s390/include/asm/kvm_host_s390.h
> > +++ b/arch/s390/include/asm/kvm_host_s390.h
> > @@ -722,7 +722,7 @@ static inline void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu) {}
> > void kvm_arch_free_vm(struct kvm *kvm);
> >
> > struct zpci_kvm_hook {
> > - int (*kvm_register)(void *opaque, struct kvm *kvm);
> > + int (*kvm_register)(void *opaque, struct file *kvm_file);
> > void (*kvm_unregister)(void *opaque);
> > };
> >
> > diff --git a/arch/s390/kvm/s390/pci.c b/arch/s390/kvm/s390/pci.c
> > index 82892e1e03d9..d79bd3bdc68e 100644
> > --- a/arch/s390/kvm/s390/pci.c
> > +++ b/arch/s390/kvm/s390/pci.c
> > @@ -498,17 +498,22 @@ static void kvm_s390_pci_dev_release(struct zpci_dev *zdev)
> > * available, enable them and let userspace indicate whether or not they will
> > * be used (specify SHM bit to disable).
> > */
> > -static int kvm_s390_pci_register_kvm(void *opaque, struct kvm *kvm)
> > +static int kvm_s390_pci_register_kvm(void *opaque, struct file *kvm_file)
> > {
> > struct zpci_dev *zdev = opaque;
> > + struct kvm *kvm;
> > int rc;
> >
> > if (!zdev)
> > return -EINVAL;
> >
> > + kvm = file_to_kvm_s390(kvm_file);
> > + if (!kvm)
> > + return -ENOENT;
> > +
>
> the !kvm check (which you remove in this patch) returned -EINVAL, but
> now we return -ENOENT. Is this intended?
Yeah, kind of. This is now another kind of error. Before: if kvm was NULL
it was somehow not set by pci/kvm. Now: it might be an incorrect file handle as
file_to_kvm_s390 cheks for this.
>
> is kvm_file always guaranteed to be non-NULL? We checked for !kvm
> before, why don't we need to check for that now?
>
file_to_kvm_<arch> already tests for !kvm_file before it verifies it is
the correct file handle (by testing for kvm_fops).
So kvm_file can be null.
> > mutex_lock(&zdev->kzdev_lock);
> >
> > - if (zdev->kzdev || zdev->gisa != 0 || !kvm) {
> > + if (zdev->kzdev || zdev->gisa != 0) {
> > mutex_unlock(&zdev->kzdev_lock);
> > return -EINVAL;
> > }
>
> [...]
Steffen
next prev parent reply other threads:[~2026-09-30 7:36 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 13:07 [PATCH v4 0/6] KVM/vfio: Use file-based reference counting for KVM Steffen Eiden
2026-09-28 13:07 ` [PATCH v4 1/6] KVM: Introduce file_to_kvm_<arch>() infrastructure Steffen Eiden
2026-09-28 13:14 ` sashiko-bot
2026-09-28 13:07 ` [PATCH v4 2/6] KVM: Add file back-pointer to struct kvm Steffen Eiden
2026-09-28 13:18 ` sashiko-bot
2026-09-28 13:07 ` [PATCH v4 3/6] KVM: x86: Use file_to_kvm_x86() in SEV Steffen Eiden
2026-09-28 13:13 ` sashiko-bot
2026-09-28 13:07 ` [PATCH v4 4/6] KVM/vfio: Use file-based reference counting for KVM Steffen Eiden
2026-09-28 13:22 ` sashiko-bot
2026-09-29 17:59 ` Claudio Imbrenda
2026-09-30 7:35 ` Steffen Eiden [this message]
2026-10-01 17:39 ` Alex Williamson
2026-09-28 13:07 ` [PATCH v4 5/6] KVM: Restrict kvm_get_kvm/kvm_put_kvm export to internal KVM modules Steffen Eiden
2026-09-28 13:12 ` sashiko-bot
2026-09-28 13:07 ` [PATCH v4 6/6] KVM: Remove unused file_is_kvm Steffen Eiden
2026-09-28 13:11 ` sashiko-bot
2026-09-28 19:26 ` [PATCH v4 0/6] KVM/vfio: Use file-based reference counting for KVM Sean Christopherson
2026-09-29 13:05 ` Janosch Frank
2026-09-30 7:45 ` Claudio Imbrenda
2026-10-01 11:59 ` Christian Borntraeger
2026-10-01 17:46 ` Alex Williamson
2026-10-02 8:48 ` Christian Borntraeger
2026-10-07 12:31 ` Christian Borntraeger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260930073557.770322-A-seiden@linux.ibm.com \
--to=seiden@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=akrowiak@linux.ibm.com \
--cc=alex@shazbot.org \
--cc=alifm@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=dengler@linux.ibm.com \
--cc=farman@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hpa@zytor.com \
--cc=imbrenda@linux.ibm.com \
--cc=jgg@ziepe.ca \
--cc=jjherne@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mjrosato@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=svens@linux.ibm.com \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.