Hi folks,
I went ahead and checked what is the status of the UMM effort as 2011 is closing to an end. What follows is my attempt to summarise the status, collating the pieces from the latest announcements and changelogs and having discussed it briefly with Jesse and Rob. Feel free to comment if there is something missing or not correct:
A. CMA - Contiguous memory allocator. This is in its v17 incarnation at the moment (a v18 is in preparation but not released yet). v17 shares the code with memory compaction subsystem, not the hotplug like it was before (change has been suggested by Mel Gorman) and there are also a few fixes here and there, like addressing most of the comments from Andrew Morton and Mel Gorman in the rest of the CMA code, fixing broken initialization on ARM systems with DMA zone enabled and rebasing the code on v3.2-rc2 kernel.
An issue has been noted in linaro-dev from the TI landing team : without any highmem the code is working great, but with HIGHMEM inclusion of the CMA v17 consistently causes failure during DMA init. This is expected to be fixed soon (perhaps in v18?). In meantime it is suggested using 2G/2G memory split as a workaround (Kernel Features -> Memory split -> 2G/2G user/kernel split).
B. dma mapping API - DMA-mapping framework redesign for ARM architecture: this is in the v4 now. It includes a few minor changes since last version. The changes are mainly on the IOMMU mapper, keeping the DMA-mapping redesign patches almost unchanged. The code is rebased onto v3.2-rc4 kernel + IOMMU/next branch to include latest changes from IOMMU kernel tree. This series also contains support for mapping with pages larger than 4KiB using new, extended IOMMU API, and did a general cleanup of the DMA mapping implementation. However it seems that this patchset "attempts to fix everyone at once". It has been suggested that instead of trying to do that the implementation should give sufficient transition period - for example just adding the new methods now and only removing them in the following merge window when all the architectures have had a chance to migrate.
C. dmabuf - a DMA-buf object sharing framework: this is now in its 3rd version. The newest version incorporates changes as requested during the review, such as - replacing BUG_ON with WARN_ON at various places, removing mmap() fop and dma_buf_op, also the sg_sync* operations, and documenting that mmap is not allowed for exported buffer, adding error checks, replacing EXPORT_SYMBOL with EXPORT_SYMBOL_GPL and fixing some cosmetic/documentation items. There are still some items under discusion such as userspace mmap support, more advanced (and more strictly specified) coherency models and shared infrastructure for implementing exporters. However, there is a suggestion that these items will become much clearer once we have a few example drivers at hand and a better understanding of what cases need to be handled better.
D. Finally some repositories - where can you find the code to try it out: * git://git.linaro.org/people/jessebarker/linaro-mm-sig/linux.git contains (for the moment) 6 branches: + cma-v17 == unadulterated v3.2-rc4 + cma v17 patchset + dma-mapping-v4 == unadulterated v3.2-rc4 + dma-mapping v4 patchset + android-cma-v17 == john stultz's androidization tree based upon unadulterated v3.2-rc4 + cma v17 patchset + android-dma-mapping-v4 == john stultz's androidization tree based upon unadulterated v3.2-rc4 + dma-mapping v4 patchset
Also note these repos: - https://github.com/robclark/kernel-omap4/commits/drmplane-dmabuf contains patches to enable sharing of buffers between drm and v4l2,
Rob commented that it isn't really identified yet which tree to push dmabuf through.. airlied has volunteered to push via drm tree, which is ok
- git://git.linaro.org/people/bgaignard/linux-snowball-cma-test.git contains a first version of the CMA testing scripts for LAVA (snowball specific at least for now)
Best regards,
linaro-mm-sig@lists.linaro.org