Re: [PATCH 1/3] VFIO: take reference to the KVM module

From: Paolo Bonzini

Date: Mon Apr 13 2026 - 07:32:53 EST


On 4/10/26 17:45, Sean Christopherson wrote:
On Fri, Apr 10, 2026, Paolo Bonzini wrote:
On Fri, Apr 10, 2026 at 4:13 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:

+Dan
We could get rid of the reference count completely (get_file() as a
replacement for kvm_get_kvm(), get_file_active() as a replacement for
kvm_get_kvm_safe()). struct kvm would need to add a back pointer from
struct kvm to struct file,

I wasn't thinking of dropping kvm_get_kvm() entirely, rather just not exporting
it. Forcing internal KVM usage to grab a reference to the file doesn't add a
whole lot value.

It adds not doing things in two different ways. The kvm_file is not
always available (and if we need to add it, it should be added in
struct kvm not struct kvm_device).

My thought was to deliberately avoid putting it in "kvm", because as you're
effectively pointing out, the file really shouldn't be passed around within KVM.

Aha! What if we bury it in kvm_vfio? As an acknowledgement that passing around
a kvm_file is only intended for cases where an external, non-KVM entity needs to
to propagate the VM reference.

That would indeed be best but it doesn't compile as there's no file argument to device_ops.create. And adding it to device_ops is ugly as well.

Putting the backpointer in "struct kvm" seems the least bad. I'll get a look again after finishing testing for the merge window.

Paolo