linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: Lu Baolu <baolu.lu@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Joerg Roedel <joro@8bytes.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Christoph Hellwig <hch@infradead.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Ashok Raj <ashok.raj@intel.com>
Cc: Will Deacon <will@kernel.org>,
	Dan Williams <dan.j.williams@intel.com>,
	rafael@kernel.org, Diana Craciun <diana.craciun@oss.nxp.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Eric Auger <eric.auger@redhat.com>, Liu Yi L <yi.l.liu@intel.com>,
	Jacob jun Pan <jacob.jun.pan@intel.com>,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Stuart Yoder <stuyoder@gmail.com>,
	Laurentiu Tudor <laurentiu.tudor@nxp.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Li Yang <leoyang.li@nxp.com>, Dmitry Osipenko <digetx@gmail.com>,
	iommu@lists.linux-foundation.org, linux-pci@vger.kernel.org,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 01/11] iommu: Add dma ownership management interfaces
Date: Wed, 23 Feb 2022 18:00:06 +0000	[thread overview]
Message-ID: <f830c268-daca-8e8f-a429-0c80496a7273@arm.com> (raw)
In-Reply-To: <20220218005521.172832-2-baolu.lu@linux.intel.com>

On 2022-02-18 00:55, Lu Baolu wrote:
[...]
> +/**
> + * iommu_group_claim_dma_owner() - Set DMA ownership of a group
> + * @group: The group.
> + * @owner: Caller specified pointer. Used for exclusive ownership.
> + *
> + * This is to support backward compatibility for vfio which manages
> + * the dma ownership in iommu_group level. New invocations on this
> + * interface should be prohibited.
> + */
> +int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner)
> +{
> +	int ret = 0;
> +
> +	mutex_lock(&group->mutex);
> +	if (group->owner_cnt) {

To clarify the comment buried in the other thread, I really think we 
should just unconditionally flag the error here...

> +		if (group->owner != owner) {
> +			ret = -EPERM;
> +			goto unlock_out;
> +		}
> +	} else {
> +		if (group->domain && group->domain != group->default_domain) {
> +			ret = -EBUSY;
> +			goto unlock_out;
> +		}
> +
> +		group->owner = owner;
> +		if (group->domain)
> +			__iommu_detach_group(group->domain, group);
> +	}
> +
> +	group->owner_cnt++;
> +unlock_out:
> +	mutex_unlock(&group->mutex);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(iommu_group_claim_dma_owner);
> +
> +/**
> + * iommu_group_release_dma_owner() - Release DMA ownership of a group
> + * @group: The group.
> + *
> + * Release the DMA ownership claimed by iommu_group_claim_dma_owner().
> + */
> +void iommu_group_release_dma_owner(struct iommu_group *group)
> +{
> +	mutex_lock(&group->mutex);
> +	if (WARN_ON(!group->owner_cnt || !group->owner))
> +		goto unlock_out;
> +
> +	if (--group->owner_cnt > 0)
> +		goto unlock_out;

...and equivalently just set owner_cnt directly to 0 here. I don't see a 
realistic use-case for any driver to claim the same group more than 
once, and allowing it in the API just feels like opening up various 
potential corners for things to get out of sync.

I think that's the only significant concern I have left with the series 
as a whole - you can consider my other grumbles non-blocking :)

Thanks,
Robin.

> +
> +	/*
> +	 * The UNMANAGED domain should be detached before all USER
> +	 * owners have been released.
> +	 */
> +	if (!WARN_ON(group->domain) && group->default_domain)
> +		__iommu_attach_group(group->default_domain, group);
> +	group->owner = NULL;
> +
> +unlock_out:
> +	mutex_unlock(&group->mutex);
> +}
> +EXPORT_SYMBOL_GPL(iommu_group_release_dma_owner);
> +
> +/**
> + * iommu_group_dma_owner_claimed() - Query group dma ownership status
> + * @group: The group.
> + *
> + * This provides status query on a given group. It is racey and only for
> + * non-binding status reporting.
> + */
> +bool iommu_group_dma_owner_claimed(struct iommu_group *group)
> +{
> +	unsigned int user;
> +
> +	mutex_lock(&group->mutex);
> +	user = group->owner_cnt;
> +	mutex_unlock(&group->mutex);
> +
> +	return user;
> +}
> +EXPORT_SYMBOL_GPL(iommu_group_dma_owner_claimed);

  parent reply	other threads:[~2022-02-23 18:00 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-18  0:55 [PATCH v6 00/11] Fix BUG_ON in vfio_iommu_group_notifier() Lu Baolu
2022-02-18  0:55 ` [PATCH v6 01/11] iommu: Add dma ownership management interfaces Lu Baolu
2022-02-19  7:31   ` Christoph Hellwig
2022-02-21  4:02     ` Lu Baolu
2022-02-23 18:00   ` Robin Murphy [this message]
2022-02-23 18:02     ` Jason Gunthorpe
2022-02-23 18:20       ` Robin Murphy
2022-02-23 18:32         ` Jason Gunthorpe
2022-02-24  5:16       ` Lu Baolu
2022-02-24  5:29         ` Lu Baolu
2022-02-24  8:58           ` Robin Murphy
2022-02-24  5:21     ` Lu Baolu
2022-02-18  0:55 ` [PATCH v6 02/11] driver core: Add dma_cleanup callback in bus_type Lu Baolu
2022-02-19  7:32   ` Christoph Hellwig
2022-02-21 20:43     ` Robin Murphy
2022-02-21 23:48       ` Jason Gunthorpe
2022-02-22  4:48         ` Lu Baolu
2022-02-22 10:58         ` Robin Murphy
2022-02-22 15:16           ` Jason Gunthorpe
2022-02-22 21:18             ` Robin Murphy
2022-02-22 23:53               ` Jason Gunthorpe
2022-02-23  5:01                 ` Lu Baolu
2022-02-23 13:04                   ` Robin Murphy
2022-02-23 13:46                     ` Jason Gunthorpe
2022-02-23 14:06                       ` Greg Kroah-Hartman
2022-02-23 14:09                         ` Jason Gunthorpe
2022-02-23 14:30                           ` Jason Gunthorpe
2022-02-23 16:03                             ` Greg Kroah-Hartman
2022-02-23 17:05                               ` Robin Murphy
2022-02-23 17:47                                 ` Greg Kroah-Hartman
2022-02-18  0:55 ` [PATCH v6 03/11] amba: Stop sharing platform_dma_configure() Lu Baolu
2022-02-18  0:55 ` [PATCH v6 04/11] bus: platform,amba,fsl-mc,PCI: Add device DMA ownership management Lu Baolu
2022-02-18  7:55   ` Greg Kroah-Hartman
2022-02-18  0:55 ` [PATCH v6 05/11] PCI: pci_stub: Set driver_managed_dma Lu Baolu
2022-02-18  0:55 ` [PATCH v6 06/11] PCI: portdrv: " Lu Baolu
2022-02-18  0:55 ` [PATCH v6 07/11] vfio: Set DMA ownership for VFIO devices Lu Baolu
2022-02-18  0:55 ` [PATCH v6 08/11] vfio: Remove use of vfio_group_viable() Lu Baolu
2022-02-18  0:55 ` [PATCH v6 09/11] vfio: Delete the unbound_list Lu Baolu
2022-02-18  0:55 ` [PATCH v6 10/11] vfio: Remove iommu group notifier Lu Baolu
2022-02-23 21:53   ` Alex Williamson
2022-02-24  2:49     ` Lu Baolu
2022-02-18  0:55 ` [PATCH v6 11/11] iommu: Remove iommu group changes notifier Lu Baolu
2022-02-18 15:51 ` [PATCH v6 00/11] Fix BUG_ON in vfio_iommu_group_notifier() Jason Gunthorpe
2022-02-21  3:38   ` Lu Baolu
2022-02-28  0:58 ` Lu Baolu

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=f830c268-daca-8e8f-a429-0c80496a7273@arm.com \
    --to=robin.murphy@arm.com \
    --cc=airlied@linux.ie \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=cohuck@redhat.com \
    --cc=dan.j.williams@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=diana.craciun@oss.nxp.com \
    --cc=digetx@gmail.com \
    --cc=eric.auger@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@infradead.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@intel.com \
    --cc=jgg@nvidia.com \
    --cc=jonathanh@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kch@nvidia.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=laurentiu.tudor@nxp.com \
    --cc=leoyang.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=stuyoder@gmail.com \
    --cc=thierry.reding@gmail.com \
    --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).