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

Paolo Bonzini
2026-04-13T11:32:21Z

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@google.com> 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