Re: [PATCH V4 05/18] iommu/ioasid: Redefine IOASID set and allocation APIs

From: Kirti Wankhede
Date: Thu May 27 2021 - 14:25:20 EST




On 5/27/2021 10:30 AM, David Gibson wrote:
On Wed, May 26, 2021 at 02:48:03AM +0530, Kirti Wankhede wrote:


On 5/26/2021 1:22 AM, Jason Gunthorpe wrote:
On Wed, May 26, 2021 at 12:56:30AM +0530, Kirti Wankhede wrote:

2. iommu backed mdev devices for SRIOV where mdev device is created per
VF (mdev device == VF device) then that mdev device has same iommu
protection scope as VF associated to it.

This doesn't require, and certainly shouldn't create, a fake group.

Only the VF's real IOMMU group should be used to model an iommu domain
linked to a VF. Injecting fake groups that are proxies for real groups
only opens the possibility of security problems like David is
concerned with.


I think this security issue should be addressed by letting mdev device
inherit its parent's iommu_group, i.e. VF's iommu_group here.

No, that doesn't work. AIUI part of the whole point of mdevs is to
allow chunks of a single PCI function to be handed out to different
places, because they're isolated from each other not by the system
IOMMU, but by a combination of MMU hardware in the hardware (e.g. in a
GPU card) and software in the mdev driver.

That's correct for non-iommu backed mdev devices.

If mdevs inherited the
group of their parent device they wouldn't count as isolated from each
other, which they should.


For iommu backed mdev devices for SRIOV, where there can be single mdev device for its parent, here parent device is VF, there can't be multiple mdev devices associated with that VF. In this case mdev can inherit the group of parent device.

Kirti