public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: alex.williamson@redhat.com, kevin.tian@intel.com,
	cohuck@redhat.com, eric.auger@redhat.com, nicolinc@nvidia.com,
	kvm@vger.kernel.org, mjrosato@linux.ibm.com,
	chao.p.peng@linux.intel.com, yi.y.sun@linux.intel.com,
	peterx@redhat.com, jasowang@redhat.com
Subject: Re: [RFC 05/12] kvm/vfio: Accept vfio device file from userspace
Date: Fri, 6 Jan 2023 10:55:22 -0400	[thread overview]
Message-ID: <Y7g2WhrDFHpPPsaH@nvidia.com> (raw)
In-Reply-To: <6af126f0-8344-f03a-6a45-9cdd877e4bcd@intel.com>

On Fri, Jan 06, 2023 at 10:46:56PM +0800, Yi Liu wrote:
> On 2023/1/6 22:32, Jason Gunthorpe wrote:
> > On Mon, Dec 19, 2022 at 12:47:11AM -0800, Yi Liu wrote:
> > > This defines KVM_DEV_VFIO_FILE* and make alias with KVM_DEV_VFIO_GROUP*.
> > > Old userspace uses KVM_DEV_VFIO_GROUP* works as well.
> > 
> > Do we have a circular refcount problem with this plan?
> > 
> > The kvm will hold a ref on the vfio device struct file
> > 
> > Once the vfio device struct file reaches open_device we will hold a
> > ref on the kvm
> > 
> > At this point if both kvm and vfio device FDs are closed will the
> > kernel clean it up or does it leak because they both ref each other?
> 
> looks to be a circular. In my past test, seems no apparent issue. But
> I'll do a test to confirm it. If this is a problem, it should be an
> existing issue. right? Should have same issue with group file.

The group is probably fine since the device struct file will not have
any reference it will close which will release the kvm and then the
group.

> > Please test to confirm..
> 
> will do.

Probably kvm needs to put back the VFIO file reference when its own
struct file closes, not when when the kvm->users_count reaches 0.

This will allow the VFIO device file to close and drop the users_count

Jason

  reply	other threads:[~2023-01-06 14:55 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-19  8:47 [RFC 00/12] Add vfio_device cdev for iommufd support Yi Liu
2022-12-19  8:47 ` [RFC 01/12] vfio: Allocate per device file structure Yi Liu
2022-12-21  3:57   ` Tian, Kevin
2022-12-21  6:46     ` Yi Liu
2022-12-19  8:47 ` [RFC 02/12] vfio: Refine vfio file kAPIs Yi Liu
2022-12-19  8:47 ` [RFC 03/12] vfio: Accept vfio device file in the driver facing kAPI Yi Liu
2022-12-21  4:07   ` Tian, Kevin
2022-12-21  7:02     ` Yi Liu
2023-01-04 18:25     ` Jason Gunthorpe
2023-01-09  4:13       ` Tian, Kevin
2022-12-19  8:47 ` [RFC 04/12] kvm/vfio: Rename kvm_vfio_group to prepare for accepting vfio device fd Yi Liu
2022-12-19  8:47 ` [RFC 05/12] kvm/vfio: Accept vfio device file from userspace Yi Liu
2023-01-06 14:32   ` Jason Gunthorpe
2023-01-06 14:46     ` Yi Liu
2023-01-06 14:55       ` Jason Gunthorpe [this message]
2023-01-06 15:04         ` Yi Liu
2023-01-06 16:08           ` Jason Gunthorpe
2023-01-09  4:17           ` Tian, Kevin
2023-01-09  4:26             ` Yi Liu
2022-12-19  8:47 ` [RFC 06/12] vfio: Pass struct vfio_device_file * to vfio_device_open/close() Yi Liu
2022-12-21  4:10   ` Tian, Kevin
2022-12-21  7:04     ` Yi Liu
2022-12-19  8:47 ` [RFC 07/12] vfio: Block device access via device fd until device is opened Yi Liu
2022-12-21  4:18   ` Tian, Kevin
2023-01-04 20:47   ` Jason Gunthorpe
2022-12-19  8:47 ` [RFC 08/12] vfio: Add infrastructure for bind_iommufd and attach Yi Liu
2023-01-09  5:46   ` Tian, Kevin
2023-01-09 13:21     ` Jason Gunthorpe
2023-01-10  2:53       ` Tian, Kevin
2022-12-19  8:47 ` [RFC 09/12] vfio: Make vfio_device_open() exclusive between group path and device cdev path Yi Liu
2023-01-09  6:03   ` Tian, Kevin
2022-12-19  8:47 ` [RFC 10/12] vfio: Add cdev for vfio_device Yi Liu
2023-01-09  6:54   ` Tian, Kevin
2022-12-19  8:47 ` [RFC 11/12] vfio: Add ioctls for device cdev iommufd Yi Liu
2023-01-09  7:47   ` Tian, Kevin
2023-01-09 14:14     ` Jason Gunthorpe
2023-01-09 15:07       ` Yi Liu
2023-01-09 15:12         ` Jason Gunthorpe
2023-01-09 15:20           ` Yi Liu
2023-01-09 14:55     ` Yi Liu
2023-01-10  2:57       ` Tian, Kevin
2022-12-19  8:47 ` [RFC 12/12] vfio: Compile group optionally Yi Liu
2022-12-19  8:51 ` [RFC 00/12] Add vfio_device cdev for iommufd support Yi Liu
2023-01-04 15:23 ` Yi Liu

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=Y7g2WhrDFHpPPsaH@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=alex.williamson@redhat.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=cohuck@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=nicolinc@nvidia.com \
    --cc=peterx@redhat.com \
    --cc=yi.l.liu@intel.com \
    --cc=yi.y.sun@linux.intel.com \
    /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