2015-02-03 12:25:15

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH 3/5] iommu: Limit iommu_attach/detach_device to devices with their own group

On Tue, Jan 27, 2015 at 01:08:57AM +0100, Joerg Roedel wrote:
> From: Joerg Roedel <[email protected]>
>
> This patch changes the behavior of the iommu_attach_device
> and iommu_detach_device functions. With this change these
> functions only work on devices that have their own group.
> For all other devices the iommu_group_attach/detach
> functions must be used.
>
> Signed-off-by: Joerg Roedel <[email protected]>
> ---
> drivers/iommu/iommu.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 59 insertions(+), 4 deletions(-)

Sorry for my ignorance, but I don't understand what IOMMU groups are
supposed to be or how to make use of them. It seems like a common idiom
is to simply allocate a new group and add a device to it in the IOMMU's
->add_device() callback, but I fail to see the reason for that.

Can anybody point me to documentation about this? I've looked and I did
not find anything.

Thierry


Attachments:
(No filename) (935.00 B)
(No filename) (819.00 B)
Download all attachments

2015-02-03 12:59:15

by Jörg Rödel

[permalink] [raw]
Subject: Re: [PATCH 3/5] iommu: Limit iommu_attach/detach_device to devices with their own group

On Tue, Feb 03, 2015 at 01:25:07PM +0100, Thierry Reding wrote:
> Sorry for my ignorance, but I don't understand what IOMMU groups are
> supposed to be or how to make use of them. It seems like a common idiom
> is to simply allocate a new group and add a device to it in the IOMMU's
> ->add_device() callback, but I fail to see the reason for that.
>
> Can anybody point me to documentation about this? I've looked and I did
> not find anything.

An iommu group is a set of devices that the iommu hardware can isolate
from other devices. So devices in one group can't be isolated from each
other and have to share the same iommu page table.

This happens for example on legac 32 bit PCI buses. All devices on such
a bus use the request-id of the PCIe-PCI bridge, so they can't be
isolated from each other from the IOMMU and have to be in one iommu
group.


Joerg