Re: [RFC PATCH 2/7] iommu: Add share domain interface in iommu for spimdev

From: Kenneth Lee
Date: Wed Aug 08 2018 - 21:11:20 EST

On Wed, Aug 08, 2018 at 11:13:54AM +0200, Joerg Roedel wrote:
> Date: Wed, 8 Aug 2018 11:13:54 +0200
> From: Joerg Roedel <joro@xxxxxxxxxx>
> To: Kenneth Lee <>
> CC: Jonathan Corbet <corbet@xxxxxxx>, Herbert Xu
> <herbert@xxxxxxxxxxxxxxxxxxx>, "David S . Miller" <davem@xxxxxxxxxxxxx>,
> Alex Williamson <alex.williamson@xxxxxxxxxx>, Kenneth Lee
> <liguozhu@xxxxxxxxxxxxx>, Hao Fang <fanghao11@xxxxxxxxxx>, Zhou Wang
> <wangzhou1@xxxxxxxxxxxxx>, Zaibo Xu <xuzaibo@xxxxxxxxxx>, Philippe
> Ombredanne <pombredanne@xxxxxxxx>, Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>,
> linux-doc@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
> linux-crypto@xxxxxxxxxxxxxxx, iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx,
> kvm@xxxxxxxxxxxxxxx, linux-accelerators@xxxxxxxxxxxxxxxx, Lu Baolu
> <>, Sanjay Kumar <sanjay.k.kumar@xxxxxxxxx>,
> linuxarm@xxxxxxxxxx
> Subject: Re: [RFC PATCH 2/7] iommu: Add share domain interface in iommu for
> spimdev
> User-Agent: NeoMutt/20170421 (1.8.2)
> Message-ID: <20180808091354.ppqgineql3pufwwr@xxxxxxxxxx>
> On Wed, Aug 01, 2018 at 06:22:16PM +0800, Kenneth Lee wrote:
> > From: Kenneth Lee <liguozhu@xxxxxxxxxxxxx>
> >
> > This patch add sharing interface for a iommu_group. The new interface:
> >
> > iommu_group_share_domain()
> > iommu_group_unshare_domain()
> >
> > can be used by some virtual iommu_group (such as iommu_group for spimdev)
> > to share their parent's iommu_group.
> >
> > When the domain of the group is shared, it cannot be changed before
> > unshared. In the future, notification can be added if update is required.
> >From the description or the patch I don't really get why this is needed.
> Please update the description and make a case for this API addition.

Yes, I will add more description in next version.

The idea here is:

1. iommu_domain is the setting of the IOMMU(the unit) of an iommu_group.

2. The iommu_group originally uses a default domain or a created one (e.g. by vfio)
as its effective domain. There is only one user for a domain. If a device is
bound to vfio driver, it uses the new created domain. And if it is unbound from
vfio driver, it is switched back to the default domain.

3. But for spimdev, we create an mdev which share it parent device's IOMMU. That
means, the parent device (along with its iommu group) will continue use its
iommu_domain, and the mdev will use the same at the same time.

4. This API, is to tell the iommu_group that the domain is shared by the
spimdev. And it should be changed before it is unshared.


> Joerg