[FE training-materials-updates] Mention CMA and dma-buf in the ION slides

Maxime Ripard maxime.ripard at free-electrons.com
Fri Aug 30 16:46:49 CEST 2013


Repository : git://git.free-electrons.com/training-materials.git

On branch  : jelly-bean
Link       : http://git.free-electrons.com/training-materials/commit/?id=21025205fa06c56d03b88898be44545b94c85865

>---------------------------------------------------------------

commit 21025205fa06c56d03b88898be44545b94c85865
Author: Maxime Ripard <maxime.ripard at free-electrons.com>
Date:   Wed Aug 28 13:39:04 2013 +0200

    Mention CMA and dma-buf in the ION slides
    
    Signed-off-by: Maxime Ripard <maxime.ripard at free-electrons.com>


>---------------------------------------------------------------

21025205fa06c56d03b88898be44545b94c85865
 .../android-kernel-changes-ion.tex                 |   31 ++++++++++++++++----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/slides/android-kernel-changes-ion/android-kernel-changes-ion.tex b/slides/android-kernel-changes-ion/android-kernel-changes-ion.tex
index bbbd254..d23a625 100644
--- a/slides/android-kernel-changes-ion/android-kernel-changes-ion.tex
+++ b/slides/android-kernel-changes-ion/android-kernel-changes-ion.tex
@@ -5,22 +5,26 @@
   \item ION was introduced with Ice Cream Sandwich (4.0) version of
     Android
   \item Its role is to allocate memory in the system, for most of the
-    possible cases
+    possible cases, and to allow different devices to share buffers,
+    without any copy, possibly from an userspace application
+  \item It's for example useful if you want to retrieve an image from
+    a camera, and push it to the JPEG hardware encoder from an
+    userspace application
   \item The usual Linux memory allocators can only allocate a buffer
     that is up to 512 pages wide, with a page usually being 4kiB.
   \item There was previously for Android (and Linux in general) some
     vendor specific mechanism to allocate larger physically contiguous
     memory areas (\code{nvmap} for nVidia, \code{CMEM} for TI, etc.)
-  \item ION is here to unify the interface to allocate memory in the
-    system, no matter on which SoC you're running on.
-  \item It uses a system of heaps, with Linux publishing the heaps
-    available on a given system.
   \end{itemize}
 \end{frame}
 
 \begin{frame}
   \frametitle{ION 2/2}
   \begin{itemize}
+  \item ION is here to unify the interface to allocate memory in the
+    system, no matter on which SoC you're running on.
+  \item It uses a system of heaps, with Linux publishing the heaps
+    available on a given system.
   \item By default, you have three different heaps:
     \begin{description}
     \item[system] Memory virtually contiguous memory, backed by
@@ -35,3 +39,20 @@
   \item \url{https://lwn.net/Articles/480055/}
   \end{itemize}
 \end{frame}
+
+\begin{frame}
+  \frametitle{Comparison with mainline equivalents}
+  \begin{itemize}
+  \item There is no direct equivalent to ION in the mainline
+    kernel. However:
+    \begin{itemize}
+    \item The contiguous allocation of the buffers is done through
+      \code{CMA}
+    \item The buffer sharing between devices is made through
+      \code{dma-buf}
+    \item Its userspace API also allows to allocate and share buffers
+      from the userspace, which is not possible right now in mainline
+      kernel
+    \end{itemize}
+  \end{itemize}
+\end{frame}



More information about the training-materials-updates mailing list