All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	"cohuck@redhat.com" <cohuck@redhat.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>,
	"nicolinc@nvidia.com" <nicolinc@nvidia.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"chao.p.peng@linux.intel.com" <chao.p.peng@linux.intel.com>,
	"yi.y.sun@linux.intel.com" <yi.y.sun@linux.intel.com>,
	"peterx@redhat.com" <peterx@redhat.com>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>
Subject: Re: [PATCH 10/13] vfio: Make vfio_device_open() exclusive between group path and device cdev path
Date: Wed, 8 Feb 2023 08:41:18 -0400	[thread overview]
Message-ID: <Y+OYbkYUmHq46hkX@nvidia.com> (raw)
In-Reply-To: <BN9PR11MB5276F8E7172F12B19560AC1F8CD89@BN9PR11MB5276.namprd11.prod.outlook.com>

On Wed, Feb 08, 2023 at 04:23:16AM +0000, Tian, Kevin wrote:
> > From: Jason Gunthorpe <jgg@nvidia.com>
> > Sent: Tuesday, February 7, 2023 9:27 PM
> > > >
> > > > No, I mean why can't vfio just call iommufd exactly once regardless of
> > > > what mode it is running in?
> > >
> > > This seems to be moving the DMA owner claim out of
> > iommufd_device_bind().
> > > Is it? Then either group and cdev can claim DMA owner with their own
> > DMA
> > > marker.
> > 
> > No, it has nothing to do with DMA ownership
> > 
> > Just keep a flag in vfio saying it is in group mode or device mode and
> > act accordingly.
> 
> It cannot be a simple flag. needs to be a refcnt since multiple devices 
> in the group might be opened via cdev so the device mode should be
> cleared only when the last device via cdev is closed.
> 
> Yi actually did implement such a flavor before, kind of introducing
> a vfio_group->cdev_opened_cnt field.
> 
> Then cdev bind_iommufd checks whether vfio_group->opened_file
> has been set in the group open path. If not then increment
> vfio_group->cdev_opened_cnt.
> 
> cdev close decrements vfio_group->cdev_opened_cnt.
> 
> group open checks whether vfio_group->cdev_opened_cnt has been
> set. If not go to set vfio_group->opened_file.
> 
> In this case only one path can claim DMA ownership.
> 
> Is above what you expect?

It seems appropriate

You could also sweep the device list to see how the indivudal devices are
open to decice what to do.

> > The iommufd DMA owner check is *only* to be used for protecting
> > against two unrelated drivers trying to claim the same device.
> > 
> 
> this is just one implementation choice. I don't see why it cannot be
> extended to allow one driver to protect against two internal paths.
> Just simply allow the driver to assign an owner instead of assuming
> iommufd_ctx.

It is really not what it is for, and the owner thing is so ugly I
don't like the pattern. 

Jason

  reply	other threads:[~2023-02-08 12:41 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-17 13:49 [PATCH 00/13] Add vfio_device cdev for iommufd support Yi Liu
2023-01-17 13:49 ` [PATCH 01/13] vfio: Allocate per device file structure Yi Liu
2023-01-18  8:37   ` Tian, Kevin
2023-01-18 13:28   ` Eric Auger
2023-01-17 13:49 ` [PATCH 02/13] vfio: Refine vfio file kAPIs Yi Liu
2023-01-18  8:42   ` Tian, Kevin
2023-01-18 14:37   ` Eric Auger
2023-01-29 13:32     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 03/13] vfio: Accept vfio device file in the driver facing kAPI Yi Liu
2023-01-18  8:45   ` Tian, Kevin
2023-01-18 16:11   ` Eric Auger
2023-01-30  9:47     ` Liu, Yi L
2023-01-30 18:02       ` Jason Gunthorpe
2023-01-17 13:49 ` [PATCH 04/13] kvm/vfio: Rename kvm_vfio_group to prepare for accepting vfio device fd Yi Liu
2023-01-18  8:47   ` Tian, Kevin
2023-01-18 16:33   ` Eric Auger
2023-01-17 13:49 ` [PATCH 05/13] kvm/vfio: Provide struct kvm_device_ops::release() insted of ::destroy() Yi Liu
2023-01-18  8:56   ` Tian, Kevin
2023-01-19  9:12   ` Eric Auger
2023-01-19  9:30     ` Tian, Kevin
2023-01-20  3:52       ` Liu, Yi L
2023-01-19 19:07   ` Jason Gunthorpe
2023-01-19 20:04     ` Alex Williamson
2023-01-20 13:03     ` Liu, Yi L
2023-01-20 14:00     ` Liu, Yi L
2023-01-20 14:33       ` Jason Gunthorpe
2023-01-20 15:09         ` Liu, Yi L
2023-01-20 15:11           ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 06/13] kvm/vfio: Accept vfio device file from userspace Yi Liu
2023-01-18  9:18   ` Tian, Kevin
2023-01-19  9:35   ` Eric Auger
2023-01-30  7:36     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 07/13] vfio: Pass struct vfio_device_file * to vfio_device_open/close() Yi Liu
2023-01-18  9:27   ` Tian, Kevin
2023-01-19 11:01   ` Eric Auger
2023-01-19 20:35     ` Alex Williamson
2023-01-30  9:38       ` Liu, Yi L
2023-01-30  9:38     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 08/13] vfio: Block device access via device fd until device is opened Yi Liu
2023-01-18  9:35   ` Tian, Kevin
2023-01-18 13:52     ` Jason Gunthorpe
2023-01-19  3:42       ` Tian, Kevin
2023-01-19  3:43         ` Liu, Yi L
2023-01-19 14:00   ` Eric Auger
2023-01-30 10:41     ` Liu, Yi L
2023-01-19 20:47   ` Alex Williamson
2023-01-30 10:48     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 09/13] vfio: Add infrastructure for bind_iommufd and attach Yi Liu
2023-01-19  9:45   ` Tian, Kevin
2023-01-30 13:52     ` Liu, Yi L
2023-01-19 23:05   ` Alex Williamson
2023-01-30 13:55     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 10/13] vfio: Make vfio_device_open() exclusive between group path and device cdev path Yi Liu
2023-01-19  9:55   ` Tian, Kevin
2023-01-30 11:59     ` Liu, Yi L
2023-01-19 23:51   ` Alex Williamson
2023-01-30 12:14     ` Liu, Yi L
2023-02-02  5:34       ` Liu, Yi L
2023-02-03 17:41         ` Jason Gunthorpe
2023-02-06  4:30           ` Liu, Yi L
2023-02-06 10:09             ` Tian, Kevin
2023-02-06 15:10               ` Jason Gunthorpe
2023-02-06 15:51                 ` Liu, Yi L
2023-02-07  0:35                   ` Tian, Kevin
2023-02-07 13:12                     ` Jason Gunthorpe
2023-02-07 13:19                       ` Liu, Yi L
2023-02-07 13:20                         ` Jason Gunthorpe
2023-02-07 13:23                           ` Liu, Yi L
2023-02-07 13:27                             ` Jason Gunthorpe
2023-02-07 13:55                               ` Liu, Yi L
2023-02-08  4:23                               ` Tian, Kevin
2023-02-08 12:41                                 ` Jason Gunthorpe [this message]
2023-01-17 13:49 ` [PATCH 11/13] vfio: Add cdev for vfio_device Yi Liu
2023-01-20  7:26   ` Tian, Kevin
2023-01-31  6:17     ` Liu, Yi L
2023-01-24 20:44   ` Jason Gunthorpe
2023-01-17 13:49 ` [PATCH 12/13] vfio: Add ioctls for device cdev iommufd Yi Liu
2023-01-20  8:03   ` Tian, Kevin
2023-02-06  9:07     ` Liu, Yi L
2023-01-17 13:49 ` [PATCH 13/13] vfio: Compile group optionally 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=Y+OYbkYUmHq46hkX@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=suravee.suthikulpanit@amd.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 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.