[bootlin/training-materials updates] master: kernel: iomem: Create a slide about endianness (f4c85364)

Miquel Raynal miquel.raynal at bootlin.com
Thu Jun 2 10:54:21 CEST 2022


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/f4c85364b6d6914a1c5023210493b2b596f1192a

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

commit f4c85364b6d6914a1c5023210493b2b596f1192a
Author: Miquel Raynal <miquel.raynal at bootlin.com>
Date:   Tue May 31 17:10:56 2022 +0200

    kernel: iomem: Create a slide about endianness
    
    Drop the details about endianness in the introduction.
    
    Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>


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

f4c85364b6d6914a1c5023210493b2b596f1192a
 .../endianness-conversion.dia                      | Bin 0 -> 1710 bytes
 .../kernel-driver-development-io-memory.tex        |  33 ++++++++++++++-------
 .../kernel-source-code-drivers.tex                 |   6 ----
 3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/slides/kernel-driver-development-io-memory/endianness-conversion.dia b/slides/kernel-driver-development-io-memory/endianness-conversion.dia
new file mode 100644
index 00000000..cdc7eb6a
Binary files /dev/null and b/slides/kernel-driver-development-io-memory/endianness-conversion.dia differ
diff --git a/slides/kernel-driver-development-io-memory/kernel-driver-development-io-memory.tex b/slides/kernel-driver-development-io-memory/kernel-driver-development-io-memory.tex
index fbc47061..b393adee 100644
--- a/slides/kernel-driver-development-io-memory/kernel-driver-development-io-memory.tex
+++ b/slides/kernel-driver-development-io-memory/kernel-driver-development-io-memory.tex
@@ -150,16 +150,6 @@ void write[bwlq](unsigned val, void *addr);
 unsigned __raw_read[bwlq](void *addr);
 void __raw_write[bwlq](unsigned val, void *addr);
 \end{minted}
-  \item Little-endian is more frequent and also easier
-        to use in drivers. Even if you just read the least significant
-        byte of a 32-bit register, it's still at the same address.
-  \item Example
-    \begin{itemize}
-    \item 32 bit write (\kfile{drivers/tty/serial/uartlite.c}):
-\begin{minted}{c}
-writel(c & 0xff, port->membase + 4);
-\end{minted}
-    \end{itemize}
   \end{itemize}
 \end{frame}
 
@@ -186,6 +176,29 @@ writel(c & 0xff, port->membase + 4);
   \end{itemize}
 \end{frame}
 
+\begin{frame}[fragile]
+  \frametitle{Byte endianness}
+  \begin{itemize}
+  \item Not all devices are little-endian
+  \item Most networking protocols are big-endian
+  \item Manual handling of the endianness may sometimes be required
+  \end{itemize}
+  \begin{columns}
+    \column{0.4\textwidth}
+    For portability purposes, drivers should handle all possibilities:
+    \begin{itemize}
+    \item \kfunc{cpu_to_be32}
+    \item \kfunc{cpu_to_le32}
+    \item \kfunc{be32_to_cpu}
+    \item \kfunc{le32_to_cpu}
+    \end{itemize}
+    \column{0.6\textwidth}
+    \begin{center}
+      \includegraphics[width=0.8\textwidth]{slides/kernel-driver-development-io-memory/endianness-conversion.pdf}
+    \end{center}
+  \end{columns}
+\end{frame}
+
 \begin{frame}
   \frametitle{/dev/mem}
   \begin{itemize}
diff --git a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
index 65c83286..dd7c2e1a 100644
--- a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
+++ b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
@@ -51,12 +51,6 @@
     abstract the architecture specific details
     \begin{itemize}
     \item Endianness
-      \begin{itemize}
-      \item \kfunc{cpu_to_be32}
-      \item \kfunc{cpu_to_le32}
-      \item \kfunc{be32_to_cpu}
-      \item \kfunc{le32_to_cpu}
-      \end{itemize}
     \item I/O memory access
     \item Memory barriers to provide ordering guarantees if needed
     \item DMA API to flush and invalidate caches if needed




More information about the training-materials-updates mailing list