[bootlin/training-materials updates] master: Use \kconfig and \kconfigval Elixir macros (099b9102)

Michael Opdenacker michael.opdenacker at bootlin.com
Wed May 27 11:36:40 CEST 2020

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


commit 099b9102bb33c48e4ba4259ff7f1adf35d8d7caa
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Wed May 27 11:36:40 2020 +0200

    Use \kconfig and \kconfigval Elixir macros
    - Allows to provide links to the definition of kernel parameters
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


 common/common.sty                                  |  1 +
 .../boot-time-build-kernel-and-start-system.tex    | 38 +++++++++++-----------
 .../boot-time-filesystem-optimizations.tex         |  2 +-
 labs/boot-time-kernel/boot-time-kernel.tex         | 12 +++----
 labs/buildroot-basic/buildroot-basic.tex           |  2 +-
 .../buildroot-new-packages.tex                     |  2 +-
 labs/buildroot-rootfs/buildroot-rootfs.tex         |  6 ++--
 .../kernel-compiling-and-nfs-booting.tex           | 16 ++++-----
 labs/kernel-debugging/kernel-debugging.tex         |  8 ++---
 .../kernel-i2c-input-interface.tex                 |  6 ++--
 .../sysdev-flash-filesystems.tex                   |  2 +-
 labs/sysdev-real-time/sysdev-real-time.tex         | 14 ++++----
 labs/sysdev-thirdparty/sysdev-thirdparty.tex       |  4 +--
 .../boot-time-application.tex                      |  6 ++--
 .../boot-time-bootloader/boot-time-bootloader.tex  |  4 +--
 .../boot-time-filesystems.tex                      |  8 ++---
 .../boot-time-init-scripts.tex                     |  2 +-
 .../boot-time-init-scripts3.tex                    |  2 +-
 slides/boot-time-kernel/boot-time-kernel.tex       | 20 ++++++------
 slides/boot-time-measuring/boot-time-measuring.tex |  2 +-
 slides/initramfs/initramfs.tex                     |  4 +--
 .../kernel-driver-development-debugging.tex        | 14 ++++----
 .../kernel-driver-development-io-memory.tex        |  2 +-
 .../kernel-driver-development-memory.tex           |  4 +--
 slides/kernel-frameworks2/kernel-frameworks2.tex   |  2 +-
 slides/kernel-input/kernel-input.tex               |  2 +-
 .../sysdev-flash-filesystems.tex                   |  4 +--
 slides/sysdev-realtime/sysdev-realtime.tex         | 16 ++++-----
 .../sysdev-root-filesystem-principles.tex          |  6 ++--
 29 files changed, 106 insertions(+), 105 deletions(-)

diff --git a/common/common.sty b/common/common.sty
index c32452a3..87db68e1 100644
--- a/common/common.sty
+++ b/common/common.sty
@@ -15,6 +15,7 @@
 \newcommand\kreldir[2]{\href{https://elixir.bootlin.com/linux/latest/source/#1/#2}{\code{#2/}}} % For relative directory paths
 \newcommand\kerneldochtmlsection[3]{\href{https://www.kernel.org/doc/html/latest/#1/index.html\##2}{\code{#1} (section {\em #3})}}
diff --git a/labs/boot-time-build-kernel-and-start-system/boot-time-build-kernel-and-start-system.tex b/labs/boot-time-build-kernel-and-start-system/boot-time-build-kernel-and-start-system.tex
index 9b28dd4f..89258a73 100644
--- a/labs/boot-time-build-kernel-and-start-system/boot-time-build-kernel-and-start-system.tex
+++ b/labs/boot-time-build-kernel-and-start-system/boot-time-build-kernel-and-start-system.tex
@@ -105,33 +105,33 @@ when you search.
 To enable support for the framebuffer and the PWM backlight:
-\item \code{CONFIG_PWM_TIEHRPWM=y}
-\item \code{CONFIG_FB_SIMPLE=y}
-\item \code{CONFIG_BACKLIGHT_PWM=y}
-\item \code{CONFIG_DRM=y}
-\item \code{CONFIG_DRM_TILCDC=y}
-\item \code{CONFIG_DRM_TI_TFP410=y}
+\item \kconfigval{CONFIG_PWM_TIEHRPWM}{y}
+\item \kconfigval{CONFIG_FB_SIMPLE}{y}
+\item \kconfigval{CONFIG_BACKLIGHT_PWM}{y}
+\item \kconfigval{CONFIG_DRM}{y}
+\item \kconfigval{CONFIG_DRM_TILCDC}{y}
+\item \kconfigval{CONFIG_DRM_TI_TFP410}{y}
 For USB support:
-\item \code{CONFIG_USB=y} 
-\item \code{CONFIG_USB_MUSB_HDRC=y}
-\item \code{CONFIG_USB_MUSB_DSPS=y}
-\item \code{CONFIG_MUSB_PIO_ONLY=y}
-\item \code{CONFIG_USB_GADGET=y}
-\item \code{CONFIG_NOP_USB_XCEIV=y}
-\item \code{CONFIG_AM335X_PHY_USB=y}
-\item \code{CONFIG_USB_GPIO_VBUS=y}
+\item \kconfigval{CONFIG_USB}{y}
+\item \kconfigval{CONFIG_USB_MUSB_HDRC}{y}
+\item \kconfigval{CONFIG_USB_MUSB_DSPS}{y}
+\item \kconfigval{CONFIG_MUSB_PIO_ONLY}{y}
+\item \kconfigval{CONFIG_USB_GADGET}{y}
+\item \kconfigval{CONFIG_NOP_USB_XCEIV}{y}
+\item \kconfigval{CONFIG_AM335X_PHY_USB}{y}
+\item \kconfigval{CONFIG_USB_GPIO_VBUS}{y}
+\item \kconfigval{CONFIG_USB_GADGET_VBUS_DRAW}{500}
+\item \kconfigval{CONFIG_USB_CONFIGFS_F_UVC}{y}
 For the webcam
-\item \code{CONFIG_MEDIA_SUPPORT=y} 
-\item \code{CONFIG_USB_VIDEO_CLASS=y}
+\item \kconfigval{CONFIG_MEDIA_SUPPORT}{y} 
+\item \kconfigval{CONFIG_MEDIA_USB_SUPPORT}{y}
+\item \kconfigval{CONFIG_USB_VIDEO_CLASS}{y}
 For your convenience, of if you screw up your settings in a later lab,
diff --git a/labs/boot-time-filesystem-optimizations/boot-time-filesystem-optimizations.tex b/labs/boot-time-filesystem-optimizations/boot-time-filesystem-optimizations.tex
index 0922bc5c..7af12f2d 100644
--- a/labs/boot-time-filesystem-optimizations/boot-time-filesystem-optimizations.tex
+++ b/labs/boot-time-filesystem-optimizations/boot-time-filesystem-optimizations.tex
@@ -106,7 +106,7 @@ configuration interface:
      \item Fill \code{Initramfs source file(s)} with
 \code{../../rootfs/rootfs} (or the correct path to the directory
 containing your root filesystem)
-     \item Make sure you set \code{CONFIG_INITRAMFS_COMPRESSION_NONE=y}
+     \item Make sure you set \kconfigval{CONFIG_INITRAMFS_COMPRESSION_NONE}{y}
 	   to avoid wasting space compressing the initramfs twice.
   \item Disable \code{Enable the block layer}
diff --git a/labs/boot-time-kernel/boot-time-kernel.tex b/labs/boot-time-kernel/boot-time-kernel.tex
index a2eedcf8..ca578534 100644
--- a/labs/boot-time-kernel/boot-time-kernel.tex
+++ b/labs/boot-time-kernel/boot-time-kernel.tex
@@ -7,9 +7,9 @@ We are going to use the kernel \code{initcall_debug} functionality.
 Our default kernel already has the configuration settings that we need:
-\item \code{CONFIG_PRINTK_TIME=y}, to add a timestamp to each kernel
+\item \kconfigval{CONFIG_PRINTK_TIME}{y}, to add a timestamp to each kernel
-\item \code{CONFIG_LOG_BUF_SHIFT=16}, to have a big enough kernel ring buffer.
+\item \kconfigval{CONFIG_LOG_BUF_SHIFT}{16}, to have a big enough kernel ring buffer.
 That's not sufficient. We also need the output of the \code{dmesg}
@@ -108,7 +108,7 @@ Do this {\bf very progressively}. If you go too fast, you'll end up with a
 kernel that doesn't boot any more, but you won't be able to tell which
 parameter should have been kept.
-Also, don't disable \code{CONFIG_PRINTK} too early
+Also, don't disable \kconfig{CONFIG_PRINTK} too early
 as you would lose all the kernel messages in the console.
 Also, for the moment, don't touch the options related to size and
@@ -116,13 +116,13 @@ compression, including compiling the kernel with {\em Thumb2}, as the
 impact of each option could depend on the size of the kernel.
 Make sure you go through all the possibilities covered in the slides, in
-particular to enable \code{CONFIG_EMBEDDED} to allow to unselect further
+particular to enable \kconfig{CONFIG_EMBEDDED} to allow to unselect further
 features that should be present on a general purpose
 system\footnote{Here we have a very specific system and we don't have
 to support programs that could be added in the future and could need
 more kernel features}.
-At the end, you can disable \code{CONFIG_PRINTK}, and observe your
+At the end, you can disable \kconfig{CONFIG_PRINTK}, and observe your
 total savings in terms of kernel size and boot time.
 Last but not least, try to find other ways of reducing the kernel size.
@@ -147,7 +147,7 @@ First, measure and write down your kernel size and the total boot time:
-Now, compile your kernel with \code{CONFIG_ARM_THUMB}. Before you do
+Now, compile your kernel with \kconfig{CONFIG_ARM_THUMB}. Before you do
 this, you could make a backup copy of your kernel source directory with
 \code{cp -al}, as a full rebuild of the kernel will be needed, and we
 may want to roll back later. Fortunately, thanks to our feature
diff --git a/labs/buildroot-basic/buildroot-basic.tex b/labs/buildroot-basic/buildroot-basic.tex
index 3421a8ce..53f1d46a 100644
--- a/labs/buildroot-basic/buildroot-basic.tex
+++ b/labs/buildroot-basic/buildroot-basic.tex
@@ -167,7 +167,7 @@ Now, let's do the configuration:
     OMAP2, OMAP3, OMAP4, etc. So the appropriate {\em defconfig} is
     named \code{omap2plus_defconfig}. You can open up this file in the
     Linux kernel Git repository viewer, and see it contains the line
-    \code{CONFIG_SOC_AM33XX=y}, which is a good indication that it has
+    \kconfigval{CONFIG_SOC_AM33XX}{y}, which is a good indication that it has
     the support for the processor used in the BeagleBone Black. Now
     that we have identified the {\em defconfig} name, enter
     \code{omap2plus} in the \code{Defconfig name} option.
diff --git a/labs/buildroot-new-packages/buildroot-new-packages.tex b/labs/buildroot-new-packages/buildroot-new-packages.tex
index 3a096faf..b5e50408 100644
--- a/labs/buildroot-new-packages/buildroot-new-packages.tex
+++ b/labs/buildroot-new-packages/buildroot-new-packages.tex
@@ -163,7 +163,7 @@ Buildroot, and before it is built. Rebuild once again the
 However, this patch relies on the Linux kernel {\em joystick
   interface}, that we need to enable. Go to the Linux kernel
 configuration using \code{make linux-menuconfig}, and enable
-\code{CONFIG_INPUT_JOYDEV}. Exit, and make sure to save your kernel
+\kconfig{CONFIG_INPUT_JOYDEV}. Exit, and make sure to save your kernel
 configuration safely using \code{make linux-update-defconfig}. Restart
 the overall build by running \code{make}.
diff --git a/labs/buildroot-rootfs/buildroot-rootfs.tex b/labs/buildroot-rootfs/buildroot-rootfs.tex
index 9d605b20..5747cff1 100644
--- a/labs/buildroot-rootfs/buildroot-rootfs.tex
+++ b/labs/buildroot-rootfs/buildroot-rootfs.tex
@@ -251,12 +251,12 @@ This will:
 Once in the kernel \code{menuconfig}, search for the option
-\code{CONFIG_JOYSTICK_WIICHUCK} by using the search engine tool
+\kconfig{CONFIG_JOYSTICK_WIICHUCK} by using the search engine tool
 accessible by typing \code{/}. Make sure to enable the {\em Nintendo
   Wiimote Extension connector on i2c bus} option using a \code{*} so
 that the driver is part of the kernel image itself (enabling with
 \code{M} would lead the driver to be compiled as a module). Also, make
-sure the \code{CONFIG_INPUT_EVDEV} option is enabled with \code{*} (by
+sure the \kconfig{CONFIG_INPUT_EVDEV} option is enabled with \code{*} (by
 default it is enabled as a module).
 You can now exit the kernel \code{menuconfig}, and restart the build
@@ -294,7 +294,7 @@ Then you can actually save your kernel configuration to a custom file:
   configuration file in
   \code{board/felabs/beagleboneblack/linux.config}. It will be a {\em
     minimal} configuration file (i.e a {\em defconfig}). In this file,
-  verify that the option \code{CONFIG_JOYSTICK_WIICHUCK} is properly
+  verify that the option \kconfig{CONFIG_JOYSTICK_WIICHUCK} is properly
   set to \code{y}.
diff --git a/labs/kernel-compiling-and-nfs-booting/kernel-compiling-and-nfs-booting.tex b/labs/kernel-compiling-and-nfs-booting/kernel-compiling-and-nfs-booting.tex
index 844c3591..3a3e7981 100644
--- a/labs/kernel-compiling-and-nfs-booting/kernel-compiling-and-nfs-booting.tex
+++ b/labs/kernel-compiling-and-nfs-booting/kernel-compiling-and-nfs-booting.tex
@@ -71,20 +71,20 @@ use your cross-compiler.
 Add the below options to support networking over USB device:
-  \item \code{CONFIG_USB_GADGET=y}
-  \item \code{CONFIG_USB_MUSB_HDRC=y} {\em Driver for the USB OTG
+  \item \kconfigval{CONFIG_USB_GADGET}{y}
+  \item \kconfigval{CONFIG_USB_MUSB_HDRC}{y} {\em Driver for the USB OTG
-  \item \code{CONFIG_USB_MUSB_GADGET=y} {\em Use the USB OTG controller
+  \item \kconfigval{CONFIG_USB_MUSB_GADGET}{y} {\em Use the USB OTG controller
 	in device (gadget) mode}
-  \item \code{CONFIG_USB_MUSB_DSPS}=y
-  \item Check the dependencies of \code{CONFIG_AM335X_PHY_USB}
-        and find the way to set \code{CONFIG_AM335X_PHY_USB=y}
+  \item \kconfigval{CONFIG_USB_MUSB_DSPS}{y}
+  \item Check the dependencies of \kconfig{CONFIG_AM335X_PHY_USB}
+        and find the way to set \kconfigval{CONFIG_AM335X_PHY_USB}{y}
   \item Find the "USB Gadget precomposed configurations" menu
         and set it to {\em static} instead of {\em module}
-	so that \code{CONFIG_USB_ETH=y}
+	so that \kconfigval{CONFIG_USB_ETH}{y}
-Make sure that this configuration has \code{CONFIG_ROOT_NFS=y} (support
+Make sure that this configuration has \code{CONFIG_ROOT_NFS}{y} (support
 booting on an NFS exported root directory).
 \section{Kernel compiling}
diff --git a/labs/kernel-debugging/kernel-debugging.tex b/labs/kernel-debugging/kernel-debugging.tex
index 222a4ef8..cf6e3217 100644
--- a/labs/kernel-debugging/kernel-debugging.tex
+++ b/labs/kernel-debugging/kernel-debugging.tex
@@ -13,15 +13,15 @@ each character being received.
 Check what happens with your module. Do you see the debugging messages
 that you added? Your kernel probably does not have
-\code{CONFIG_DYNAMIC_DEBUG} set and your driver is not compiled with
+\kconfig{CONFIG_DYNAMIC_DEBUG} set and your driver is not compiled with
 \code{DEBUG} defined., so you shouldn't see any message.
 Now, recompile your kernel with the following options:
-\item \code{CONFIG_DYNAMIC_DEBUG}: this will allow you to see
+\item \kconfig{CONFIG_DYNAMIC_DEBUG}: this will allow you to see
   debugging messages.
-\item \code{CONFIG_DEBUG_INFO}: this option will make it
+\item \kconfig{CONFIG_DEBUG_INFO}: this option will make it
   possible to see source code in disassembled kernel code.
   We will need it in a later part of this lab, but enabling
   it now will allow to avoid recompiling the whole kernel again.
@@ -102,7 +102,7 @@ If you look again, the report tells you at what offset in the function
 this happens. Let's disassemble the code for this function to
 understand exactly where the issue happened.
-That's where we need a kernel compiled with \code{CONFIG_DEBUG_INFO}
+That's where we need a kernel compiled with \kconfig{CONFIG_DEBUG_INFO}
 as we did at the beginning of this lab. This way, the kernel is
 compiled with \code{$(CROSSCOMPILE)gcc -g}, which keeps the source
 code inside the binaries.
diff --git a/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex b/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
index 95591f0e..ba9ddf5e 100644
--- a/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
+++ b/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
@@ -21,8 +21,8 @@ and detect changes is to regularly poll its registers, using the input
 polling API described in the lectures.
 Rebuild your kernel with static support for polled input device
-(\code{CONFIG_INPUT_POLLDEV=y}) and for event interface
-(\code{CONFIG_INPUT_EVDEV}) support. With the default configuration,
+(\kconfigval{CONFIG_INPUT_POLLDEV}{y}) and for event interface
+(\kconfig{CONFIG_INPUT_EVDEV}) support. With the default configuration,
 these features are available as modules, which is less convenient.
 Update and reboot your kernel.
@@ -251,7 +251,7 @@ when running \code{nInvaders}, issue first the
 \subsubsection{Recompile your kernel}
 Recompile your kernel with support for the joystick interface
 Reboot to the new kernel.
diff --git a/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex b/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
index 2c84eb30..56343b37 100644
--- a/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
+++ b/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
@@ -41,7 +41,7 @@ Which gives the following layout:
 First, make sure your kernel has support for UBI and UBIFS, and also
 the option allowing us to pass the partition table through the command
 Recompile your kernel if needed. We will update your kernel image on flash
 in the next section.
diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index a8eeee2b..4f80c64e 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -109,10 +109,10 @@ PREEMPT\_RT patches yet.
 Configure your kernel for your Xplained board, and then make sure
 that the below settings are disabled:
-Also, for the moment, disable the \code{CONFIG_HIGH_RES_TIMERS}
+Also, for the moment, disable the \kconfig{CONFIG_HIGH_RES_TIMERS}
 option which impact we want to measure.
 Boot the Xplained board by mounting the root filesystem that you
@@ -150,14 +150,14 @@ arm-none-linux-gnueabi-gcc -o rttest rttest.c -lrt
 Execute the program on the board. Is the clock resolution good or bad?
 Compare it to the timer tick of your system, as defined by
 Copy the results in a file, in order to be able to compare them
 with further results.
 Obviously, this resolution will not provide accurate sleep times, and
 this is because our kernel doesn't use high-resolution timers. So
-let's add back the \code{CONFIG_HIGH_RES_TIMERS} option in the kernel
+let's add back the \kconfig{CONFIG_HIGH_RES_TIMERS} option in the kernel
 Recompile your kernel, boot your Xplained with the new version, and
@@ -182,7 +182,7 @@ Now, do the following tests:
 \section{Testing the preemptible kernel}
-Recompile your kernel with \code{CONFIG_PREEMPT} enabled, which
+Recompile your kernel with \kconfig{CONFIG_PREEMPT} enabled, which
 enables kernel preemption (except for critical sections protected by
@@ -194,7 +194,7 @@ the results.
 Download the latest \code{PREEMPT_RT} kernel patch and apply it to
 your kernel sources.
-Configure your kernel with \code{CONFIG_PREEMPT_RT} and boot it.
+Configure your kernel with \kconfig{CONFIG_PREEMPT_RT} and boot it.
 Repeat the tests and compare the results again. You should see a massive
 improvement in the maximum latency.
diff --git a/labs/sysdev-thirdparty/sysdev-thirdparty.tex b/labs/sysdev-thirdparty/sysdev-thirdparty.tex
index f95e7820..3a30fd11 100644
--- a/labs/sysdev-thirdparty/sysdev-thirdparty.tex
+++ b/labs/sysdev-thirdparty/sysdev-thirdparty.tex
@@ -16,8 +16,8 @@ automated tools.
 \section{Audio support in the Kernel}
 Recompile your kernel with audio support. The options we want are:
-\code{CONFIG_SOUND}, \code{CONFIG_SND}, \code{CONFIG_SND_USB} and
+\kconfig{CONFIG_SOUND}, \kconfig{CONFIG_SND}, \kconfig{CONFIG_SND_USB} and
 At this stage, the easiest solution to update your kernel is probably
 to get back to copying it to RAM from \code{tftp}. Anyway, we will have
diff --git a/slides/boot-time-application/boot-time-application.tex b/slides/boot-time-application/boot-time-application.tex
index fcfa6086..b390712c 100644
--- a/slides/boot-time-application/boot-time-application.tex
+++ b/slides/boot-time-application/boot-time-application.tex
@@ -34,13 +34,13 @@ A system-wide profiler
 	\item {\em legacy} mode:
 		\item Low accuracy, use a kernel driver to profile
-		\item \code{CONFIG_OPROFILE}
+		\item \kconfig{CONFIG_OPROFILE}
 		\item User space tools: \code{opcontrol} and \code{oprofiled}
 	\item {\em perf\_events} mode:
 		\item Uses hardware performance counters
+		\item \kconfig{CONFIG_PERF_EVENTS} and \kconfig{CONFIG_HW_PERF_EVENTS}
 		\item User space tools: \code{operf}
@@ -113,7 +113,7 @@ Profiling through timer interrupt
 	\item Uses hardware performance counters
+	\item \kconfig{CONFIG_PERF_EVENTS} and \kconfig{CONFIG_HW_PERF_EVENTS}
 	\item User space tool: \code{perf}. It is part of the kernel
 		sources so it is always in sync with your kernel.
 	\item Usage:
diff --git a/slides/boot-time-bootloader/boot-time-bootloader.tex b/slides/boot-time-bootloader/boot-time-bootloader.tex
index af74808f..bec0194c 100644
--- a/slides/boot-time-bootloader/boot-time-bootloader.tex
+++ b/slides/boot-time-bootloader/boot-time-bootloader.tex
@@ -33,7 +33,7 @@ Recompile U-Boot to remove features not needed in production
       \code{setenv bootdelay 0}
 \item This usually saves several seconds!
 \item Before you do that, recompile U-Boot with
-      \code{CONFIG_ZERO_BOOTDELAY_CHECK}, documented in
+      \kconfig{CONFIG_ZERO_BOOTDELAY_CHECK}, documented in
       \code{doc/README.autoboot}. It allows to stop the autoboot
       process by hitting a key even if the boot delay is set to
@@ -151,7 +151,7 @@ Measured between \code{Booting kernel} and \code{Starting kernel ...}
 \frametitle{Further U-Boot optimizations}
 \item Silence U-Boot console output. You will need to compile
-      U-Boot with \code{CONFIG_SILENT_CONSOLE} and
+      U-Boot with \kconfig{CONFIG_SILENT_CONSOLE} and
       \code{setenv silent yes}.\\
       See \code{doc/README.silent} for details.
diff --git a/slides/boot-time-filesystems/boot-time-filesystems.tex b/slides/boot-time-filesystems/boot-time-filesystems.tex
index b8d96707..6de610dd 100644
--- a/slides/boot-time-filesystems/boot-time-filesystems.tex
+++ b/slides/boot-time-filesystems/boot-time-filesystems.tex
@@ -68,7 +68,7 @@ For raw flash storage
 \item Mount time depending on filesystem size: the kernel has to
       scan the whole filesystem at mount time, to read which block
       belongs to each file.
-\item Need to use the \code{CONFIG_JFFS2_SUMMARY} kernel option
+\item Need to use the \kconfig{CONFIG_JFFS2_SUMMARY} kernel option
       to store such information in flash. This dramatically reduces
       mount time.
 \item Benchmark on ARM:\\
@@ -133,7 +133,7 @@ For raw flash storage
 \frametitle{Using UBI Fastmap}
-\item Compile your kernel with \code{CONFIG_UBI_FASTMAP}
+\item Compile your kernel with \kconfig{CONFIG_UBI_FASTMAP}
 \item Boot your system at least once with the
       \code{ubi.fm_autoconvert=1} kernel parameter.
 \item Reboot your system in a clean way
@@ -170,7 +170,7 @@ attach process.
 For raw flash storage
 \item {\em ubiblock}: read-only block device on top of UBI
-      (\code{CONFIG_MTD_UBI_BLOCK}). Available in Linux 3.15
+      (\kconfig{CONFIG_MTD_UBI_BLOCK}). Available in Linux 3.15
       (developed on his spare time by Ezequiel Garcia,
       a Bootlin contractor).
 \item Allows to put SquashFS on a UBI volume.
@@ -183,7 +183,7 @@ For raw flash storage
 \frametitle{Finding the best filesystem}
-\item Raw flash storage: UBIFS with \code{CONFIG_UBI_FASTMAP} is
+\item Raw flash storage: UBIFS with \kconfig{CONFIG_UBI_FASTMAP} is
       probably the best solution.
 \item Block storage: SquashFS best solution for root filesystems
       which can be read-only. Btrfs and f2fs probably the best solutions
diff --git a/slides/boot-time-init-scripts/boot-time-init-scripts.tex b/slides/boot-time-init-scripts/boot-time-init-scripts.tex
index cd4a1286..51a9cb1e 100644
--- a/slides/boot-time-init-scripts/boot-time-init-scripts.tex
+++ b/slides/boot-time-init-scripts/boot-time-init-scripts.tex
@@ -25,7 +25,7 @@ than with \code{grabserial}, you can use \code{bootchart}.
 \frametitle{Measuring - bootchart}
 	\item You can use \code{bootchartd} from \code{busybox}
-	      (\code{CONFIG_BOOTCHARTD=y})
+	      (\kconfig{CONFIG_BOOTCHARTD=y})
 	\item Boot your board passing \code{init=/sbin/bootchartd} on your
 	      kernel command line
 	\item Copy \code{/var/log/bootlog.tgz} from your target to your host
diff --git a/slides/boot-time-init-scripts3/boot-time-init-scripts3.tex b/slides/boot-time-init-scripts3/boot-time-init-scripts3.tex
index f5b25722..73ea047b 100644
--- a/slides/boot-time-init-scripts3/boot-time-init-scripts3.tex
+++ b/slides/boot-time-init-scripts3/boot-time-init-scripts3.tex
@@ -47,7 +47,7 @@ application and then switch to the final root filesystem with
 \item If you ship your initramfs inside a compressed kernel image, don't compress
       it \\
+      (enable \kconfig{CONFIG_INITRAMFS_COMPRESSION_NONE}).
 \item Otherwise, by default, your initramfs data will be compressed twice, and
       the kernel will be bigger and will take a little more time to load
       and uncompress.
diff --git a/slides/boot-time-kernel/boot-time-kernel.tex b/slides/boot-time-kernel/boot-time-kernel.tex
index a156c70e..9981e46c 100644
--- a/slides/boot-time-kernel/boot-time-kernel.tex
+++ b/slides/boot-time-kernel/boot-time-kernel.tex
@@ -21,8 +21,8 @@ Here's what you get on the kernel log:
 You might need to increase the log buffer size with
-\code{CONFIG_LOG_BUF_SHIFT} in your kernel configuration. You will
-also need \code{CONFIG_PRINTK_TIME} and \code{CONFIG_KALLSYMS}.
+\kconfig{CONFIG_LOG_BUF_SHIFT} in your kernel configuration. You will
+also need \kconfig{CONFIG_PRINTK_TIME} and \kconfig{CONFIG_KALLSYMS}.
@@ -93,10 +93,10 @@ First, we focus on reducing the size without removing features
 	\item Two benefits: the kernel will be smaller and load faster, and
 		less initialization code will get executed
 	\item Remove features that are not used by userland:
-		\code{CONFIG_BUG}
+		\kconfig{CONFIG_KALLSYMS}, \kconfig{CONFIG_DEBUG_FS},
+		\kconfig{CONFIG_BUG}
 	\item Use features designed for embedded systems:
+		\kconfig{CONFIG_SLOB}, \kconfig{CONFIG_EMBEDDED}
@@ -150,7 +150,7 @@ depend on storage and CPU performance.
 \frametitle{Optimize kernel for size (1)}
-\item \code{CONFIG_CC_OPTIMIZE_FOR_SIZE}: possibility to compile the kernel
+\item \kconfig{CONFIG_CC_OPTIMIZE_FOR_SIZE}: possibility to compile the kernel
       with \code{gcc -Os} instead of \code{gcc -O2}.
 \item Such optimizations give priority to code size at
       the expense of code speed.
@@ -274,12 +274,12 @@ Calibrating delay loop (skipped) preset value.. 996.14 BogoMIPS (lpj=4980736)
 To shave off the last milliseconds, you will probably want to remove
 unnecessary features:
-        \item \code{CONFIG_PRINTK=n} will have the same effect as the
+        \item \kconfigval{CONFIG_PRINTK}{n} will have the same effect as the
               \code{quiet} command line argument but you won't have
 	      any access to kernel messages. You will have a
               significantly smaller kernel though.
 	\item Compile your kernel in {\em Thumb2} mode:
-	      \code{CONFIG_THUMB2_KERNEL} (any ARM toolchain can do
+	      \kconfig{CONFIG_THUMB2_KERNEL} (any ARM toolchain can do
@@ -293,9 +293,9 @@ More features you could remove:
         \item Network stack
         \item USB stack
         \item Power management features
-        \item \code{CONFIG_SYSFS_DEPRECATED}
+        \item \kconfig{CONFIG_SYSFS_DEPRECATED}
         \item Input: keyboards / mice / touchscreens
-        \item Reduce the \code{CONFIG_LEGACY_PTY_COUNT} value or set the
+        \item Reduce the \kconfig{CONFIG_LEGACY_PTY_COUNT} value or set the
               \code{pty.legacy_count} kernel parameter
diff --git a/slides/boot-time-measuring/boot-time-measuring.tex b/slides/boot-time-measuring/boot-time-measuring.tex
index 0630b6dc..8e0866f6 100644
--- a/slides/boot-time-measuring/boot-time-measuring.tex
+++ b/slides/boot-time-measuring/boot-time-measuring.tex
@@ -133,7 +133,7 @@ Later, we will see specific resources for measuring time
   \item \code{time} for measuring application time
   \item \code{strace} for application tracing
   \item \code{bootchartd} for tracing the execution of system services
-  \item \code{CONFIG_PRINTK_TIME} and \code{initcall_debug} for
+  \item \kconfig{CONFIG_PRINTK_TIME} and \code{initcall_debug} for
         tracing kernel code and functions.
diff --git a/slides/initramfs/initramfs.tex b/slides/initramfs/initramfs.tex
index 85e7f0f5..65cb0f1b 100644
--- a/slides/initramfs/initramfs.tex
+++ b/slides/initramfs/initramfs.tex
@@ -37,7 +37,7 @@
   \frametitle{rootfs in memory: initramfs (3)}
   \item The contents of an initramfs are defined at the kernel
-    configuration level, with the \code{CONFIG_INITRAMFS_SOURCE}
+    configuration level, with the \kconfig{CONFIG_INITRAMFS_SOURCE}
     \item Can be the path to a directory containing the root
@@ -47,7 +47,7 @@
       (see documentation for details)
   \item The kernel build process will automatically take the contents
-    of the \code{CONFIG_INITRAMFS_SOURCE} option and integrate the
+    of the \kconfig{CONFIG_INITRAMFS_SOURCE} option and integrate the
     root filesystem into the kernel image
   \item Details (in kernel sources): \\
diff --git a/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex b/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
index ff91d0f6..5d621192 100644
--- a/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
+++ b/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
@@ -59,7 +59,7 @@ dev_info(&pdev->dev, "in probe\n");
     \code{DEBUG} can be defined by \codewithhash{\#define DEBUG} at the
     beginning of the driver, or using
     \code{ccflags-$(CONFIG_DRIVER) += -DDEBUG} in the \code{Makefile}
-  \item When the kernel is compiled with \code{CONFIG_DYNAMIC_DEBUG},
+  \item When the kernel is compiled with \kconfig{CONFIG_DYNAMIC_DEBUG},
     then these messages can dynamically be enabled on a per-file,
     per-module or per-message basis
@@ -67,7 +67,7 @@ dev_info(&pdev->dev, "in probe\n");
     \item Very powerful feature to only get the debug messages you're
       interested in.
-  \item When neither \code{DEBUG} nor \code{CONFIG_DYNAMIC_DEBUG} are
+  \item When neither \code{DEBUG} nor \kconfig{CONFIG_DYNAMIC_DEBUG} are
     used, these messages are not compiled in.
@@ -102,7 +102,7 @@ dev_info(&pdev->dev, "in probe\n");
   A virtual filesystem to export debugging information to user space.
-  \item Kernel configuration: \code{CONFIG_DEBUG_FS}
+  \item Kernel configuration: \kconfig{CONFIG_DEBUG_FS}
     \item \code{Kernel hacking -> Debug Filesystem}
@@ -207,11 +207,11 @@ dev_info(&pdev->dev, "in probe\n");
   \item Details available in the kernel documentation:
-  \item Recommended to turn on \code{CONFIG_FRAME_POINTER} to aid in
+  \item Recommended to turn on \kconfig{CONFIG_FRAME_POINTER} to aid in
     producing more reliable stack backtraces in \code{gdb}.
   \item You must include a kgdb I/O driver. One of them is \code{kgdb} over
     serial console (\code{kgdboc}: \code{kgdb} over console, enabled by
   \item Configure \code{kgdboc} at boot time by passing to the kernel:
     \item \code{kgdboc=<tty-device>,<bauds>}.
@@ -266,14 +266,14 @@ dev_info(&pdev->dev, "in probe\n");
   \frametitle{More kernel debugging tips}
-  \item Make sure \code{CONFIG_KALLSYMS_ALL} is enabled
+  \item Make sure \kconfig{CONFIG_KALLSYMS_ALL} is enabled
     \item Is turned on by default
     \item To get oops messages with symbol names instead of raw addresses
   \item On ARM, if your kernel doesn't boot or hangs without any
     message, you can activate early debugging options
-    (\code{CONFIG_DEBUG_LL} and \code{CONFIG_EARLYPRINTK}), and add
+    (\kconfig{CONFIG_DEBUG_LL} and \kconfig{CONFIG_EARLYPRINTK}), and add
     \code{earlyprintk} to the kernel command line.
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 4141bebe..180cfb78 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
@@ -265,7 +265,7 @@ __raw_writel(1 << KS8695_IRQ_UART_TX,
     device memory.
   \item On \code{x86}, \code{arm}, \code{arm64},
     \code{powerpc}, \code{s390} and \code{unicore32}:
-    \code{CONFIG_STRICT_DEVMEM} option to restrict \code{/dev/mem}
+    \kconfig{CONFIG_STRICT_DEVMEM} option to restrict \code{/dev/mem}
     to non-RAM addresses, for security reasons (Linux 4.20 status).
diff --git a/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex b/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
index 26936956..32c888ac 100644
--- a/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
+++ b/slides/kernel-driver-development-memory/kernel-driver-development-memory.tex
@@ -52,7 +52,7 @@
   \item To allow the kernel to access more physical memory:
     \item Change the 3GB/1GB memory split to 2GB/2GB or 1GB/3GB
-      (\code{CONFIG_VMSPLIT_2G} or \code{CONFIG_VMSPLIT_1G)}
+      (\kconfig{CONFIG_VMSPLIT_2G} or \kconfig{CONFIG_VMSPLIT_1G)}
       $\Rightarrow$ reduce total user memory available for each process
     \item Change for a 64 bit architecture ;-) See
       \kerneldoctext{x86/x86_64/mm.txt} for an example.
@@ -224,7 +224,7 @@
         Linux 4.20 on ARM: used in 48 \code{defconfig} files
   \item SLOB: much simpler. More space efficient but doesn't scale
         well. Can save space in small systems (depends on
-        \code{CONFIG_EXPERT}). \\
+        \kconfig{CONFIG_EXPERT}). \\
         Linux 4.20 on ARM: used in 7 \code{defconfig} files \\
         Results on BeagleBone Black: -5 KB compressed kernel size, +1.43 s boot time!
   \item SLUB: more recent and simpler than
diff --git a/slides/kernel-frameworks2/kernel-frameworks2.tex b/slides/kernel-frameworks2/kernel-frameworks2.tex
index 37d040ae..d3bb567f 100644
--- a/slides/kernel-frameworks2/kernel-frameworks2.tex
+++ b/slides/kernel-frameworks2/kernel-frameworks2.tex
@@ -291,7 +291,7 @@ int main(void)
   \frametitle{Example: Framebuffer Framework}
-  \item Kernel option \code{CONFIG_FB}
+  \item Kernel option \kconfig{CONFIG_FB}
     \item \code{menuconfig FB}
diff --git a/slides/kernel-input/kernel-input.tex b/slides/kernel-input/kernel-input.tex
index 78c2f52a..ca857c0d 100644
--- a/slides/kernel-input/kernel-input.tex
+++ b/slides/kernel-input/kernel-input.tex
@@ -30,7 +30,7 @@
 \begin{frame}{Input subsystem overview}
-  \item Kernel option \code{CONFIG_INPUT}
+  \item Kernel option \kconfig{CONFIG_INPUT}
     \item \code{menuconfig INPUT}
diff --git a/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex b/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
index f25d7ca8..d8bd041d 100644
--- a/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
+++ b/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
@@ -292,7 +292,7 @@ setenv mtdparts mtdparts=omap2-nand.0:512k(XLoader)ro,1536k(UBoot)ro,512k(Env),4
   \item MTD devices are visible in \code{/proc/mtd}
   \item User space only sees MTD partitions, not the flash device
     under those partitions (unless the kernel is compiled with
   \item The {\bf mtdchar} driver creates a character device for each
     MTD device/partition of the system
@@ -776,7 +776,7 @@ ${bootargs_base} ${mtdparts}; bootz 0x81000000 - 0x82000000'}
   \frametitle{Linux: ubiblock}
-  \item \code{CONFIG_MTD_UBI_BLOCK}
+  \item \kconfig{CONFIG_MTD_UBI_BLOCK}
   \item Implemented by Ezequiel Garcia from Bootlin.
   \item Preferred over \code{mtdblock} if UBI is available (UBI accounts
     for data retention and wear leveling issues, while MTD does not)
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index c5624b9d..a4575704 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -314,7 +314,7 @@
   \frametitle{1st option: no forced preemption}
+  \kconfig{CONFIG_PREEMPT_NONE}\\
   Kernel code (interrupts, exceptions, system calls) never preempted.
   Default behavior in standard kernels.
@@ -332,7 +332,7 @@
   \frametitle{2nd option: voluntary kernel preemption}
   Kernel code can preempt itself
   \item Typically for desktop systems, for quicker application
@@ -346,7 +346,7 @@
   \frametitle{3rd option: preemptible kernel}
-  \code{CONFIG_PREEMPT}\\
+  \kconfig{CONFIG_PREEMPT}\\
   Most kernel code can be involuntarily preempted at any time.  When a
   process becomes runnable, no more need to wait for kernel code
   (typically a system call) to return before running the scheduler.
@@ -421,7 +421,7 @@
   \frametitle{New real-time preemption option (1)}
-  The PREEMPT\_RT patchset adds one new level of preemption, \code{CONFIG_PREEMPT_RT}:
+  The PREEMPT\_RT patchset adds one new level of preemption, \kconfig{CONFIG_PREEMPT_RT}:
@@ -455,7 +455,7 @@
   \frametitle{{\tt CONFIG\_PREEMPT\_RT} (2)}
-  \item With \code{CONFIG_PREEMPT_RT}, virtually all kernel code
+  \item With \kconfig{CONFIG_PREEMPT_RT}, virtually all kernel code
     becomes preemptible
     \item An interrupt can occur at any time, when returning from the
@@ -505,7 +505,7 @@
   \item In the kernel configuration, be sure to enable
-    \item \code{CONFIG_PREEMPT_RT}
+    \item \kconfig{CONFIG_PREEMPT_RT}
     \item High-resolution timers
   \item Compile your kernel, and boot
@@ -535,7 +535,7 @@
         introducing new issues for real-time (such as disabling preemption in
         BPF... see \url{https://lwn.net/Articles/802884/}).
   \item A major achievement though in Linux 5.3: the
-        \code{CONFIG_PREEMPT_RT} configuration option is now in mainline, though
+        \kconfig{CONFIG_PREEMPT_RT} configuration option is now in mainline, though
         it cannot be selected yet (missing dependencies). This
         simplifies further mainlining work.
   \item See the latest status presentations:
@@ -938,7 +938,7 @@ timer_delete(timer_t timerid)
   \frametitle{Scheduling latency tracer}
-  \code{CONFIG_SCHED_TRACER} ({\em Kernel Hacking} section)
+  \kconfig{CONFIG_SCHED_TRACER} ({\em Kernel Hacking} section)
   \item Maximum recorded time between waking up a top priority task
     and its scheduling on a CPU, expressed in us.
diff --git a/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex b/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
index 242746b8..1d682b5f 100644
--- a/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
+++ b/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
@@ -188,9 +188,9 @@ Kernel panic - not syncing: VFS: Unable to mount root fs on unknown block(0,0)
   \item On the target system
   \item The kernel must be compiled with
-    \item \code{CONFIG_NFS_FS=y} (NFS {\bf client} support)
-    \item \code{CONFIG_IP_PNP=y} (configure IP at boot time)
-    \item \code{CONFIG_ROOT_NFS=y} (support for NFS as rootfs)
+    \item \kconfigval{CONFIG_NFS_FS}{y} (NFS {\bf client} support)
+    \item \kconfigval{CONFIG_IP_PNP}{y} (configure IP at boot time)
+    \item \kconfigval{CONFIG_ROOT_NFS}{y} (support for NFS as rootfs)
   \item The kernel must be booted with the following parameters:

More information about the training-materials-updates mailing list