[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