kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: Nicolin Chen <nicolinc@nvidia.com>,
	"joro@8bytes.org" <joro@8bytes.org>,
	"will@kernel.org" <will@kernel.org>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"shuah@kernel.org" <shuah@kernel.org>,
	"Liu, Yi L" <yi.l.liu@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-kselftest@vger.kernel.org"
	<linux-kselftest@vger.kernel.org>,
	"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>
Subject: Re: [PATCH v1 2/8] iommu: Introduce a new iommu_group_replace_domain() API
Date: Mon, 6 Feb 2023 09:25:17 -0400	[thread overview]
Message-ID: <Y+D/vWwRLD27slQz@nvidia.com> (raw)
In-Reply-To: <BN9PR11MB527689447DD190FECE4FDA158CDA9@BN9PR11MB5276.namprd11.prod.outlook.com>

On Mon, Feb 06, 2023 at 06:57:35AM +0000, Tian, Kevin wrote:
> > From: Jason Gunthorpe <jgg@nvidia.com>
> > Sent: Friday, February 3, 2023 11:03 PM
> > 
> > On Fri, Feb 03, 2023 at 08:26:44AM +0000, Tian, Kevin wrote:
> > > > From: Nicolin Chen <nicolinc@nvidia.com>
> > > > Sent: Thursday, February 2, 2023 3:05 PM
> > > >
> > > > All drivers are already required to support changing between active
> > > > UNMANAGED domains when using their attach_dev ops.
> > >
> > > All drivers which don't have *broken* UNMANAGED domain?
> > 
> > No, all drivers.. It has always been used by VFIO.
> 
> existing iommu_attach_group() doesn't support changing between
> two UNMANAGED domains. only from default->unmanaged or
> blocking->unmanaged.

Yes, but before we added the blocking domains VFIO was changing
between unmanaged domains. Blocking domains are so new that no driver
could have suddenly started to depend on this.

> > > Can you elaborate the error handling here? Ideally if
> > > __iommu_group_set_domain() fails then group->domain shouldn't
> > > be changed.
> > 
> > That isn't what it implements though. The internal helper leaves
> > things in a mess, it is for the caller to fix it, and it depends on
> > the caller what that means.
> 
> I didn't see any warning of the mess and the caller's responsibility
> in __iommu_group_set_domain(). Can it be documented clearly
> so if someone wants to add a new caller on it he can clearly know
> what to do?

That would be nice..
 
> and why doesn't iommu_attach_group() need to do anything
> when an attach attempt fails? In the end it calls the same
> iommu_group_do_attach_device() as __iommu_group_set_domain()
> does.

That's a bug for sure.

 
> btw looking at the code __iommu_group_set_domain():
> 
> 	 * Note that this is called in error unwind paths, attaching to a
> 	 * domain that has already been attached cannot fail.
> 	 */
> 	ret = __iommu_group_for_each_dev(group, new_domain,
> 				iommu_group_do_attach_device);
> 
> with that we don't need fall back to core domain in above error
> unwinding per this comment.

That does make some sense.

I tried to make a patch to consolidate all this error handling once,
that would be the better way to approach this.

> > In this case the API cannot retain a hidden reference to the new
> > domain, so it must be purged, one way or another.
> 
> Could you elaborate where the hidden reference is retained?

Inside the driver, it can keep track of the domain pointer if
attach_dev succeeds

Jason

  reply	other threads:[~2023-02-06 13:26 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-02  7:05 [PATCH v1 0/8] Add IO page table replacement support Nicolin Chen
2023-02-02  7:05 ` [PATCH v1 1/8] iommu: Move dev_iommu_ops() to private header Nicolin Chen
2023-02-02  7:05 ` [PATCH v1 2/8] iommu: Introduce a new iommu_group_replace_domain() API Nicolin Chen
2023-02-02 10:21   ` Baolu Lu
2023-02-02 19:14     ` Nicolin Chen
2023-02-03  1:33       ` Baolu Lu
2023-02-03  1:41         ` Nicolin Chen
2023-02-03  2:35           ` Baolu Lu
2023-02-03  8:26   ` Tian, Kevin
2023-02-03 15:03     ` Jason Gunthorpe
2023-02-03 17:53       ` Nicolin Chen
2023-02-06  6:57       ` Tian, Kevin
2023-02-06 13:25         ` Jason Gunthorpe [this message]
2023-02-07  0:32           ` Tian, Kevin
2023-02-07 12:22             ` Jason Gunthorpe
2023-02-08  4:25               ` Tian, Kevin
2023-02-08 12:42                 ` Jason Gunthorpe
2023-02-07 19:16           ` Nicolin Chen
2023-02-03 17:45     ` Nicolin Chen
2023-02-06  6:40       ` Tian, Kevin
2023-02-02  7:05 ` [PATCH v1 3/8] iommufd: Create access in vfio_iommufd_emulated_bind() Nicolin Chen
2023-02-03  9:23   ` Tian, Kevin
2023-02-03  9:28   ` Tian, Kevin
2023-02-02  7:05 ` [PATCH v1 4/8] iommufd/selftest: Add IOMMU_TEST_OP_ACCESS_SET_IOAS coverage Nicolin Chen
2023-02-02  7:05 ` [PATCH v1 5/8] iommufd: Add replace support in iommufd_access_set_ioas() Nicolin Chen
2023-02-03 10:10   ` Tian, Kevin
2023-02-03 12:31     ` Jason Gunthorpe
2023-02-03 22:25       ` Nicolin Chen
2023-02-02  7:05 ` [PATCH v1 6/8] iommufd/selftest: Add coverage for access->ioas replacement Nicolin Chen
2023-02-02  7:05 ` [PATCH v1 7/8] iommufd/device: Use iommu_group_replace_domain() Nicolin Chen
2023-02-06  8:46   ` Tian, Kevin
2023-02-06 19:17     ` Nicolin Chen
2023-02-07  0:37       ` Tian, Kevin
2023-02-02  7:05 ` [PATCH v1 8/8] vfio-iommufd: Support IO page table replacement Nicolin Chen
2023-02-06  8:49   ` Tian, Kevin
2023-02-06 18:54     ` Nicolin Chen
2023-02-03  8:09 ` [PATCH v1 0/8] Add IO page table replacement support Tian, Kevin
2023-02-03 15:04   ` Jason Gunthorpe
2023-02-06  6:39     ` Tian, Kevin
2023-02-06 13:26       ` Jason Gunthorpe
2023-02-07  0:34         ` Tian, Kevin

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+D/vWwRLD27slQz@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=alex.williamson@redhat.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=iommu@lists.linux.dev \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=nicolinc@nvidia.com \
    --cc=robin.murphy@arm.com \
    --cc=shuah@kernel.org \
    --cc=will@kernel.org \
    --cc=yi.l.liu@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;
as well as URLs for NNTP newsgroup(s).