mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: Steffen Eiden <seiden@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 0/6] KVM/vfio: Use file-based reference counting for KVM
Date: Wed, 30 Sep 2026 09:45:55 +0200	[thread overview]
Message-ID: <20260930094555.606453ba@p-imbrenda> (raw)
In-Reply-To: <20260928-vfio-v4-0-e32e226d5932@linux.ibm.com>

On Mon, 28 Sep 2026 15:07:01 +0200
Steffen Eiden <seiden@linux.ibm.com> wrote:

> This series switches the KVM-VFIO interface and external consumers over to
> standard file-based reference counting, eliminating all external KVM symbol
> exports.
> 
> This is a spin-off for the arm on s390 series (old version: [1]) to
> address all the relevant persons w/o polluting their mailbox. The
> arm-on-s390 series now dropped those patches and depends on this series
> (for beeing able to link with KVM=y)
> 
> Currently, VFIO integrates with KVM by looking up kvm_get_kvm_safe() and
> kvm_put_kvm() dynamically using symbol_get(), manually tracking module
> reference counts and storing a put_kvm function pointer in struct
> vfio_device.
> 
> In the ARM64-on-s390 architecture, a second concurrent KVM module
> (kvm-arm64) is introduced alongside native KVM to host hardware-accelerated
> ARM64 guests. Having exported global symbols (like kvm_get_kvm/kvm_put_kvm)
> creates symbol conflicts and prevents clean coexistence of two KVM modules.
> 
> Additionally, the file based counting simplifies the code and reuses
> the existing fs refcounting.
> 
> Instead of passing raw KVM pointers and managing module symbols manually, the
> interface now passes the underlying VM file descriptor throughout VFIO and
> associated architecture subsystems. To safely extract the KVM instance from a
> file, an architecture-namespaced helper mechanism is introduced that verifies
> the file belongs to the expected KVM implementation before accessing its
> internal state. A back-pointer from the KVM instance to its associated file is
> maintained across its lifecycle so subsystems can safely acquire file
> references on demand. Finally, with VFIO, architecture page tracking, and
> device hooks converted to use file references, the remaining KVM reference-
> counting exports are restricted strictly to internal KVM modules.
> 
> 	Steffen

Whole series:

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>

> 
> [1] https://lore.kernel.org/all/20260918133107.1042730-1-seiden@linux.ibm.com
> 
> ---
> Changes in v4:
> - Add patch to remove now unused file_is_kvm()
> - Add Jasons r-b
> - Link to v3: https://lore.kernel.org/r/20260924-vfio-v3-0-4a294307797b@linux.ibm.com
> 
> Changes in v3:
> - Split the previous single monolithic patch into 5 smaller, focused patches:
>   1. Add opt-in macro infrastructure for `file_to_kvm_<arch>()` helpers.
>   2. Add `kvm->file` back-pointer to `struct kvm`.
>   3. Use `file_to_kvm_x86()` helper in AMD SEV.
>   4. Convert VFIO, s390 vfio-ap/zpci, and x86 page-track to file-based refcounting.
>   5. Restrict `kvm_get_kvm`/`kvm_put_kvm` to `EXPORT_SYMBOL_FOR_KVM_INTERNAL`.
> - Introduce macro-generated, typed `file_to_kvm_<arch>()` helpers instead of generic casts.
> - Clean up `vfio_pci_zdev.c` by passing `struct file *` through `zpci_kvm_hook.kvm_register`.
> - Update x86 page-track and s390 AP/PCI to use `file_to_kvm_<arch>()`.
> - Update x86 Makefile export checks.
> - Link to v2: https://lore.kernel.org/r/20260903-vfio-v2-1-ef4cd4190ae7@linux.ibm.com
> 
> Changes in v2:
> - Rebase on 7.3-rc1+ and resolve conflict with 9f240376d034 ("s390/pci: Store
>   PCI error information for passthrough devices"),
> - Fix stub prototype for vfio_group_set_kvm for !CONFIG_VFIO_GROUP
> - Link to v1:   https://lore.kernel.org/r/20260812-vfio-v1-1-5cfe0b1fa4e7@linux.ibm.com
> 
> ---
> Steffen Eiden (6):
>       KVM: Introduce file_to_kvm_<arch>() infrastructure
>       KVM: Add file back-pointer to struct kvm
>       KVM: x86: Use file_to_kvm_x86() in SEV
>       KVM/vfio: Use file-based reference counting for KVM
>       KVM: Restrict kvm_get_kvm/kvm_put_kvm export to internal KVM modules
>       KVM: Remove unused file_is_kvm
> 
>  arch/s390/include/asm/kvm_host_s390.h |  4 ++-
>  arch/s390/kvm/s390/pci.c              |  9 ++++--
>  arch/x86/include/asm/kvm_host.h       |  2 ++
>  arch/x86/include/asm/kvm_page_track.h | 10 +++---
>  arch/x86/kvm/Makefile                 |  4 +--
>  arch/x86/kvm/mmu/page_track.c         | 22 +++++++++-----
>  arch/x86/kvm/svm/sev.c                |  8 ++---
>  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/kvm_host.h              | 19 +++++++++++-
>  include/linux/vfio.h                  |  5 ++-
>  virt/kvm/kvm_main.c                   | 21 +++++++++----
>  virt/kvm/vfio.c                       | 13 +++++---
>  15 files changed, 129 insertions(+), 88 deletions(-)
> 
> base-commit: 72d3fcf802c45d00b300f25b848a93c3a2bd7c7e
> 


      parent reply	other threads:[~2026-09-30  7:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 13:07 Steffen Eiden
2026-09-28 13:07 ` [PATCH v4 1/6] KVM: Introduce file_to_kvm_<arch>() infrastructure Steffen Eiden
2026-09-28 13:07 ` [PATCH v4 2/6] KVM: Add file back-pointer to struct kvm Steffen Eiden
2026-09-28 13:07 ` [PATCH v4 3/6] KVM: x86: Use file_to_kvm_x86() in SEV Steffen Eiden
2026-09-28 13:07 ` [PATCH v4 4/6] KVM/vfio: Use file-based reference counting for KVM Steffen Eiden
2026-09-29 17:59   ` Claudio Imbrenda
2026-09-30  7:35     ` Steffen Eiden
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:07 ` [PATCH v4 6/6] KVM: Remove unused file_is_kvm Steffen Eiden
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 [this message]

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=20260930094555.606453ba@p-imbrenda \
    --to=imbrenda@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=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=seiden@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®