On Wed, Dec 14, 2016 at 12:35:31PM +0100, Lucas Stach wrote: > Am Mittwoch, den 14.12.2016, 13:16 +0200 schrieb Mikko Perttunen: > > Add a new IO virtual memory allocation API to allow clients to > > allocate non-GEM memory in the Tegra DRM IOMMU domain. This is > > required e.g. for loading client firmware when clients are attached > > to the IOMMU domain. > > > > The allocator allocates contiguous physical pages that are then > > mapped contiguously to the IOMMU domain using the iova_domain > > library provided by the kernel. Contiguous physical pages are > > used so that the same allocator works also when IOMMU support > > is disabled and therefore devices access physical memory directly. > > > Why is this needed? If you use the DMA API for those buffers you should > end up with CMA memory in the !IOMMU case and normal paged memory with > IOMMU enabled. From my understanding this should match the requirements. We can't currently use the DMA API for these allocations because it doesn't allow (or at least didn't back when this was first implemented) us to share a mapping between two devices. The reason why we need these patches is that when IOMMU is enabled, then the units' falcons will read memory through the IOMMU, so we must have allocations for GEM buffers and the firmware go through the same mechanism. Thierry
Attachment:
signature.asc
Description: PGP signature