* Stephen Warren wrote:
> I must admit I'm not at all familiar with the IOMMU APIs, but isn't the
> IOMMU driver/subsystem itself what is managing all the allocations and
> handing them out to clients? And client drivers do things like asking
> for N pages of memory mapped into their aperture? If that is true, I'm
> not sure what the purpose is of the intermediate device you propose.
> Sorry for being somewhat clueless.

That was my impression too at first. But it seems like all the IOMMU
subsystem does is map individual pages. So you pass it a physical address of
a page along with the IO virtual address to map it to. That's at least the
way it is handled for Tegra 2 GART (and from a quick look also by the Tegra 3
SMMU). For the SMMU the situation may be different because it may not have a
fixed aperture that needs to contain the IO virtual addresses, though I must
admit I haven't looked at Tegra 3 in enough detail to judge this.

So this intermediate device would be purely an allocator for the GART
aperture and handle the actual mapping via the IOMMU. This would probably be
really simple and is in fact now done in the DRM driver. The nice thing if
this would be a separate device is that it would be easy to make it a child
of the IOMMU and wouldn't be as counter-intuitive as making the DRM device
the IOMMU's child.

Thierry

Attachment: pgpuEzI7BRvlC.pgp
Description: PGP signature

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to