From a568554ee0352c555417250773adcc8a7bc6a4d1 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:08 -0400 Subject: [PATCH 01/21] doc: mkimage: Use standard style for synopsis The synopsis section is a bit messy. As an example, "uimage file name" is printed in italics, bold, and roman (depending on the line). This cleans things up and converts the synopsis section to use standard style. The .SY/.YS macros set up appropriate formatting for command synopsis sections (such as disabling hyphenation and setting a hanging indent). All parts of the synopsis now use the following style: - Bold for parts of the command which should be typed in by the user (such as the program name and flags) - Italic for parts which should be replaced (such as uimage-file-name) - Roman for parts which should not be typed at all (such as brackets) Multi-word variables now use hyphens to connect their words instead of spaces. This makes it clearer that all the words are part of the same variable. Additionally, "option ..." is used to denote where other options may be specified, as this appears to be standard style. In addition to the above style changes, this also makes some changes to content. The use of the term "legacy" has been removed, since this simply refers to any non-FIT image type. Additionally, wording like "uimage file name" has been replaced with "image-file-name" to better reflect that images may or may not be uImages. Lastly, the "auto" value for -f is documented in the synopsis. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 759dc2d12f..7e025d092c 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -3,17 +3,28 @@ .SH NAME mkimage \- Generate image for U-Boot .SH SYNOPSIS -.B mkimage -.RB [ \-T " \fItype\fP] " \-l " [\fIuimage file name\fP]" +.SY mkimage +.OP \-T type +.BI \-l\~ image-file-name +.YS -.B mkimage -.RB [\fIoptions\fP] " \-f [" "image tree source file" "]" " [" "uimage file name" "]" +.SY mkimage +.RI [ option\~ .\|.\|.\&] +.OP \-T type +.I image-file-name +.YS -.B mkimage -.RB [\fIoptions\fP] " \-F [" "uimage file name" "]" +.SY mkimage +.RI [ option\~ .\|.\|.\&] +.BI \-f\~ image-tree-source-file\c +.RB | auto +.I image-file-name +.YS -.B mkimage -.RB [\fIoptions\fP] " (legacy mode)" +.SY mkimage +.RI [ option\~ .\|.\|.\&] +.BI \-F\~ image-file-name +.YS .SH "DESCRIPTION" The From 7ec625f1802874fb0a3485c1e3b97e8e169dc35d Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:09 -0400 Subject: [PATCH 02/21] doc: mkimage: Use empty request instead of blank lines Blank lines do not have well-defined semantics in fill mode (the default). Instead, use empty requests (.) where vertical space is necessary for readability. There are a few places where we use a paragraph instead. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 108 +++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 7e025d092c..5cc2d2dc05 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -1,5 +1,5 @@ .TH MKIMAGE 1 "2022-02-07" - +. .SH NAME mkimage \- Generate image for U-Boot .SH SYNOPSIS @@ -7,35 +7,35 @@ mkimage \- Generate image for U-Boot .OP \-T type .BI \-l\~ image-file-name .YS - +. .SY mkimage .RI [ option\~ .\|.\|.\&] .OP \-T type .I image-file-name .YS - +. .SY mkimage .RI [ option\~ .\|.\|.\&] .BI \-f\~ image-tree-source-file\c .RB | auto .I image-file-name .YS - +. .SY mkimage .RI [ option\~ .\|.\|.\&] .BI \-F\~ image-file-name .YS - +. .SH "DESCRIPTION" The .B mkimage command is used to create images for use with the U-Boot boot loader. These images can contain the linux kernel, device tree blob, root file system image, firmware images etc., either separate or combined. - +.P .B mkimage supports two different formats: - +.P The old .I legacy image format concatenates the individual parts (for example, kernel image, @@ -43,69 +43,69 @@ device tree blob and ramdisk image) and adds a 64 bytes header containing information about target architecture, operating system, image type, compression method, entry points, time stamp, checksums, etc. - +.P The new .I FIT (Flattened Image Tree) format allows for more flexibility in handling images of various types and also enhances integrity protection of images with stronger checksums. It also supports verified boot. - +. .SH "OPTIONS" - +. .B List image information: - +. .TP .BI "\-l [" "uimage file name" "]" mkimage lists the information contained in the header of an existing U-Boot image. - +. .TP .BI "\-T [" "image type" "]" Parse image file as type. Pass \-h as the image to see the list of supported image type. Without this option image type is autodetected. - +. .TP .BI "\-q" Quiet. Don't print the image header on successful verification. - +. .P .B Create old legacy image: - +. .TP .BI "\-A [" "architecture" "]" Set architecture. Pass \-h as the architecture to see the list of supported architectures. - +. .TP .BI "\-O [" "os" "]" Set operating system. bootm command of u-boot changes boot method by os type. Pass \-h as the OS to see the list of supported OS. - +. .TP .BI "\-T [" "image type" "]" Set image type. Pass \-h as the image to see the list of supported image type. - +. .TP .BI "\-C [" "compression type" "]" Set compression type. Pass \-h as the compression to see the list of supported compression type. - +. .TP .BI "\-a [" "load address" "]" Set load address with a hex number. - +. .TP .BI "\-e [" "entry point" "]" Set entry point with a hex number. - +. .TP .BI "\-l" List the contents of an image. - +. .TP .BI "\-n [" "image name" "]" Set image name to 'image name'. - +. .TP .BI "\-R [" "secondary image name" "]" Some image types support a second image for additional data. For these types, @@ -134,42 +134,42 @@ when loading the image. At most 256 parameters may be specified in this manner. T} .TE - +. .TP .BI "\-d [" "image data file" "]" Use image data from 'image data file'. - +. .TP .BI "\-x" Set XIP (execute in place) flag. - +. .TP .BI "\-s" Don't copy in the image data. Depending on the image type, this may create just the header, everything but the image data, or nothing at all. - +. .TP .BI "\-v" Verbose. Print file names as they are added to the image. - +. .P .B Create FIT image: - +. .TP .BI "\-b [" "device tree file" "] Appends the device tree binary file (.dtb) to the FIT. - +. .TP .BI "\-c [" "comment" "]" Specifies a comment to be added when signing. This is typically a useful message which describes how the image was signed or some other useful information. - +. .TP .BI "\-D [" "dtc options" "]" Provide special options to the device tree compiler that is used to create the image. - +. .TP .BI "\-E After processing, move the image data outside the FIT and store a data offset @@ -178,44 +178,44 @@ FIT, with each one aligned to a 4-byte boundary. The existing 'data' property in each image will be replaced with 'data-offset' and 'data-size' properties. A 'data-offset' of 0 indicates that it starts in the first (4-byte aligned) byte after the FIT. - +. .TP .BI "\-B [" "alignment" "]" The alignment, in hexadecimal, that external data will be aligned to. This option only has an effect when \-E is specified. - +. .TP .BI "\-f [" "image tree source file" " | " "auto" "]" Image tree source file that describes the structure and contents of the FIT image. - +.IP This can be automatically generated for some simple cases. Use "-f auto" for this. In that case the arguments -d, -A, -O, -T, -C, -a and -e are used to specify the image to include in the FIT and its attributes. No .its file is required. - +. .TP .BI "\-F" Indicates that an existing FIT image should be modified. No dtc compilation is performed and the \-f flag should not be given. This can be used to sign images with additional keys after initial image creation. - +. .TP .BI "\-i [" "ramdisk_file" "]" Appends the ramdisk file to the FIT. - +. .TP .BI "\-k [" "key_directory" "]" Specifies the directory containing keys to use for signing. This directory should contain a private key file .key for use with signing and a certificate .crt (containing the public key) for use with verification. - +. .TP .BI "\-G [" "key_file" "]" Specifies the private key file to use when signing. This option may be used instead of \-k. - +. .TP .BI "\-K [" "key_destination" "]" Specifies a compiled device tree binary file (typically .dtb) to write @@ -223,53 +223,53 @@ public key information into. When a private key is used to sign an image, the corresponding public key is written into this file for for run-time verification. Typically the file here is the device tree binary used by CONFIG_OF_CONTROL in U-Boot. - +. .TP .BI "\-G [" "key_file" "]" Specifies the private key file to use when signing. This option may be used instead of \-k. - +. .TP .BI "\-g [" "key_name_hint" "]" Sets the key-name-hint property when used with \-f auto. This is the part of the key. The directory part is set by \-k. This option also indicates that the images included in the FIT should be signed. If this option is specified, \-o must be specified as well. - +. .TP .BI "\-o [" "signing algorithm" "]" Specifies the algorithm to be used for signing a FIT image. The default is taken from the signature node's 'algo' property. - +. .TP .BI "\-p [" "external position" "]" Place external data at a static external position. See \-E. Instead of writing a 'data-offset' property defining the offset from the end of the FIT, \-p will use 'data-position' as the absolute position from the base of the FIT. - +. .TP .BI "\-r" Specifies that keys used to sign the FIT are required. This means that they must be verified for the image to boot. Without this option, the verification will be optional (useful for testing but not for release). - +. .TP .BI "\-N [" "engine" "]" The openssl engine to use when signing and verifying the image. For a complete list of available engines, refer to .BR engine (1). - +. .TP .BI "\-t Update the timestamp in the FIT. - +.IP Normally the FIT timestamp is created the first time mkimage is run on a FIT, when converting the source .its to the binary .fit file. This corresponds to using the -f flag. But if the original input to mkimage is a binary file (already compiled) then the timestamp is assumed to have been set previously. - +. .SH EXAMPLES - +. List image information: .nf .B mkimage -l uImage @@ -295,7 +295,7 @@ skipping those for which keys cannot be found. Also add a comment. .br .B -c """Kernel 3.8 image for production devices""" kernel.itb .fi - +. .P Add public keys to u-boot.dtb without needing a FIT to sign. This will also create a FIT containing an images node with no data named unused.itb. @@ -304,7 +304,7 @@ create a FIT containing an images node with no data named unused.itb. .br .B -o sha256,rsa2048 -K u-boot.dtb unused.itb .fi - +. .P Update an existing FIT image, signing it with additional keys. Add corresponding public keys into u-boot.dtb. This will resign all images @@ -315,7 +315,7 @@ with unavailable keys are skipped. .br .B -c """Kernel 3.8 image for production devices""" kernel.itb .fi - +. .P Create a FIT image containing a kernel, using automatic mode. No .its file is required. @@ -341,7 +341,7 @@ file is required. .br .B -d vmlinuz -k /secret/signing-keys -g dev -o sha256,rsa2048 kernel.itb .fi - +. .SH HOMEPAGE http://www.denx.de/wiki/U-Boot/WebHome .PP From 3dc1ff026f8483ee93f950ad4603b1837e69af33 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:10 -0400 Subject: [PATCH 03/21] doc: mkimage: Reformat examples This puts each example in a new paragraph and uses a hanging indent for continued lines to increase clarity. We use tabs instead of .in or .RS for the indent because it renders properly in both man and mandoc (which is what many common HTML man pages use). The only nit is that the tab stops in man default to something like 2", so reduce that to 1". We also escape every "minus" as recommended by man-pages(7). Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 116 +++++++++++++++++++++++++++++--------------------- 1 file changed, 67 insertions(+), 49 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 5cc2d2dc05..616fe4505d 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -269,78 +269,96 @@ using the -f flag. But if the original input to mkimage is a binary file (already compiled) then the timestamp is assumed to have been set previously. . .SH EXAMPLES -. +.\" Reduce the width of the tab stops to something reasonable +.ta T 1i List image information: -.nf -.B mkimage -l uImage -.fi +.RS +.P +.EX +\fBmkimage \-l uImage +.EE +.RE .P Create legacy image with compressed PowerPC Linux kernel: -.nf -.B mkimage -A powerpc -O linux -T kernel -C gzip \\\\ -.br -.B -a 0 -e 0 -n Linux -d vmlinux.gz uImage -.fi +.RS +.P +.EX +\fBmkimage \-A powerpc \-O linux \-T kernel \-C gzip \\ + \-a 0 \-e 0 \-n Linux \-d vmlinux.gz uImage +.EE +.RE .P Create FIT image with compressed PowerPC Linux kernel: -.nf -.B mkimage -f kernel.its kernel.itb -.fi +.RS +.P +.EX +\fBmkimage \-f kernel.its kernel.itb +.EE +.RE .P Create FIT image with compressed kernel and sign it with keys in the -/public/signing-keys directory. Add corresponding public keys into u-boot.dtb, +/public/signing\-keys directory. Add corresponding public keys into u\-boot.dtb, skipping those for which keys cannot be found. Also add a comment. -.nf -.B mkimage -f kernel.its -k /public/signing-keys -K u-boot.dtb \\\\ -.br -.B -c """Kernel 3.8 image for production devices""" kernel.itb -.fi -. +.RS .P -Add public keys to u-boot.dtb without needing a FIT to sign. This will also +.EX +\fBmkimage \-f kernel.its \-k /public/signing\-keys \-K u\-boot.dtb \\ + \-c \(dqKernel 3.8 image for production devices\(dq kernel.itb +.EE +.RE +.P +Add public keys to u\-boot.dtb without needing a FIT to sign. This will also create a FIT containing an images node with no data named unused.itb. -.nf -.B mkimage -f auto -d /dev/null -k /public/signing-keys -g dev \\\\ -.br -.B -o sha256,rsa2048 -K u-boot.dtb unused.itb -.fi -. +.RS +.P +.EX +\fBmkimage \-f auto \-d /dev/null \-k /public/signing\-keys \-g dev \\ + \-o sha256,rsa2048 \-K u\-boot.dtb unused.itb +.EE +.RE .P Update an existing FIT image, signing it with additional keys. -Add corresponding public keys into u-boot.dtb. This will resign all images +Add corresponding public keys into u\-boot.dtb. This will resign all images with keys that are available in the new directory. Images that request signing with unavailable keys are skipped. -.nf -.B mkimage -F -k /secret/signing-keys -K u-boot.dtb \\\\ -.br -.B -c """Kernel 3.8 image for production devices""" kernel.itb -.fi -. +.RS +.P +.EX +\fBmkimage \-F \-k /secret/signing\-keys \-K u\-boot.dtb \\ + \-c \(dqKernel 3.8 image for production devices\(dq kernel.itb +.EE +.RE .P Create a FIT image containing a kernel, using automatic mode. No .its file is required. -.nf -.B mkimage -f auto -A arm -O linux -T kernel -C none -a 43e00000 -e 0 \\\\ -.br -.B -c """Kernel 4.4 image for production devices""" -d vmlinuz kernel.itb -.fi +.RS +.P +.EX +\fBmkimage \-f auto \-A arm \-O linux \-T kernel \-C none \-a 43e00000 \-e 0 \\ + \-c \(dqKernel 4.4 image for production devices\(dq \-d vmlinuz kernel.itb +.EE +.RE .P Create a FIT image containing a kernel and some device tree files, using automatic mode. No .its file is required. -.nf -.B mkimage -f auto -A arm -O linux -T kernel -C none -a 43e00000 -e 0 \\\\ -.br -.B -c """Kernel 4.4 image for production devices""" -d vmlinuz \\\\ -.B -b /path/to/rk3288-firefly.dtb -b /path/to/rk3288-jerry.dtb kernel.itb -.fi +.RS +.P +.EX +\fBmkimage \-f auto \-A arm \-O linux \-T kernel \-C none \-a 43e00000 \-e 0 \\ + \-c \(dqKernel 4.4 image for production devices\(dq \-d vmlinuz \\ + \-b /path/to/rk3288\-firefly.dtb \-b /path/to/rk3288\-jerry.dtb kernel.itb +.EE +.RE .P Create a FIT image containing a signed kernel, using automatic mode. No .its file is required. -.nf -.B mkimage -f auto -A arm -O linux -T kernel -C none -a 43e00000 -e 0 \\\\ -.br -.B -d vmlinuz -k /secret/signing-keys -g dev -o sha256,rsa2048 kernel.itb -.fi +.RS +.P +.EX +\fBmkimage \-f auto \-A arm \-O linux \-T kernel \-C none \-a 43e00000 \-e 0 \\ + \-d vmlinuz \-k /secret/signing\-keys \-g dev \-o sha256,rsa2048 kernel.itb +.EE +.RE . .SH HOMEPAGE http://www.denx.de/wiki/U-Boot/WebHome From 1bdf48623cdd5b835cbecdf2cf604d935c2a429f Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:11 -0400 Subject: [PATCH 04/21] doc: mkimage: Regularize option documentation Square brackets are commonly used to denote optional parts of a command. However, all option arguments are mandatory. Remove these brackets. This also removes some unnecessary quotation marks, and uses hyphens to connect words in option arguments. This is intended to just clean up the formatting, leaving content corrections to later patches. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 72 +++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 616fe4505d..9945251a1d 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -26,7 +26,7 @@ mkimage \- Generate image for U-Boot .BI \-F\~ image-file-name .YS . -.SH "DESCRIPTION" +.SH DESCRIPTION The .B mkimage command is used to create images for use with the U-Boot boot loader. @@ -50,64 +50,64 @@ allows for more flexibility in handling images of various types and also enhances integrity protection of images with stronger checksums. It also supports verified boot. . -.SH "OPTIONS" +.SH OPTIONS . .B List image information: . .TP -.BI "\-l [" "uimage file name" "]" +.BI \-l " uimage-file-name" mkimage lists the information contained in the header of an existing U-Boot image. . .TP -.BI "\-T [" "image type" "]" +.BI \-T " image-type" Parse image file as type. Pass \-h as the image to see the list of supported image type. Without this option image type is autodetected. . .TP -.BI "\-q" +.B \-q Quiet. Don't print the image header on successful verification. . .P .B Create old legacy image: . .TP -.BI "\-A [" "architecture" "]" +.BI \-A " architecture" Set architecture. Pass \-h as the architecture to see the list of supported architectures. . .TP -.BI "\-O [" "os" "]" +.BI \-O " os" Set operating system. bootm command of u-boot changes boot method by os type. Pass \-h as the OS to see the list of supported OS. . .TP -.BI "\-T [" "image type" "]" +.BI \-T " image-type" Set image type. Pass \-h as the image to see the list of supported image type. . .TP -.BI "\-C [" "compression type" "]" +.BI \-C " compression-type" Set compression type. Pass \-h as the compression to see the list of supported compression type. . .TP -.BI "\-a [" "load address" "]" +.BI \-a " load-address" Set load address with a hex number. . .TP -.BI "\-e [" "entry point" "]" +.BI \-e " entry-point" Set entry point with a hex number. . .TP -.BI "\-l" +.B \-l List the contents of an image. . .TP -.BI "\-n [" "image name" "]" +.BI \-n " image-name" Set image name to 'image name'. . .TP -.BI "\-R [" "secondary image name" "]" +.BI \-R " secondary-image-name" Some image types support a second image for additional data. For these types, use \-R to specify this second image. .TS @@ -136,42 +136,42 @@ T} .TE . .TP -.BI "\-d [" "image data file" "]" +.BI \-d " image-data-file" Use image data from 'image data file'. . .TP -.BI "\-x" +.B \-x Set XIP (execute in place) flag. . .TP -.BI "\-s" +.B \-s Don't copy in the image data. Depending on the image type, this may create just the header, everything but the image data, or nothing at all. . .TP -.BI "\-v" +.B \-v Verbose. Print file names as they are added to the image. . .P .B Create FIT image: . .TP -.BI "\-b [" "device tree file" "] +.BI \-b " device-tree-file" Appends the device tree binary file (.dtb) to the FIT. . .TP -.BI "\-c [" "comment" "]" +.BI \-c " comment" Specifies a comment to be added when signing. This is typically a useful message which describes how the image was signed or some other useful information. . .TP -.BI "\-D [" "dtc options" "]" +.BI \-D " dtc-options" Provide special options to the device tree compiler that is used to create the image. . .TP -.BI "\-E +.BI \-E After processing, move the image data outside the FIT and store a data offset in the FIT. Images will be placed one after the other immediately after the FIT, with each one aligned to a 4-byte boundary. The existing 'data' property @@ -180,12 +180,12 @@ A 'data-offset' of 0 indicates that it starts in the first (4-byte aligned) byte after the FIT. . .TP -.BI "\-B [" "alignment" "]" +.BI \-B " alignment" The alignment, in hexadecimal, that external data will be aligned to. This option only has an effect when \-E is specified. . .TP -.BI "\-f [" "image tree source file" " | " "auto" "]" +.BI \-f " image-tree-source-file" Image tree source file that describes the structure and contents of the FIT image. .IP @@ -195,29 +195,29 @@ and -e are used to specify the image to include in the FIT and its attributes. No .its file is required. . .TP -.BI "\-F" +.B \-F Indicates that an existing FIT image should be modified. No dtc compilation is performed and the \-f flag should not be given. This can be used to sign images with additional keys after initial image creation. . .TP -.BI "\-i [" "ramdisk_file" "]" +.BI \-i " ramdisk-file" Appends the ramdisk file to the FIT. . .TP -.BI "\-k [" "key_directory" "]" +.BI \-k " key-directory" Specifies the directory containing keys to use for signing. This directory should contain a private key file .key for use with signing and a certificate .crt (containing the public key) for use with verification. . .TP -.BI "\-G [" "key_file" "]" +.BI \-G " key-file" Specifies the private key file to use when signing. This option may be used instead of \-k. . .TP -.BI "\-K [" "key_destination" "]" +.BI \-K " key-destination" Specifies a compiled device tree binary file (typically .dtb) to write public key information into. When a private key is used to sign an image, the corresponding public key is written into this file for for run-time @@ -225,42 +225,42 @@ verification. Typically the file here is the device tree binary used by CONFIG_OF_CONTROL in U-Boot. . .TP -.BI "\-G [" "key_file" "]" +.BI \-G " key-file" Specifies the private key file to use when signing. This option may be used instead of \-k. . .TP -.BI "\-g [" "key_name_hint" "]" +.BI \-g " key-name-hint" Sets the key-name-hint property when used with \-f auto. This is the part of the key. The directory part is set by \-k. This option also indicates that the images included in the FIT should be signed. If this option is specified, \-o must be specified as well. . .TP -.BI "\-o [" "signing algorithm" "]" +.BI \-o " signing-algorithm" Specifies the algorithm to be used for signing a FIT image. The default is taken from the signature node's 'algo' property. . .TP -.BI "\-p [" "external position" "]" +.BI \-p " external-position" Place external data at a static external position. See \-E. Instead of writing a 'data-offset' property defining the offset from the end of the FIT, \-p will use 'data-position' as the absolute position from the base of the FIT. . .TP -.BI "\-r" +.B \-r Specifies that keys used to sign the FIT are required. This means that they must be verified for the image to boot. Without this option, the verification will be optional (useful for testing but not for release). . .TP -.BI "\-N [" "engine" "]" +.BI \-N " engine" The openssl engine to use when signing and verifying the image. For a complete list of available engines, refer to .BR engine (1). . .TP -.BI "\-t +.B \-t Update the timestamp in the FIT. .IP Normally the FIT timestamp is created the first time mkimage is run on a FIT, From a4d0c74eed58a1bdfbaa5c131f803e741361b859 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:12 -0400 Subject: [PATCH 05/21] doc: mkimage: Use subsection macro The options are divided up into several subsections. Use the appropriate macro. While we're at it, rename the headings to better reflect the contents of their sections. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 9945251a1d..025ebc0aff 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -52,7 +52,7 @@ supports verified boot. . .SH OPTIONS . -.B List image information: +.SS General options . .TP .BI \-l " uimage-file-name" @@ -68,8 +68,7 @@ Without this option image type is autodetected. .B \-q Quiet. Don't print the image header on successful verification. . -.P -.B Create old legacy image: +.SS General image-creation options . .TP .BI \-A " architecture" @@ -152,8 +151,7 @@ just the header, everything but the image data, or nothing at all. .B \-v Verbose. Print file names as they are added to the image. . -.P -.B Create FIT image: +.SS Options for creating FIT images . .TP .BI \-b " device-tree-file" From a5e2b6754469ad24da61d5efd862f96c4134dbf0 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:13 -0400 Subject: [PATCH 06/21] doc: mkimage: Rearrange/remove some options This moves some options which work in any mode to the general options section. -p is moved to after -E/-B since those options are related. This also adds documentation for -h and -V. The -F, -l, and -G options are documented twice. Remove the second documentation in each case. The synopsis for -l also suggests an implied second uimage-file-name parameter. E.g. mkimage [-l uimage-file-name] uimage-file-name This is misleading, so remove it. Wrap a few lines to 80 characters as well. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 62 ++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 025ebc0aff..34c0c2050f 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -55,8 +55,18 @@ supports verified boot. .SS General options . .TP -.BI \-l " uimage-file-name" -mkimage lists the information contained in the header of an existing U-Boot image. +.B \-h +Print a help message and exit. +. +.TP +.B \-l +mkimage lists the information contained in the header of an existing U-Boot +image. +. +.TP +.B \-s +Don't copy in the image data. Depending on the image type, this may create +just the header, everything but the image data, or nothing at all. . .TP .BI \-T " image-type" @@ -66,13 +76,22 @@ Without this option image type is autodetected. . .TP .B \-q -Quiet. Don't print the image header on successful verification. +Quiet. Don't print the image header. +. +.TP +.B \-v +Verbose. Print file names as they are added to the image. +. +.TP +.B \-V +Print version information and exit. . .SS General image-creation options . .TP .BI \-A " architecture" -Set architecture. Pass \-h as the architecture to see the list of supported architectures. +Set architecture. Pass \-h as the architecture to see the list of supported +architectures. . .TP .BI \-O " os" @@ -80,11 +99,6 @@ Set operating system. bootm command of u-boot changes boot method by os type. Pass \-h as the OS to see the list of supported OS. . .TP -.BI \-T " image-type" -Set image type. -Pass \-h as the image to see the list of supported image type. -. -.TP .BI \-C " compression-type" Set compression type. Pass \-h as the compression to see the list of supported compression type. @@ -98,10 +112,6 @@ Set load address with a hex number. Set entry point with a hex number. . .TP -.B \-l -List the contents of an image. -. -.TP .BI \-n " image-name" Set image name to 'image name'. . @@ -142,15 +152,6 @@ Use image data from 'image data file'. .B \-x Set XIP (execute in place) flag. . -.TP -.B \-s -Don't copy in the image data. Depending on the image type, this may create -just the header, everything but the image data, or nothing at all. -. -.TP -.B \-v -Verbose. Print file names as they are added to the image. -. .SS Options for creating FIT images . .TP @@ -183,6 +184,12 @@ The alignment, in hexadecimal, that external data will be aligned to. This option only has an effect when \-E is specified. . .TP +.BI \-p " external-position" +Place external data at a static external position. See \-E. Instead of writing +a 'data-offset' property defining the offset from the end of the FIT, \-p will +use 'data-position' as the absolute position from the base of the FIT. +. +.TP .BI \-f " image-tree-source-file" Image tree source file that describes the structure and contents of the FIT image. @@ -223,11 +230,6 @@ verification. Typically the file here is the device tree binary used by CONFIG_OF_CONTROL in U-Boot. . .TP -.BI \-G " key-file" -Specifies the private key file to use when signing. This option may be used -instead of \-k. -. -.TP .BI \-g " key-name-hint" Sets the key-name-hint property when used with \-f auto. This is the part of the key. The directory part is set by \-k. This option also indicates @@ -240,12 +242,6 @@ Specifies the algorithm to be used for signing a FIT image. The default is taken from the signature node's 'algo' property. . .TP -.BI \-p " external-position" -Place external data at a static external position. See \-E. Instead of writing -a 'data-offset' property defining the offset from the end of the FIT, \-p will -use 'data-position' as the absolute position from the base of the FIT. -. -.TP .B \-r Specifies that keys used to sign the FIT are required. This means that they must be verified for the image to boot. Without this option, the verification From e9927c26646569f252c238682fe4a306c6ef9813 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:14 -0400 Subject: [PATCH 07/21] doc: mkimage: Use correct capitalization for NAME The description in NAME should not be capitalized. Fix a grammatical error as well. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 34c0c2050f..ee5d0dd0ef 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -1,7 +1,7 @@ .TH MKIMAGE 1 "2022-02-07" . .SH NAME -mkimage \- Generate image for U-Boot +mkimage \- generate images for U-Boot .SH SYNOPSIS .SY mkimage .OP \-T type From 9cc4000cf286aa31fcb710666f565c04edc62917 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:15 -0400 Subject: [PATCH 08/21] doc: mkimage: Edit options for style and consistency This makes a variety of changes for the options to make them typographically consistent, clarify their meaning, and fix grammatical (or other) errors. Many of the changes here are stylistic, though there are a few fixes. The main changes I made across the board were: - All options are bolded and parameters italicised - All single quotes are properly matched (instead of using apostrophes) - Minor background info has been added to clarify many underdocumented options - Default values for options are documented Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 273 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 205 insertions(+), 68 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index ee5d0dd0ef..6416b4ad5e 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -29,26 +29,25 @@ mkimage \- generate images for U-Boot .SH DESCRIPTION The .B mkimage -command is used to create images for use with the U-Boot boot loader. -These images can contain the linux kernel, device tree blob, root file -system image, firmware images etc., either separate or combined. +command is used to create images for use with the U-Boot boot loader. These +images can contain the Linux kernel, device tree blob, root file system image, +firmware images etc., either separate or combined. .P .B mkimage -supports two different formats: +supports many image formats. Some of these formats may be used by embedded boot +firmware to load U-Boot. Others may be used by U-Boot to load Linux (or some +other kernel): .P -The old -.I legacy image -format concatenates the individual parts (for example, kernel image, -device tree blob and ramdisk image) and adds a 64 bytes header -containing information about target architecture, operating system, -image type, compression method, entry points, time stamp, checksums, -etc. +The legacy image format concatenates the individual parts (for example, kernel +image, device tree blob and ramdisk image) and adds a 64 byte header containing +information about the target architecture, operating system, image type, +compression method, entry points, time stamp, checksums, etc. .P The new -.I FIT (Flattened Image Tree) format -allows for more flexibility in handling images of various types and also -enhances integrity protection of images with stronger checksums. It also -supports verified boot. +.I FIT +(Flattened Image Tree) format allows for more flexibility in handling images of +various types and also enhances integrity protection of images with stronger +checksums. It also supports verified boot. . .SH OPTIONS . @@ -60,8 +59,8 @@ Print a help message and exit. . .TP .B \-l -mkimage lists the information contained in the header of an existing U-Boot -image. +.B mkimage +lists the information contained in the header of an existing U-Boot image. . .TP .B \-s @@ -70,9 +69,34 @@ just the header, everything but the image data, or nothing at all. . .TP .BI \-T " image-type" -Parse image file as type. -Pass \-h as the image to see the list of supported image type. -Without this option image type is autodetected. +Parse image file as +.IR image-type . +Pass +.B list +as +.I image-type +to see the list of supported image types. If this option is absent, then it +defaults to +.B kernel +(legacy image). If this option is absent when +.B \-l +is passed, then +.B mkimage +will attempt to automatically detect the image type. Not all image types support +automatic detection, so it may be necessary to pass +.B \-T +explicitly. +.IP +When creating a FIT image with +.BR \-f , +the image type is always set to +.BR flat_dt . +In this case, +.B \-T +specifies the image node's \(oqtype\(cq property. If +.B \-T +is absent, then the \(oqtype\(cq property will default to +.BR kernel . . .TP .B \-q @@ -90,35 +114,67 @@ Print version information and exit. . .TP .BI \-A " architecture" -Set architecture. Pass \-h as the architecture to see the list of supported -architectures. +Set the architecture. Pass +.B \-h +as the architecture to see the list of supported architectures. If +.B \-A +is absent, it defaults to +.BR ppc . . .TP .BI \-O " os" -Set operating system. bootm command of u-boot changes boot method by os type. -Pass \-h as the OS to see the list of supported OS. +Set the operating system. The U-Boot +.I bootm +command changes boot method based on the OS type. +Pass +.B \-h +as the +.I os +to see the list of supported OSs. If +.B \-O +is absent, it defaults to +.BR linux . . .TP .BI \-C " compression-type" -Set compression type. -Pass \-h as the compression to see the list of supported compression type. +Set the compression type. The image data should have already been compressed +using this compression type. +.B mkimage +will not automatically compress image data. +Pass +.B \-h +as the +.I compression-type +to see the list of supported compression types. If +.B \-C +is absent, it defaults to +.BR gzip . . .TP .BI \-a " load-address" -Set load address with a hex number. +Set the absolute address to load the image data to. +.I load-address +will be interpreted as a hexadecimal number. . .TP .BI \-e " entry-point" -Set entry point with a hex number. +Set the absolute address of the image entry point. The U-Boot +.I bootm +command will jump to this address after loading the image. +.I entry-point +will be interpreted as a hexadecimal number. . .TP .BI \-n " image-name" -Set image name to 'image name'. +Set the image name to +.IR image-name . . .TP .BI \-R " secondary-image-name" Some image types support a second image for additional data. For these types, -use \-R to specify this second image. +use +.B \-R +to specify this second image. .TS allbox; lb lbx @@ -146,11 +202,26 @@ T} . .TP .BI \-d " image-data-file" -Use image data from 'image data file'. +Use image data from +.IR image-data-file . +If the +.I image-type +is +.BR multi , +then multiple images may be specified, separated by colons: +.RS +.IP +.IR image-data-file [\fB:\fP image-data-file .\|.\|.] +.RE . .TP .B \-x -Set XIP (execute in place) flag. +Set the +.I XIP +(execute in place) flag. The U-Boot +.I bootm +command will not load the image data, and instead will assume it is already +accessible at the load address (such as via memory-mapped flash). . .SS Options for creating FIT images . @@ -160,23 +231,27 @@ Appends the device tree binary file (.dtb) to the FIT. . .TP .BI \-c " comment" -Specifies a comment to be added when signing. This is typically a useful -message which describes how the image was signed or some other useful -information. +Specifies a comment to be added when signing. This is typically a message which +describes how the image was signed or some other useful information. . .TP .BI \-D " dtc-options" -Provide special options to the device tree compiler that is used to -create the image. +Provide additional options to the device tree compiler when creating the image. +See +.BR dtc (1) +for documentation of possible options. If +.B \-D +is absent, it defaults to +.BR "\-I dts \-O dtb \-p 500" . . .TP .BI \-E After processing, move the image data outside the FIT and store a data offset -in the FIT. Images will be placed one after the other immediately after the -FIT, with each one aligned to a 4-byte boundary. The existing 'data' property -in each image will be replaced with 'data-offset' and 'data-size' properties. -A 'data-offset' of 0 indicates that it starts in the first (4-byte aligned) -byte after the FIT. +in the FIT. Images will be placed one after the other immediately after the FIT, +with each one aligned to a 4-byte boundary. The existing \(oqdata\(cq property +in each image will be replaced with \(oqdata-offset\(cq and \(oqdata-size\(cq +properties. A \(oqdata-offset\(cq of 0 indicates that it starts in the first +(4-byte-aligned) byte after the FIT. . .TP .BI \-B " alignment" @@ -185,36 +260,62 @@ option only has an effect when \-E is specified. . .TP .BI \-p " external-position" -Place external data at a static external position. See \-E. Instead of writing -a 'data-offset' property defining the offset from the end of the FIT, \-p will -use 'data-position' as the absolute position from the base of the FIT. +Place external data at a static external position. Instead of writing a +\(oqdata-offset\(cq property defining the offset from the end of the FIT, +.B \-p +will use \(oqdata-position\(cq as the absolute position from the base of the +FIT. See +.B \-E +for details on using external data. . .TP -.BI \-f " image-tree-source-file" +\fB\-f \fIimage-tree-source-file\fR | \fBauto Image tree source file that describes the structure and contents of the FIT image. .IP -This can be automatically generated for some simple cases. -Use "-f auto" for this. In that case the arguments -d, -A, -O, -T, -C, -a -and -e are used to specify the image to include in the FIT and its attributes. -No .its file is required. +In some simple cases, the image tree source can be generated automatically. To +use this feature, pass +.BR "\-f auto" . +The +.BR \-d , +.BR \-A , +.BR \-O , +.BR \-T , +.BR \-C , +.BR \-a , +and +.B \-e +options may be used to specify the image to include in the FIT and its +attributes. No +.I image-tree-source-file +is required. . .TP .B \-F -Indicates that an existing FIT image should be modified. No dtc -compilation is performed and the \-f flag should not be given. -This can be used to sign images with additional keys after initial image -creation. +Indicates that an existing FIT image should be modified. No dtc compilation will +be performed and +.B \-f +should not be passed. This can be used to sign images with additional keys +after initial image creation. . .TP .BI \-i " ramdisk-file" -Appends the ramdisk file to the FIT. +Append a ramdisk or initramfs file to the image. . .TP .BI \-k " key-directory" Specifies the directory containing keys to use for signing. This directory -should contain a private key file .key for use with signing and a -certificate .crt (containing the public key) for use with verification. +should contain a private key file +.IR name .key +for use with signing, and a certificate +.IR name .crt +(containing the public key) for use with verification. The public key is only +necessary when embedding it into another device tree using +.BR \-K . +.I name +defaults to the value of the signature node's \(oqkey-name-hint\(cq property, +but may be overridden using +.BR \-g . . .TP .BI \-G " key-file" @@ -231,15 +332,49 @@ CONFIG_OF_CONTROL in U-Boot. . .TP .BI \-g " key-name-hint" -Sets the key-name-hint property when used with \-f auto. This is the -part of the key. The directory part is set by \-k. This option also indicates -that the images included in the FIT should be signed. If this option is -specified, \-o must be specified as well. +Overrides the signature node's \(oqkey-name-hint\(cq property. This is +especially useful when signing an image with +.BR "\-f auto" . +This is the +.I name +part of the key. The directory part is set by +.BR \-k . +This option also indicates that the images included in the FIT should be signed. +If this option is specified, then +.B \-o +must be specified as well. . .TP -.BI \-o " signing-algorithm" +.BI \-o " crypto" , checksum Specifies the algorithm to be used for signing a FIT image. The default is -taken from the signature node's 'algo' property. +taken from the signature node's \(oqalgo\(cq property. +The valid values for +.I crypto +are: +.RS +.IP +.TS +lb. +rsa2048 +rsa3072 +rsa4096 +ecdsa256 +.TE +.RE +.IP +The valid values for +.I checksum +are +.RS +.IP +.TS +lb. +sha1 +sha256 +sha384 +sha512 +.TE +.RE . .TP .B \-r @@ -249,18 +384,20 @@ will be optional (useful for testing but not for release). . .TP .BI \-N " engine" -The openssl engine to use when signing and verifying the image. For a complete list of -available engines, refer to +The openssl engine to use when signing and verifying the image. For a complete +list of available engines, refer to .BR engine (1). . .TP .B \-t Update the timestamp in the FIT. .IP -Normally the FIT timestamp is created the first time mkimage is run on a FIT, +Normally the FIT timestamp is created the first time mkimage runs, when converting the source .its to the binary .fit file. This corresponds to -using the -f flag. But if the original input to mkimage is a binary file -(already compiled) then the timestamp is assumed to have been set previously. +using +.BR -f . +But if the original input to mkimage is a binary file (already compiled), then +the timestamp is assumed to have been set previously. . .SH EXAMPLES .\" Reduce the width of the tab stops to something reasonable From d048718a44916389b61c272ea6f43f83eb689297 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:16 -0400 Subject: [PATCH 09/21] doc: mkimage: Add BUGS section In leiu of a non-standard HOMEPAGE section, add a BUGS section with a link to the issue tracker. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 6416b4ad5e..60978762d3 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -399,6 +399,11 @@ using But if the original input to mkimage is a binary file (already compiled), then the timestamp is assumed to have been set previously. . +.SH BUGS +Please report bugs to the +.UR https://\:source\:.denx\:.de/\:u-boot/\:u-boot/\:issues +U-Boot bug tracker +.UE . .SH EXAMPLES .\" Reduce the width of the tab stops to something reasonable .ta T 1i @@ -491,8 +496,6 @@ file is required. .EE .RE . -.SH HOMEPAGE -http://www.denx.de/wiki/U-Boot/WebHome .PP .SH AUTHOR This manual page was written by Nobuhiro Iwamatsu From 84bd5cd4dbe73969a387e28677f54be91354862f Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:17 -0400 Subject: [PATCH 10/21] doc: mkimage: Add SEE ALSO section This adds a SEE ALSO section to link to similar man pages, as well as to the U-Boot documentation. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 60978762d3..bc28a5d748 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -501,3 +501,11 @@ file is required. This manual page was written by Nobuhiro Iwamatsu and Wolfgang Denk . It was updated for image signing by Simon Glass . +.SH SEE ALSO +.BR dtc (1), +.BR dumpimage (1), +.BR openssl (1), +the\~ +.UR https://\:u-boot\:.readthedocs\:.io/\:en/\:latest/\:index.html +U-Boot documentation +.UE From 785a051ee5cc7de94dd7c6e98ee917c30fa5189a Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:18 -0400 Subject: [PATCH 11/21] doc: mkimage: Remove AUTHORS section Per man-pages(7), "use of an AUTHORS section is strongly discouraged." Remove it, and instead add some copyright notices and an SPDX. The default license for U-Boot is GPL2, so that's what I put. The copyright dates are based on the commit dates. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index bc28a5d748..8419fa45a9 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -1,4 +1,9 @@ -.TH MKIMAGE 1 "2022-02-07" +.\" SPDX-License-Identifier: GPL-2.0 +.\" Copyright (C) 2022 Sean Anderson +.\" Copyright (C) 2013-20 Simon Glass +.\" Copyright (C) 2010 Nobuhiro Iwamatsu +.\" Copyright (C) 2010 Wolfgang Denk +.TH MKIMAGE 1 2022-06-11 U-Boot . .SH NAME mkimage \- generate images for U-Boot @@ -496,11 +501,6 @@ file is required. .EE .RE . -.PP -.SH AUTHOR -This manual page was written by Nobuhiro Iwamatsu -and Wolfgang Denk . It was updated for image signing by -Simon Glass . .SH SEE ALSO .BR dtc (1), .BR dumpimage (1), From dc3a923ed66e136bb3641940732b2f8c52a6f02a Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:19 -0400 Subject: [PATCH 12/21] mkimage: Add long options The mkimage command has had many options added over the years. Unfortunately, we are starting to run out of short options. Recent options don't have any obvious relation to their meaning (e.g. -o/-g). Fortunately, long options exist. Add long options for each current short option. For the curious, the remaining short options are HIkLmMPQSuUwWXyYzZ. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/mkimage.c | 45 +++++++++++++++++++++++++++++++-- 2 files changed, 109 insertions(+), 2 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 8419fa45a9..c310b01bb9 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -60,20 +60,28 @@ checksums. It also supports verified boot. . .TP .B \-h +.TQ +.B \-\-help Print a help message and exit. . .TP .B \-l +.TQ +.B \-\-list .B mkimage lists the information contained in the header of an existing U-Boot image. . .TP .B \-s +.TQ +.B \-\-no\-copy Don't copy in the image data. Depending on the image type, this may create just the header, everything but the image data, or nothing at all. . .TP .BI \-T " image-type" +.TQ +.BI \-\-type " image-type" Parse image file as .IR image-type . Pass @@ -105,20 +113,28 @@ is absent, then the \(oqtype\(cq property will default to . .TP .B \-q +.TQ +.B \-\-quiet Quiet. Don't print the image header. . .TP .B \-v +.TQ +.B \-\-verbose Verbose. Print file names as they are added to the image. . .TP .B \-V +.TQ +.B \-\-version Print version information and exit. . .SS General image-creation options . .TP .BI \-A " architecture" +.TQ +.BI \-\-architecture " architecture" Set the architecture. Pass .B \-h as the architecture to see the list of supported architectures. If @@ -128,6 +144,8 @@ is absent, it defaults to . .TP .BI \-O " os" +.TQ +.BI \-\-os " os" Set the operating system. The U-Boot .I bootm command changes boot method based on the OS type. @@ -142,6 +160,8 @@ is absent, it defaults to . .TP .BI \-C " compression-type" +.TQ +.BI \-\-compression " compression-type" Set the compression type. The image data should have already been compressed using this compression type. .B mkimage @@ -157,12 +177,16 @@ is absent, it defaults to . .TP .BI \-a " load-address" +.TQ +.BI \-\-load\-address " load-address" Set the absolute address to load the image data to. .I load-address will be interpreted as a hexadecimal number. . .TP .BI \-e " entry-point" +.TQ +.BI \-\-entry\-point " entry-point" Set the absolute address of the image entry point. The U-Boot .I bootm command will jump to this address after loading the image. @@ -171,11 +195,15 @@ will be interpreted as a hexadecimal number. . .TP .BI \-n " image-name" +.TQ +.BI \-\-primary\-image " image-name" Set the image name to .IR image-name . . .TP .BI \-R " secondary-image-name" +.TQ +.BI \-\-secondary\-image " image-name" Some image types support a second image for additional data. For these types, use .B \-R @@ -207,6 +235,8 @@ T} . .TP .BI \-d " image-data-file" +.TQ +.BI \-\-image " image-data-file" Use image data from .IR image-data-file . If the @@ -221,6 +251,8 @@ then multiple images may be specified, separated by colons: . .TP .B \-x +.TQ +.B \-\-xip Set the .I XIP (execute in place) flag. The U-Boot @@ -232,15 +264,21 @@ accessible at the load address (such as via memory-mapped flash). . .TP .BI \-b " device-tree-file" +.TQ +.BI \-\-device\-tree " device-tree-file" Appends the device tree binary file (.dtb) to the FIT. . .TP .BI \-c " comment" +.TQ +.BI \-\-comment " comment" Specifies a comment to be added when signing. This is typically a message which describes how the image was signed or some other useful information. . .TP .BI \-D " dtc-options" +.TQ +.BI \-\-dtcopts " dtc-options" Provide additional options to the device tree compiler when creating the image. See .BR dtc (1) @@ -251,6 +289,8 @@ is absent, it defaults to . .TP .BI \-E +.TQ +.BI \-\-external After processing, move the image data outside the FIT and store a data offset in the FIT. Images will be placed one after the other immediately after the FIT, with each one aligned to a 4-byte boundary. The existing \(oqdata\(cq property @@ -260,11 +300,15 @@ properties. A \(oqdata-offset\(cq of 0 indicates that it starts in the first . .TP .BI \-B " alignment" +.TQ +.BI \-\-alignment " alignment" The alignment, in hexadecimal, that external data will be aligned to. This option only has an effect when \-E is specified. . .TP .BI \-p " external-position" +.TQ +.BI \-\-position " external-position" Place external data at a static external position. Instead of writing a \(oqdata-offset\(cq property defining the offset from the end of the FIT, .B \-p @@ -275,6 +319,8 @@ for details on using external data. . .TP \fB\-f \fIimage-tree-source-file\fR | \fBauto +.TQ +\fB\-\-fit \fIimage-tree-source-file\fR | \fBauto Image tree source file that describes the structure and contents of the FIT image. .IP @@ -297,6 +343,8 @@ is required. . .TP .B \-F +.TQ +.B \-\-update Indicates that an existing FIT image should be modified. No dtc compilation will be performed and .B \-f @@ -305,10 +353,14 @@ after initial image creation. . .TP .BI \-i " ramdisk-file" +.TQ +.BI \-\-initramfs " ramdisk-file" Append a ramdisk or initramfs file to the image. . .TP .BI \-k " key-directory" +.TQ +.BI \-\-key\-dir " key-directory" Specifies the directory containing keys to use for signing. This directory should contain a private key file .IR name .key @@ -324,11 +376,15 @@ but may be overridden using . .TP .BI \-G " key-file" +.TQ +.BI \-\-key\-file " key-file" Specifies the private key file to use when signing. This option may be used instead of \-k. . .TP .BI \-K " key-destination" +.TQ +.BI \-\-key\-dest " key-destination" Specifies a compiled device tree binary file (typically .dtb) to write public key information into. When a private key is used to sign an image, the corresponding public key is written into this file for for run-time @@ -337,6 +393,8 @@ CONFIG_OF_CONTROL in U-Boot. . .TP .BI \-g " key-name-hint" +.TQ +.BI \-\-key\-name\-hint " key-name-hint" Overrides the signature node's \(oqkey-name-hint\(cq property. This is especially useful when signing an image with .BR "\-f auto" . @@ -351,6 +409,8 @@ must be specified as well. . .TP .BI \-o " crypto" , checksum +.TQ +.BI \-\-algo " crypto" , checksum Specifies the algorithm to be used for signing a FIT image. The default is taken from the signature node's \(oqalgo\(cq property. The valid values for @@ -383,18 +443,24 @@ sha512 . .TP .B \-r +.TQ +.B \-\-key\-required Specifies that keys used to sign the FIT are required. This means that they must be verified for the image to boot. Without this option, the verification will be optional (useful for testing but not for release). . .TP .BI \-N " engine" +.TQ +.BI \-\-engine " engine" The openssl engine to use when signing and verifying the image. For a complete list of available engines, refer to .BR engine (1). . .TP .B \-t +.TQ +.B \-\-touch Update the timestamp in the FIT. .IP Normally the FIT timestamp is created the first time mkimage runs, diff --git a/tools/mkimage.c b/tools/mkimage.c index 0e1198b411..597cb3a5ce 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -11,6 +11,7 @@ #include "mkimage.h" #include "imximage.h" #include +#include #include #include #ifdef __linux__ @@ -134,6 +135,7 @@ static void usage(const char *msg) fprintf(stderr, " %s -V ==> print version information and exit\n", params.cmdname); fprintf(stderr, "Use '-T list' to see a list of available image types\n"); + fprintf(stderr, "Long options are available; read the man page for details\n"); exit(EXIT_FAILURE); } @@ -156,6 +158,45 @@ static int add_content(int type, const char *fname) return 0; } +static const char optstring[] = + "a:A:b:B:c:C:d:D:e:Ef:Fg:G:i:k:K:ln:N:o:O:p:qrR:stT:vVx"; + +static const struct option longopts[] = { + { "load-address", required_argument, NULL, 'a' }, + { "architecture", required_argument, NULL, 'A' }, + { "device-tree", required_argument, NULL, 'b' }, + { "alignment", required_argument, NULL, 'B' }, + { "comment", required_argument, NULL, 'c' }, + { "compression", required_argument, NULL, 'C' }, + { "image", required_argument, NULL, 'd' }, + { "dtcopts", required_argument, NULL, 'D' }, + { "entry-point", required_argument, NULL, 'e' }, + { "external", no_argument, NULL, 'E' }, + { "fit", required_argument, NULL, 'f' }, + { "update", no_argument, NULL, 'F' }, + { "key-name-hint", required_argument, NULL, 'g' }, + { "key-file", required_argument, NULL, 'G' }, + { "help", no_argument, NULL, 'h' }, + { "initramfs", required_argument, NULL, 'i' }, + { "key-dir", required_argument, NULL, 'k' }, + { "key-dest", required_argument, NULL, 'K' }, + { "list", no_argument, NULL, 'l' }, + { "config", required_argument, NULL, 'n' }, + { "engine", required_argument, NULL, 'N' }, + { "algo", required_argument, NULL, 'o' }, + { "os", required_argument, NULL, 'O' }, + { "position", required_argument, NULL, 'p' }, + { "quiet", no_argument, NULL, 'q' }, + { "key-required", no_argument, NULL, 'r' }, + { "secondary-config", required_argument, NULL, 'R' }, + { "no-copy", no_argument, NULL, 's' }, + { "touch", no_argument, NULL, 't' }, + { "type", required_argument, NULL, 'T' }, + { "verbose", no_argument, NULL, 'v' }, + { "version", no_argument, NULL, 'V' }, + { "xip", no_argument, NULL, 'x' }, +}; + static void process_args(int argc, char **argv) { char *ptr; @@ -163,8 +204,8 @@ static void process_args(int argc, char **argv) char *datafile = NULL; int opt; - while ((opt = getopt(argc, argv, - "a:A:b:B:c:C:d:D:e:Ef:Fg:G:k:i:K:ln:N:p:o:O:rR:qstT:vVx")) != -1) { + while ((opt = getopt_long(argc, argv, optstring, + longopts, NULL)) != -1) { switch (opt) { case 'a': params.addr = strtoull(optarg, &ptr, 16); From b42168c125be1964b95dd97469fbd98fff985157 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:20 -0400 Subject: [PATCH 13/21] doc: mkimage: Further document -o and -R Despite the original description of these options, they are not always image names, or even files. Some image types use these options to convey configuration directly. Re-document these options as configuration options. Additionally, add a new section documenting the format of the configuration for each image type which uses it. In general, if configuration is used directly (without a separate file) I have added documentation for it. If the configuration points to a separate file, I have referenced that file's documentation. Where there is no such documentation, I have added it. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/mkimage.1 | 270 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 236 insertions(+), 34 deletions(-) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index c310b01bb9..353ea8b2f7 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -194,44 +194,22 @@ command will jump to this address after loading the image. will be interpreted as a hexadecimal number. . .TP -.BI \-n " image-name" +.BI \-n " primary-configuration" .TQ -.BI \-\-primary\-image " image-name" -Set the image name to -.IR image-name . +.BI \-\-config " primary-configuration" +Images may require additional configuration not specified with other options, +often in a image-type-specific format. The image types which support this +option and the format of their configuration are listed in +.BR CONFIGURATION . . .TP -.BI \-R " secondary-image-name" +.BI \-R " secondary-configuration" .TQ -.BI \-\-secondary\-image " image-name" -Some image types support a second image for additional data. For these types, -use -.B \-R -to specify this second image. -.TS -allbox; -lb lbx -l l. -Image Type Secondary Image Description -pblimage Additional RCW-style header, typically used for PBI commands. -zynqimage, zynqmpimage T{ -Initialization parameters, one per line. Each parameter has the form -.sp -.ti 4 -.I address data -.sp -where -.I address -and -.I data -are hexadecimal integers. The boot ROM will write each -.I data -to -.I address -when loading the image. At most 256 parameters may be specified in this -manner. -T} -.TE +.BI \-\-secondary\-config " secondary-configuration" +Some image types support a second set of configuration data. The image types +which support secondary configuration and the formap of their configuration are +listed in +.BR CONFIGURATION . . .TP .BI \-d " image-data-file" @@ -470,6 +448,230 @@ using But if the original input to mkimage is a binary file (already compiled), then the timestamp is assumed to have been set previously. . +.SH CONFIGURATION +This section documents the formats of the primary and secondary configuration +options for each image type which supports them. +. +.SS aisimage +The primary configuration is a file containing a series of +.I AIS +(Application Image Script) commands, one per line. Each command has the form +.RS +.P +.IR "command argument " .\|.\|. +.RE +.P +See +.UR https://\:www\:.ti\:.com/\:lit/\:pdf/\:spraag0 +TI application report SPRAAG0E +.UE +for details. +. +.SS atmelimage +The primary configuration is a comma-separated list of NAND Flash parameters of +the form +.RS +.P +\fIparameter\fB=\fIvalue\fR[\fB,\fIparameter\fB=\fIvalue\fR.\|.\|.\&] +.RE +.P +Valid +.IR parameter s +are +.RS +.P +.TS +lb. +usePmecc +nbSectorPerPage +spareSize +eccBitReq +sectorSize +eccOffset +.TE +.RE +.P +and valid +.IR value s +are decimal numbers. See section 11.4.4.1 of the SAMA5D3 Series Data Sheet for +valid values for each parameter. +. +.SS imximage +The primary configuration is a file containing configuration commands, as +documented in doc/\:imx/\:mkimage/\:imximage.txt of the U-Boot source. +. +.SS imx8image and imx8mimage +The primary configuration is a file containing configuration commands, as +documented in doc/\:imx/\:mkimage/\:imx8image.txt of the U-Boot source. +. +.SS kwbimage +The primary configuration is a file containing configuration commands, as +documented in doc/\:imx/\:mkimage/\:kwbimage.txt of the U-Boot source. +. +.SS mtk_image +The primary configuration is a semicolon-separated list of header options of the +form +.RS +.P +\fIkey\fB=\fIvalue\fR[\fB;\fIkey\fB=\fIvalue\fR.\|.\|.\&] +.RE +.P +where the valid keys are: +.RS +.P +.TS +lb lbx +lb l. +Key Description +_ +lk T{ +If \fB1\fP, then an \fILK\fP (legacy) image header is used. Otherwise, a +\fIBootROM\fP image header is used. +T} +lkname T{ +The name of the LK image header. The maximum length is 32 ASCII characters. If +not specified, the default value is \fBU-Boot\fP. +T} +media The boot device. See below for valid values. +nandinfo The desired NAND device type. See below for valid values. +arm64 If \fB1\fP, then this denotes an AArch64 image. +hdroffset Increase the reported size of the BRLYT header by this amount. +.TE +.RE +.P +Valid values for +.B media +are: +.RS +.P +.TS +lb lb +lb l. +Value Description +_ +nand Parallel NAND flash +snand Serial NAND flash +nor Serial NOR flash +emmc \fIeMMC\fP (Embedded Multi-Media Card) +sdmmc \fISD\fP (Secure Digital) card +.TE +.RE +.P +Valid values for +.B nandinfo +are: +.RS +.P +.TS +lb lb lb lb lb +lb l l l l. +Value NAND type Page size OOB size Total size +_ +2k+64 Serial 2KiB 64B +2k+120 Serial 2KiB 120B +2k+128 Serial 2KiB 128B +4k+256 Serial 4KiB 256B +1g:2k+64 Parallel 2KiB 64B 1Gbit +2g:2k+64 Parallel 2KiB 64B 2Gbit +4g:2k+64 Parallel 2KiB 64B 4Gbit +2g:2k+128 Parallel 2KiB 128B 2Gbit +4g:2k+128 Parallel 2KiB 128B 4Gbit +.TE +.RE +. +.SS mxsimage +The primary configuration is a file containing configuration commands, as +documented in doc/\:imx/\:mkimage/\:mxsimage.txt of the U-Boot source. +. +.SS omapimage +The primary configuration is the optional value +.BR byteswap . +If present, each 32-bit word of the image will have its bytes swapped +(converting from little-endian to big-endian, or vice versa). +. +.SS pblimage +The primary configuration is a file containing the +.I PBI +(Pre-Boot Image) header. Each line of the configuration has the format +.RS +.P +.IR value "[ " value .\|.\|.\&] +.RE +.P +Where +.I value +is a 32-bit hexadecimal integer. Each +.I value +will, after being converted to raw bytes, be literally prepended to the PBI. +.P +The secondary configuration is a file with the same format as the primary +configuration file. It will be inserted into the image after the primary +configuration data and before the image data. +.P +It is traditional to use the primary configuration file for the +.I RCW +(Reset Configuration Word), and the secondary configuration file for any +additional PBI commands. However, it is also possible to convert an existing PBI +to the above format and \(lqchain\(rq additional data onto the end of the +image. This may be especially useful for creating secure boot images. +. +.SS rkimage +The primary configuration is the name of the processor to generate the image +for. Valid values are: +.RS +.P +.TS +lb. +px30 +rk3036 +rk3066 +rk3128 +rk3188 +rk322x +rk3288 +rk3308 +rk3328 +rk3368 +rk3399 +rv1108 +rk3568 +.TE +.RE +. +.SS sunxi_egon +The primary configuration is the name to use for the device tree. +. +.SS ublimage +The primary configuration is a file containing configuration commands, as +documented in doc/\:README.ublimage of the U-Boot source. +. +.SS zynqimage and zynqmpimage +For +.BR zynqmpimage , +the primary configuration is a file containing the +.I PMUFW +(Power Management Unit Firmware). +.B zynqimage +does not use the primary configuration. +.P +For both image types, the secondary configuration is a file containinig +initialization parameters, one per line. Each parameter has the form +.RS +.P +.I address data +.RE +.P +where +.I address +and +.I data +are hexadecimal integers. The boot ROM will write each +.I data +to +.I address +when loading the image. At most 256 parameters may be specified in this +manner. +. .SH BUGS Please report bugs to the .UR https://\:source\:.denx\:.de/\:u-boot/\:u-boot/\:issues From e297f874a174ae932b0511de97f1e02528980658 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Sat, 25 Jun 2022 13:12:21 -0400 Subject: [PATCH 14/21] doc: Add man page for dumpimage This tool seems a bit underloved. Unfortunately, it seems to be missing support for FIT images. Alas... Add a man page documenting it. The example is taken from commit a804b5ce2d ("Add dumpimage, a tool to extract data from U-Boot images"). Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- doc/dumpimage.1 | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 doc/dumpimage.1 diff --git a/doc/dumpimage.1 b/doc/dumpimage.1 new file mode 100644 index 0000000000..52a45a3404 --- /dev/null +++ b/doc/dumpimage.1 @@ -0,0 +1,103 @@ +.\" SPDX-License-Identifier: GPL-2.0 +.\" Copyright (C) 2022 Sean Anderson +.TH DUMPIMAGE 1 2022-06-11 U-Boot +.SH NAME +dumpimage \- extract data from U-Boot images +. +.SH SYNOPSIS +.SY dumpimage +.OP \-T type +.BI \-l\~ image +.YS +.SY dumpimage +.OP \-T type +.OP \-p position +.BI \-o\~ outfile +.I image +.YS +.SY dumpimage +.B \-h +.YS +.SY dumpimage +.B \-V +.YS +. +.SH DESCRIPTION +.B dumpimage +lists and extracts data from U-Boot images. If +.B \-l +is specified, +.B dumpimage +lists the components in +.IR image . +Otherwise, +.B dumpimage +extracts the component at +.IR position " to " outfile . +. +.SH OPTIONS +.TP +.B \-h +Print usage information and exit. +. +.TP +.B \-l +Print the header information for +.IR image , +including a list of components. +. +.TP +.BI \-o " outfile" +The file to write the dumped component to. +.TP +.BI \-p " position" +Specify the +.I position +of the component to dump. This should be a numeric index, starting at 0. If not +specified, the default +.I position +is 0. +. +.TP +.BI \-T " type" +Specify the +.I type +of the image. If not specified, the image type will be automatically detected. A +list of supported image types may be printed by running +.BR "mkimage\~\-T\~list" . +. +.TP +.B \-V +Print version information and exit. +. +.SH BUGS +Please report bugs to the +.UR https://\:source\:.denx\:.de/\:u-boot/\:u-boot/\:issues +U-Boot bug tracker +.UE . +.SH EXAMPLES +Create a multi-file image and then extract part of that image +.PP +.EX +.in +4 +$ \c +.B mkimage \-A x86 \-O linux \-T multi \-n x86 \\\\\& +.in +4 +.B \-d vmlinuz:initrd.img:System.map multi.img +.in +Image Name: x86 +Created: Thu Jul 25 10:29:13 2013 +Image Type: Intel x86 Linux Multi-File Image (gzip compressed) +Data Size: 13722956 Bytes = 13401.32 kB = 13.09 MB +Load Address: 00000000 +Entry Point: 00000000 +Contents: + Image 0: 4040128 Bytes = 3945.44 kB = 3.85 MB + Image 1: 7991719 Bytes = 7804.41 kB = 7.62 MB + Image 2: 1691092 Bytes = 1651.46 kB = 1.61 MB +$ \c +.B dumpimage -p 2 -o System.map multi.img +.EE +.in +.SH SEE ALSO +.BR mkimage (1) From dc6b683035560eb4be703693975168a831250476 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 20 Jun 2022 10:31:27 -0400 Subject: [PATCH 15/21] doc: environment: Drop u-boot_addr_r This variable is never set nor explained why it would be set, drop it. Signed-off-by: Tom Rini Reviewed-by: Simon Glass Reviewed-by: Heinrich Schuchardt --- doc/usage/environment.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst index 28a8952b75..a3f23d4e4e 100644 --- a/doc/usage/environment.rst +++ b/doc/usage/environment.rst @@ -390,7 +390,6 @@ in U-Boot code. ================= ============== ================ ============== Image File Name RAM Address Flash Location ================= ============== ================ ============== -u-boot u-boot u-boot_addr_r u-boot_addr Linux kernel bootfile kernel_addr_r kernel_addr device tree blob fdtfile fdt_addr_r fdt_addr ramdisk ramdiskfile ramdisk_addr_r ramdisk_addr From 556af511d4731a4eaee3a6010528c3e115059ffa Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 20 Jun 2022 10:31:28 -0400 Subject: [PATCH 16/21] doc: environment: Expand on fdt_addr, initrd_addr and loadaddr - Explain why fdt_addr and initrd_addr should not be set to disable relocation normally. - Provide some advice on the typical loadaddr default value. Signed-off-by: Tom Rini Reviewed-by: Simon Glass --- doc/usage/environment.rst | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst index a3f23d4e4e..83543f63f6 100644 --- a/doc/usage/environment.rst +++ b/doc/usage/environment.rst @@ -204,7 +204,9 @@ fdt_high to work it must reside in writable memory, have sufficient padding on the end of it for u-boot to add the information it needs into it, and the memory - must be accessible by the kernel. + must be accessible by the kernel. This usage is strongly discouraged + however as it also stops U-Boot from ensuring the device tree starting + address is properly aligned and a misaligned tree will cause OS failures. fdtcontroladdr if set this is the address of the control flattened @@ -240,14 +242,21 @@ initrd_high memory. In this case U-Boot will NOT COPY the ramdisk at all. This may be useful to reduce the boot time on your system, but requires that this - feature is supported by your Linux kernel. + feature is supported by your Linux kernel. This usage however requires + that the user ensure that there will be no overlap with other parts of the + image such as the Linux kernel BSS. It should not be enabled by default + and only done as part of optimizing a deployment. ipaddr IP address; needed for tftpboot command loadaddr Default load address for commands like "bootp", - "rarpboot", "tftpboot", "loadb" or "diskboot" + "rarpboot", "tftpboot", "loadb" or "diskboot". Note that the optimal + default values here will vary between architectures. On 32bit ARM for + example, some offset from start of memory is used as the Linux kernel + zImage has a self decompressor and it's best if we stay out of where that + will be working. loads_echo see CONFIG_LOADS_ECHO From 34a026a891ef7c51194e9926cb9212fa811cb212 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Tue, 12 Jul 2022 17:34:13 -0400 Subject: [PATCH 17/21] doc: Add statistics page for v2022.07 Our statistics pages have always been generated by gitdm. After patching gitdm to generate an acceptable Sphinx output for tables, include that and some other basic formatting here. Cc: Heinrich Schuchardt Signed-off-by: Tom Rini Reviewed-by: Heinrich Schuchardt Signed-off-by: Heinrich Schuchardt --- .../statistics/u-boot-stats-v2022.07.rst | 805 ++++++++++++++++++ 1 file changed, 805 insertions(+) create mode 100644 doc/develop/statistics/u-boot-stats-v2022.07.rst diff --git a/doc/develop/statistics/u-boot-stats-v2022.07.rst b/doc/develop/statistics/u-boot-stats-v2022.07.rst new file mode 100644 index 0000000000..c1b627cd86 --- /dev/null +++ b/doc/develop/statistics/u-boot-stats-v2022.07.rst @@ -0,0 +1,805 @@ +:orphan: + +Release Statistics for U-Boot v2022.07 +====================================== + +* Processed 1696 csets from 183 developers + +* 27 employers found + +* A total of 148026 lines added, 56440 removed (delta 91586) + +.. table:: Developers with the most changesets + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Tom Rini 164 (9.7%) + Simon Glass 141 (8.3%) + Pali Rohár 114 (6.7%) + Marek Vasut 94 (5.5%) + Peng Fan 61 (3.6%) + Sean Anderson 59 (3.5%) + Heinrich Schuchardt 57 (3.4%) + Samuel Holland 49 (2.9%) + Michal Simek 49 (2.9%) + Johan Jonker 45 (2.7%) + Aaron Williams 40 (2.4%) + AKASHI Takahiro 38 (2.2%) + Marek Behún 36 (2.1%) + Tim Harvey 33 (1.9%) + Philippe Reynes 29 (1.7%) + Andre Przywara 28 (1.7%) + Andrew Scull 27 (1.6%) + Patrice Chotard 26 (1.5%) + Patrick Delaunay 25 (1.5%) + Fabio Estevam 24 (1.4%) + Gaurav Jain 20 (1.2%) + Ye Li 20 (1.2%) + Ashok Reddy Soma 16 (0.9%) + Stefan Roese 13 (0.8%) + Sughosh Ganu 12 (0.7%) + Masahisa Kojima 12 (0.7%) + Michael Trimarchi 11 (0.6%) + Paweł Anikiel 11 (0.6%) + Adam Ford 11 (0.6%) + Marcel Ziswiler 11 (0.6%) + Dave Gerlach 11 (0.6%) + Philip Oberfichtner 11 (0.6%) + T Karthik Reddy 11 (0.6%) + Bin Meng 9 (0.5%) + Tommaso Merciai 9 (0.5%) + Heiko Thiery 8 (0.5%) + Alper Nebi Yasak 8 (0.5%) + Philippe Schenker 8 (0.5%) + Vyacheslav Bocharov 8 (0.5%) + Michael Walle 7 (0.4%) + Peter Robinson 6 (0.4%) + Francesco Dolcini 6 (0.4%) + Mark Kettenis 6 (0.4%) + Neal Frager 6 (0.4%) + Robert Marko 6 (0.4%) + Jim Liu 6 (0.4%) + Tudor Ambarus 6 (0.4%) + Paweł Jarosz 5 (0.3%) + Dinesh Maniyam 5 (0.3%) + Ariel D'Alessandro 5 (0.3%) + Eugen Hristev 5 (0.3%) + Sergiu Moga 5 (0.3%) + Lukasz Majewski 5 (0.3%) + Clément Léger 5 (0.3%) + Huang Jianan 5 (0.3%) + Etienne Carriere 5 (0.3%) + Tien Fong Chee 4 (0.2%) + Chris Morgan 4 (0.2%) + Dario Binacchi 4 (0.2%) + Frieder Schrempf 4 (0.2%) + Janne Grunau 4 (0.2%) + Josua Mayer 4 (0.2%) + Vincent Stehlé 4 (0.2%) + Chris Packham 4 (0.2%) + Sai Pavan Boddu 4 (0.2%) + Neil Armstrong 4 (0.2%) + Jan Kiszka 4 (0.2%) + Andrew Davis 4 (0.2%) + Aswath Govindraju 4 (0.2%) + Masami Hiramatsu 4 (0.2%) + Durai Manickam KR 4 (0.2%) + Billy Tsai 4 (0.2%) + Angus Ainslie 4 (0.2%) + Jesse Taube 4 (0.2%) + Andrew Jeffery 4 (0.2%) + Hari Nagalla 4 (0.2%) + Icenowy Zheng 4 (0.2%) + Romain Naour 4 (0.2%) + Joel Stanley 3 (0.2%) + Andrey Zhizhikin 3 (0.2%) + Loic Poulain 3 (0.2%) + Rasmus Villemoes 3 (0.2%) + Vagrant Cascadian 3 (0.2%) + Ilias Apalodimas 3 (0.2%) + Eddie James 3 (0.2%) + Gireesh Hiremath 3 (0.2%) + Sam Shih 3 (0.2%) + Luca Ellero 3 (0.2%) + Tony Dinh 3 (0.2%) + Paul Barker 3 (0.2%) + Oleksandr Suvorov 3 (0.2%) + Igor Opaniuk 3 (0.2%) + Denys Drozdov 3 (0.2%) + SESA644425 3 (0.2%) + Vignesh Raghavendra 3 (0.2%) + Dzmitry Sankouski 3 (0.2%) + Jernej Skrabec 3 (0.2%) + Miquel Raynal 2 (0.1%) + Christian Gmeiner 2 (0.1%) + Nate Drude 2 (0.1%) + Rick Chen 2 (0.1%) + Yannick Fertre 2 (0.1%) + Peter Hoyes 2 (0.1%) + Dominic Rath 2 (0.1%) + Du Huanpeng 2 (0.1%) + Haolin Li 2 (0.1%) + Clement Faure 2 (0.1%) + Vladimir Oltean 2 (0.1%) + Christoph Niedermaier 2 (0.1%) + Paul Barbieri 1 (0.1%) + Hannes Schmelzer 1 (0.1%) + Teik Heng Chong 1 (0.1%) + Andrea Scian 1 (0.1%) + Jerome Forissier 1 (0.1%) + Emmanuel Vadot 1 (0.1%) + Nicolas Iooss 1 (0.1%) + Andrejs Cainikovs 1 (0.1%) + qianfan Zhao 1 (0.1%) + Yau Wai Gan 1 (0.1%) + Corentin LABBE 1 (0.1%) + Christophe Leroy 1 (0.1%) + Chunfeng Yun 1 (0.1%) + Camelia Groza 1 (0.1%) + Wasim Khan 1 (0.1%) + Georgi Vlaev 1 (0.1%) + Andrea zi0Black Cappa 1 (0.1%) + Leo Yu-Chi Liang 1 (0.1%) + Humberto Naves 1 (0.1%) + Sean Nyekjaer 1 (0.1%) + Christoph Fritz 1 (0.1%) + Sergei Antonov 1 (0.1%) + George Hilliard 1 (0.1%) + Ying-Chun Liu (PaulLiu) 1 (0.1%) + Vishal Patel 1 (0.1%) + Piyush Mehta 1 (0.1%) + Amit Kumar Mahapatra 1 (0.1%) + Jorge Ramirez-Ortiz 1 (0.1%) + Ralph Siemsen 1 (0.1%) + Ovidiu Panait 1 (0.1%) + John Keeping 1 (0.1%) + Oliver Graute 1 (0.1%) + Nicolas Heemeryck 1 (0.1%) + Stanley Chu 1 (0.1%) + Josef Schlehofer 1 (0.1%) + Stephen Carlson 1 (0.1%) + Yuantian Tang 1 (0.1%) + Hou Zhiqiang 1 (0.1%) + Kyle Evans 1 (0.1%) + Lyle Franklin 1 (0.1%) + Andrew Abbott 1 (0.1%) + Oleksii Titov 1 (0.1%) + Kshitiz Varshney 1 (0.1%) + Ian Ray 1 (0.1%) + Rogier Stam 1 (0.1%) + Diego Rondini 1 (0.1%) + Daniel Golle 1 (0.1%) + Peter Cai 1 (0.1%) + Alexandre Besnard 1 (0.1%) + Elmar Albert 1 (0.1%) + Arjan Minzinga Zijlstra 1 (0.1%) + Oleksii Bidnichenko 1 (0.1%) + Ji Luo 1 (0.1%) + Clark Wang 1 (0.1%) + Clément Péron 1 (0.1%) + Andy Shevchenko 1 (0.1%) + Hajo Noerenberg 1 (0.1%) + Ville Baillie 1 (0.1%) + Paul HENRYS 1 (0.1%) + Jérôme Carretero 1 (0.1%) + Dhananjay Phadke 1 (0.1%) + Ivan Vozvakhov 1 (0.1%) + Tom Saeger 1 (0.1%) + Adarsh Babu Kalepalli 1 (0.1%) + He Yong 1 (0.1%) + Samuel Dionne-Riel 1 (0.1%) + Felix Vietmeyer 1 (0.1%) + Yi Liu 1 (0.1%) + Angelo Dureghello 1 (0.1%) + Baltazár Radics 1 (0.1%) + Alexander Graf 1 (0.1%) + Mihai Sain 1 (0.1%) + Sai Krishna Potthuri 1 (0.1%) + weichangzheng 1 (0.1%) + ================================ ===== + + +.. table:: Developers with the most changed lines + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Aaron Williams 31473 (16.9%) + Tom Rini 25599 (13.7%) + Simon Glass 17972 (9.7%) + Marek Vasut 14707 (7.9%) + Tim Harvey 11858 (6.4%) + Sean Anderson 10323 (5.5%) + Samuel Holland 8705 (4.7%) + Stefan Roese 4394 (2.4%) + Johan Jonker 3712 (2.0%) + Jim Liu 3650 (2.0%) + Ariel D'Alessandro 3358 (1.8%) + Huang Jianan 3272 (1.8%) + Philippe Reynes 2587 (1.4%) + Philip Oberfichtner 2400 (1.3%) + Peng Fan 2365 (1.3%) + Pali Rohár 2277 (1.2%) + Paweł Jarosz 2092 (1.1%) + AKASHI Takahiro 1700 (0.9%) + Eugen Hristev 1532 (0.8%) + Gaurav Jain 1522 (0.8%) + Humberto Naves 1498 (0.8%) + Marek Behún 1353 (0.7%) + Andre Przywara 1318 (0.7%) + Paul Barker 1308 (0.7%) + Patrick Delaunay 1200 (0.6%) + Paweł Anikiel 1162 (0.6%) + Michal Simek 1065 (0.6%) + Patrice Chotard 1038 (0.6%) + Ashok Reddy Soma 1000 (0.5%) + Sughosh Ganu 954 (0.5%) + Denys Drozdov 942 (0.5%) + Neal Frager 894 (0.5%) + Angus Ainslie 804 (0.4%) + Heinrich Schuchardt 692 (0.4%) + weichangzheng 686 (0.4%) + Etienne Carriere 652 (0.4%) + Janne Grunau 648 (0.3%) + Marcel Ziswiler 636 (0.3%) + Andrew Scull 606 (0.3%) + Neil Armstrong 598 (0.3%) + Masahisa Kojima 567 (0.3%) + Adam Ford 524 (0.3%) + Billy Tsai 497 (0.3%) + Alper Nebi Yasak 440 (0.2%) + Fabio Estevam 420 (0.2%) + Michael Trimarchi 393 (0.2%) + Durai Manickam KR 378 (0.2%) + Vincent Stehlé 369 (0.2%) + Andrew Jeffery 359 (0.2%) + T Karthik Reddy 322 (0.2%) + Francesco Dolcini 306 (0.2%) + Ye Li 303 (0.2%) + Nate Drude 275 (0.1%) + Dave Gerlach 263 (0.1%) + Sergiu Moga 260 (0.1%) + Tony Dinh 256 (0.1%) + Sam Shih 252 (0.1%) + Ivan Vozvakhov 252 (0.1%) + Dzmitry Sankouski 244 (0.1%) + Tommaso Merciai 242 (0.1%) + Yannick Fertre 217 (0.1%) + Clément Léger 208 (0.1%) + Eddie James 202 (0.1%) + Ilias Apalodimas 190 (0.1%) + Philippe Schenker 189 (0.1%) + Adarsh Babu Kalepalli 174 (0.1%) + Igor Opaniuk 160 (0.1%) + Michael Walle 159 (0.1%) + Lukasz Majewski 157 (0.1%) + Josua Mayer 137 (0.1%) + Vyacheslav Bocharov 131 (0.1%) + Stanley Chu 131 (0.1%) + Gireesh Hiremath 127 (0.1%) + Hari Nagalla 126 (0.1%) + Leo Yu-Chi Liang 116 (0.1%) + Luca Ellero 107 (0.1%) + Chris Morgan 100 (0.1%) + Peter Hoyes 100 (0.1%) + Ji Luo 100 (0.1%) + George Hilliard 82 (0.0%) + Mark Kettenis 79 (0.0%) + Frieder Schrempf 78 (0.0%) + Heiko Thiery 72 (0.0%) + Icenowy Zheng 69 (0.0%) + Joel Stanley 66 (0.0%) + Diego Rondini 64 (0.0%) + Robert Marko 63 (0.0%) + Dinesh Maniyam 59 (0.0%) + Andrejs Cainikovs 49 (0.0%) + Samuel Dionne-Riel 48 (0.0%) + Mihai Sain 45 (0.0%) + Bin Meng 41 (0.0%) + Loic Poulain 40 (0.0%) + SESA644425 40 (0.0%) + Masami Hiramatsu 39 (0.0%) + Clement Faure 39 (0.0%) + He Yong 39 (0.0%) + Rasmus Villemoes 38 (0.0%) + Jernej Skrabec 37 (0.0%) + Jerome Forissier 35 (0.0%) + Paul HENRYS 31 (0.0%) + Jérôme Carretero 30 (0.0%) + Paul Barbieri 28 (0.0%) + Aswath Govindraju 27 (0.0%) + Jan Kiszka 26 (0.0%) + Jesse Taube 26 (0.0%) + Nicolas Heemeryck 23 (0.0%) + Ville Baillie 23 (0.0%) + Andrew Davis 22 (0.0%) + Kyle Evans 22 (0.0%) + Peter Robinson 21 (0.0%) + Romain Naour 21 (0.0%) + Peter Cai 21 (0.0%) + Hou Zhiqiang 20 (0.0%) + Clark Wang 20 (0.0%) + Sai Pavan Boddu 18 (0.0%) + Amit Kumar Mahapatra 18 (0.0%) + Elmar Albert 18 (0.0%) + Tudor Ambarus 16 (0.0%) + Oleksandr Suvorov 16 (0.0%) + Chris Packham 15 (0.0%) + Vagrant Cascadian 15 (0.0%) + Dominic Rath 13 (0.0%) + Andrea Scian 13 (0.0%) + Christoph Fritz 13 (0.0%) + Nicolas Iooss 12 (0.0%) + Miquel Raynal 11 (0.0%) + Vishal Patel 11 (0.0%) + Georgi Vlaev 9 (0.0%) + Dario Binacchi 8 (0.0%) + Teik Heng Chong 8 (0.0%) + Piyush Mehta 8 (0.0%) + Ovidiu Panait 8 (0.0%) + John Keeping 8 (0.0%) + Dhananjay Phadke 8 (0.0%) + Tom Saeger 8 (0.0%) + Tien Fong Chee 7 (0.0%) + Stephen Carlson 7 (0.0%) + Lyle Franklin 7 (0.0%) + Felix Vietmeyer 7 (0.0%) + Alexander Graf 7 (0.0%) + Andrey Zhizhikin 6 (0.0%) + Vignesh Raghavendra 6 (0.0%) + Christian Gmeiner 6 (0.0%) + Haolin Li 6 (0.0%) + Daniel Golle 6 (0.0%) + Rick Chen 5 (0.0%) + Ying-Chun Liu (PaulLiu) 5 (0.0%) + Rogier Stam 5 (0.0%) + Alexandre Besnard 5 (0.0%) + Angelo Dureghello 5 (0.0%) + Christoph Niedermaier 4 (0.0%) + Hannes Schmelzer 4 (0.0%) + Chunfeng Yun 4 (0.0%) + Kshitiz Varshney 4 (0.0%) + Yi Liu 4 (0.0%) + Baltazár Radics 4 (0.0%) + Christophe Leroy 3 (0.0%) + Wasim Khan 3 (0.0%) + Andrea zi0Black Cappa 3 (0.0%) + Sean Nyekjaer 3 (0.0%) + Andy Shevchenko 3 (0.0%) + Du Huanpeng 2 (0.0%) + Vladimir Oltean 2 (0.0%) + Camelia Groza 2 (0.0%) + Sergei Antonov 2 (0.0%) + Oliver Graute 2 (0.0%) + Yuantian Tang 2 (0.0%) + Oleksii Titov 2 (0.0%) + Arjan Minzinga Zijlstra 2 (0.0%) + Oleksii Bidnichenko 2 (0.0%) + Clément Péron 2 (0.0%) + Hajo Noerenberg 2 (0.0%) + Sai Krishna Potthuri 2 (0.0%) + Emmanuel Vadot 1 (0.0%) + qianfan Zhao 1 (0.0%) + Yau Wai Gan 1 (0.0%) + Corentin LABBE 1 (0.0%) + Jorge Ramirez-Ortiz 1 (0.0%) + Ralph Siemsen 1 (0.0%) + Josef Schlehofer 1 (0.0%) + Andrew Abbott 1 (0.0%) + Ian Ray 1 (0.0%) + ================================ ===== + + +.. table:: Developers with the most lines removed + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Tom Rini 19724 (34.9%) + Denys Drozdov 941 (1.7%) + Marcel Ziswiler 430 (0.8%) + Stefan Roese 331 (0.6%) + Marek Behún 309 (0.5%) + Adam Ford 247 (0.4%) + Tony Dinh 187 (0.3%) + Igor Opaniuk 134 (0.2%) + Leo Yu-Chi Liang 116 (0.2%) + Etienne Carriere 97 (0.2%) + Francesco Dolcini 30 (0.1%) + Rasmus Villemoes 19 (0.0%) + Hou Zhiqiang 16 (0.0%) + Frieder Schrempf 14 (0.0%) + John Keeping 8 (0.0%) + Romain Naour 5 (0.0%) + Ying-Chun Liu (PaulLiu) 5 (0.0%) + Ovidiu Panait 3 (0.0%) + Vignesh Raghavendra 3 (0.0%) + Andrea zi0Black Cappa 2 (0.0%) + Andy Shevchenko 2 (0.0%) + Peter Robinson 1 (0.0%) + Josef Schlehofer 1 (0.0%) + Ian Ray 1 (0.0%) + ================================ ===== + + +.. table:: Developers with the most signoffs (total 266) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Andre Przywara 50 (18.8%) + Michal Simek 43 (16.2%) + Stefan Roese 41 (15.4%) + Patrice Chotard 23 (8.6%) + Peng Fan 17 (6.4%) + Marcel Ziswiler 16 (6.0%) + Neil Armstrong 9 (3.4%) + Priyanka Jain 7 (2.6%) + Michael Trimarchi 6 (2.3%) + Johan Jonker 5 (1.9%) + Tom Rini 4 (1.5%) + Tom Warren 4 (1.5%) + T Karthik Reddy 4 (1.5%) + Stanley Chu 4 (1.5%) + Samuel Holland 4 (1.5%) + Yau Wai Gan 2 (0.8%) + Jagan Teki 2 (0.8%) + Biwen Li 2 (0.8%) + Ye Li 2 (0.8%) + Ilias Apalodimas 2 (0.8%) + Heinrich Schuchardt 2 (0.8%) + Ariel D'Alessandro 2 (0.8%) + Amit Kumar Mahapatra 1 (0.4%) + Wolfgang Wallner 1 (0.4%) + Alexandru M Stan 1 (0.4%) + Kever Yang 1 (0.4%) + Chee Hong Ang 1 (0.4%) + Yifan Gu 1 (0.4%) + Horia Geantă 1 (0.4%) + Richard Weinberger 1 (0.4%) + Anatolij Gustschin 1 (0.4%) + Gabriel Fernandez 1 (0.4%) + Christian Gmeiner 1 (0.4%) + Sai Krishna Potthuri 1 (0.4%) + Josua Mayer 1 (0.4%) + Masahisa Kojima 1 (0.4%) + Ashok Reddy Soma 1 (0.4%) + ================================ ===== + + +.. table:: Developers with the most reviews (total 871) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Simon Glass 100 (11.5%) + Fabio Estevam 69 (7.9%) + Stefan Roese 67 (7.7%) + Ramon Fried 65 (7.5%) + Kever Yang 63 (7.2%) + Priyanka Jain 53 (6.1%) + Patrice Chotard 38 (4.4%) + Patrick Delaunay 38 (4.4%) + Heinrich Schuchardt 35 (4.0%) + Andre Przywara 31 (3.6%) + Peng Fan 26 (3.0%) + Bin Meng 25 (2.9%) + Alper Nebi Yasak 23 (2.6%) + Tom Rini 21 (2.4%) + Marek Behún 21 (2.4%) + Jaehoon Chung 19 (2.2%) + Ye Li 13 (1.5%) + Marek Vasut 12 (1.4%) + Heiko Schocher 9 (1.0%) + Tien Fong Chee 9 (1.0%) + Sean Anderson 9 (1.0%) + Vladimir Oltean 8 (0.9%) + Ilias Apalodimas 7 (0.8%) + Leo Yu-Chi Liang 6 (0.7%) + Mark Kettenis 6 (0.7%) + Neil Armstrong 5 (0.6%) + Samuel Holland 5 (0.6%) + Jagan Teki 5 (0.6%) + Masami Hiramatsu 5 (0.6%) + Gaurav Jain 5 (0.6%) + Christian Gmeiner 4 (0.5%) + Chia-Wei Wang 4 (0.5%) + Claudiu Beznea 4 (0.5%) + Pali Rohár 4 (0.5%) + Ashok Reddy Soma 3 (0.3%) + Francesco Dolcini 3 (0.3%) + Nishanth Menon 3 (0.3%) + Stefano Babic 3 (0.3%) + Holger Brunck 3 (0.3%) + Miquel Raynal 3 (0.3%) + Michael Walle 3 (0.3%) + Michal Simek 2 (0.2%) + Michael Trimarchi 2 (0.2%) + Tony Dinh 2 (0.2%) + Frieder Schrempf 2 (0.2%) + Minkyu Kang 2 (0.2%) + Rick Chen 2 (0.2%) + Tudor Ambarus 2 (0.2%) + Joel Stanley 2 (0.2%) + Tim Harvey 2 (0.2%) + Marcel Ziswiler 1 (0.1%) + John Keeping 1 (0.1%) + Peter Robinson 1 (0.1%) + Peter Collingbourne 1 (0.1%) + Pankaj Gupta 1 (0.1%) + Han Xu 1 (0.1%) + Radhey Shyam Pandey 1 (0.1%) + Philipp Tomsich 1 (0.1%) + Thomas Chou 1 (0.1%) + Kristian Amlie 1 (0.1%) + Qu Wenruo 1 (0.1%) + Jacky Bai 1 (0.1%) + Ley Foon Tan 1 (0.1%) + Dylan Hung 1 (0.1%) + Andrey Zhizhikin 1 (0.1%) + Kshitiz Varshney 1 (0.1%) + Andrew Scull 1 (0.1%) + Janne Grunau 1 (0.1%) + ================================ ===== + + +.. table:: Developers with the most test credits (total 66) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Tim Harvey 15 (22.7%) + Patrice Chotard 5 (7.6%) + Mark Kettenis 4 (6.1%) + Adam Ford 4 (6.1%) + Fabio Estevam 3 (4.5%) + Marek Vasut 3 (4.5%) + Marcel Ziswiler 3 (4.5%) + Derald D. Woods 3 (4.5%) + Pali Rohár 2 (3.0%) + Ariel D'Alessandro 2 (3.0%) + Heiko Thiery 2 (3.0%) + Andre Przywara 1 (1.5%) + Chia-Wei Wang 1 (1.5%) + Stefano Babic 1 (1.5%) + Frieder Schrempf 1 (1.5%) + John Keeping 1 (1.5%) + Peter Robinson 1 (1.5%) + Peter Collingbourne 1 (1.5%) + Kshitiz Varshney 1 (1.5%) + Janne Grunau 1 (1.5%) + Josua Mayer 1 (1.5%) + Ying-Chun Liu (PaulLiu) 1 (1.5%) + Peter Griffin 1 (1.5%) + Tatsuhiko Yasumatsu 1 (1.5%) + Jincheng Wang 1 (1.5%) + Gabriel Hojda 1 (1.5%) + Arti Zirk 1 (1.5%) + Merlijn Wajer 1 (1.5%) + Soeren Moch 1 (1.5%) + Raffaele RECALCATI 1 (1.5%) + Angus Ainslie 1 (1.5%) + ================================ ===== + + +.. table:: Developers who gave the most tested-by credits (total 67) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Marek Vasut 14 (20.9%) + Fabio Estevam 6 (9.0%) + Michael Trimarchi 6 (9.0%) + Heiko Thiery 4 (6.0%) + Adam Ford 3 (4.5%) + Heinrich Schuchardt 3 (4.5%) + Tom Rini 3 (4.5%) + Pali Rohár 2 (3.0%) + Andre Przywara 2 (3.0%) + Frieder Schrempf 2 (3.0%) + Janne Grunau 2 (3.0%) + Miquel Raynal 2 (3.0%) + Masahisa Kojima 2 (3.0%) + Tim Harvey 1 (1.5%) + Mark Kettenis 1 (1.5%) + Angus Ainslie 1 (1.5%) + Simon Glass 1 (1.5%) + Peng Fan 1 (1.5%) + Marek Behún 1 (1.5%) + Ye Li 1 (1.5%) + Gaurav Jain 1 (1.5%) + Joel Stanley 1 (1.5%) + Rasmus Villemoes 1 (1.5%) + Christoph Niedermaier 1 (1.5%) + Peter Cai 1 (1.5%) + Jerome Forissier 1 (1.5%) + Andrejs Cainikovs 1 (1.5%) + Nate Drude 1 (1.5%) + AKASHI Takahiro 1 (1.5%) + ================================ ===== + + +.. table:: Developers with the most report credits (total 19) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Tom Rini 2 (10.5%) + Patrick Delaunay 2 (10.5%) + Fabio Estevam 1 (5.3%) + Tim Harvey 1 (5.3%) + Tatsuhiko Yasumatsu 1 (5.3%) + Jincheng Wang 1 (5.3%) + Gabriel Hojda 1 (5.3%) + Nishanth Menon 1 (5.3%) + Milan P. Stanić 1 (5.3%) + Yun-Chien Yu 1 (5.3%) + Nicolas Bidron 1 (5.3%) + Balaji Anandapadmanaban 1 (5.3%) + David Mosberger-Tang 1 (5.3%) + Jesse Villarreal 1 (5.3%) + Suman Anna 1 (5.3%) + Vagrant Cascadian 1 (5.3%) + Chris Morgan 1 (5.3%) + ================================ ===== + + +.. table:: Developers who gave the most report credits (total 19) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + Simon Glass 5 (26.3%) + Andre Przywara 3 (15.8%) + Heinrich Schuchardt 2 (10.5%) + Miquel Raynal 2 (10.5%) + Aswath Govindraju 2 (10.5%) + Tom Rini 1 (5.3%) + Fabio Estevam 1 (5.3%) + Samuel Holland 1 (5.3%) + Tudor Ambarus 1 (5.3%) + Chunfeng Yun 1 (5.3%) + ================================ ===== + + +.. table:: Top changeset contributors by employer + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + (Unknown) 669 (39.4%) + Google, Inc. 168 (9.9%) + Konsulko Group 164 (9.7%) + DENX Software Engineering 147 (8.7%) + NXP 112 (6.6%) + Linaro 80 (4.7%) + ST Microelectronics 53 (3.1%) + AMD 51 (3.0%) + Marvell 40 (2.4%) + Xilinx 39 (2.3%) + ARM 34 (2.0%) + Toradex 33 (1.9%) + Texas Instruments 27 (1.6%) + Amarula Solutions 24 (1.4%) + Intel 12 (0.7%) + Semihalf Embedded Systems 11 (0.6%) + Bootlin 7 (0.4%) + BayLibre SAS 5 (0.3%) + Collabora Ltd. 5 (0.3%) + Siemens 4 (0.2%) + Debian.org 3 (0.2%) + IBM 3 (0.2%) + Wind River 1 (0.1%) + Dave S.r.l. 1 (0.1%) + General Electric 1 (0.1%) + Oracle 1 (0.1%) + Rockchip 1 (0.1%) + ================================ ===== + + +.. table:: Top lines changed by employer + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + (Unknown) 63402 (34.0%) + Marvell 31473 (16.9%) + Konsulko Group 25599 (13.7%) + DENX Software Engineering 22078 (11.9%) + Google, Inc. 18578 (10.0%) + NXP 4382 (2.4%) + Linaro 4183 (2.2%) + Collabora Ltd. 3358 (1.8%) + ST Microelectronics 2455 (1.3%) + Xilinx 2277 (1.2%) + Toradex 2140 (1.1%) + ARM 1787 (1.0%) + Semihalf Embedded Systems 1162 (0.6%) + AMD 1061 (0.6%) + Amarula Solutions 643 (0.3%) + BayLibre SAS 599 (0.3%) + Texas Instruments 453 (0.2%) + Bootlin 219 (0.1%) + IBM 202 (0.1%) + Intel 78 (0.0%) + Siemens 26 (0.0%) + Debian.org 15 (0.0%) + Dave S.r.l. 13 (0.0%) + Wind River 8 (0.0%) + Oracle 8 (0.0%) + Rockchip 4 (0.0%) + General Electric 1 (0.0%) + ================================ ===== + + +.. table:: Employers with the most signoffs (total 266) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + ARM 50 (18.8%) + DENX Software Engineering 42 (15.8%) + Xilinx 39 (14.7%) + NXP 29 (10.9%) + ST Microelectronics 24 (9.0%) + (Unknown) 21 (7.9%) + Toradex 16 (6.0%) + AMD 11 (4.1%) + BayLibre SAS 9 (3.4%) + Amarula Solutions 8 (3.0%) + Konsulko Group 4 (1.5%) + NVidia 4 (1.5%) + Linaro 3 (1.1%) + Intel 3 (1.1%) + Collabora Ltd. 2 (0.8%) + Rockchip 1 (0.4%) + ================================ ===== + + +.. table:: Employers with the most hackers (total 185) + :widths: auto + + ================================ ===== + Name Count + ================================ ===== + (Unknown) 102 (55.1%) + NXP 12 (6.5%) + Linaro 10 (5.4%) + Xilinx 9 (4.9%) + Toradex 7 (3.8%) + Texas Instruments 6 (3.2%) + DENX Software Engineering 5 (2.7%) + Intel 5 (2.7%) + ARM 3 (1.6%) + ST Microelectronics 3 (1.6%) + Amarula Solutions 3 (1.6%) + AMD 2 (1.1%) + BayLibre SAS 2 (1.1%) + Google, Inc. 2 (1.1%) + Bootlin 2 (1.1%) + Konsulko Group 1 (0.5%) + Collabora Ltd. 1 (0.5%) + Rockchip 1 (0.5%) + Marvell 1 (0.5%) + Semihalf Embedded Systems 1 (0.5%) + IBM 1 (0.5%) + Siemens 1 (0.5%) + Debian.org 1 (0.5%) + Dave S.r.l. 1 (0.5%) + Wind River 1 (0.5%) + Oracle 1 (0.5%) + General Electric 1 (0.5%) + ================================ ===== From 9897350c52196736cce1a601b172fb5ea14a75c1 Mon Sep 17 00:00:00 2001 From: Masahisa Kojima Date: Sun, 19 Jun 2022 13:55:59 +0900 Subject: [PATCH 18/21] efi_loader: expose END device path node This commit exposes the END device path node. Signed-off-by: Masahisa Kojima Reviewed-by: Heinrich Schuchardt --- include/efi_loader.h | 3 +++ lib/efi_loader/efi_device_path.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/efi_loader.h b/include/efi_loader.h index 5b41985244..3a63a1f75f 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -802,6 +802,9 @@ ssize_t efi_dp_check_length(const struct efi_device_path *dp, (((_dp)->type == DEVICE_PATH_TYPE_##_type) && \ ((_dp)->sub_type == DEVICE_PATH_SUB_TYPE_##_subtype)) +/* template END node: */ +extern const struct efi_device_path END; + /* Indicate supported runtime services */ efi_status_t efi_init_runtime_supported(void); diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 2493d74326..ebffb77122 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -30,7 +30,7 @@ const efi_guid_t efi_guid_virtio_dev = U_BOOT_VIRTIO_DEV_GUID; #endif /* template END node: */ -static const struct efi_device_path END = { +const struct efi_device_path END = { .type = DEVICE_PATH_TYPE_END, .sub_type = DEVICE_PATH_SUB_TYPE_END, .length = sizeof(END), From 868353daa379849953ae30f400536ff61624de54 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sun, 10 Jul 2022 15:46:57 +0200 Subject: [PATCH 19/21] efi_loader: memory leak in efi_set_bootdev() efi_dp_str() allocates memory which should be released after use. Use %pD printf code. Adjust message wording. Fixes: d837cb1e3b6b ("efi: Add debugging to efi_set_bootdev()") Signed-off-by: Heinrich Schuchardt --- cmd/bootefi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 37ce659fa1..8ab0ff5a64 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -119,9 +119,9 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path, efi_free_pool(image_tmp); } bootefi_image_path = image; - log_debug("- recorded device %ls\n", efi_dp_str(device)); + log_debug("- boot device %pD\n", device); if (image) - log_debug("- and image %ls\n", efi_dp_str(image)); + log_debug("- image %pD\n", image); } else { log_debug("- efi_dp_from_name() failed, err=%lx\n", ret); efi_clear_bootdev(); From a8d52f9a9b7be90decc6eabae39ec360bda5cd15 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Tue, 12 Jul 2022 08:11:53 +0200 Subject: [PATCH 20/21] efi_loader: suppress executable stack warning When linking EFI binaries the linker emits: ld.bfd: warning: lib/efi_loader/efi_crt0.o: missing .note.GNU-stack section implies executable stack Suppress the warning. Signed-off-by: Heinrich Schuchardt --- scripts/Makefile.lib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index c0a5bb9add..8e13bf2b98 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -426,8 +426,8 @@ $(obj)/%.efi: $(obj)/%_efi.so $(call cmd,efi_objcopy) quiet_cmd_efi_ld = LD $@ -cmd_efi_ld = $(LD) -nostdlib -znocombreloc -T $(EFI_LDS_PATH) -shared \ - -Bsymbolic -znorelro -s $^ -o $@ +cmd_efi_ld = $(LD) -nostdlib -zexecstack -znocombreloc -T $(EFI_LDS_PATH) \ + -shared -Bsymbolic -znorelro -s $^ -o $@ EFI_LDS_PATH = $(srctree)/arch/$(ARCH)/lib/$(EFI_LDS) From a093d72e628a798238269eb77850d57ee50198bb Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Tue, 12 Jul 2022 12:38:42 +0200 Subject: [PATCH 21/21] MAINTAINERS: add Ilias Apalodimas to EFI PAYLOAD as co-maintainer Ilias has since long been reviewing UEFI patches. Now he has volunteered to assist me in maintaining the sub-system. Cc: Ilias Apalodimas Signed-off-by: Heinrich Schuchardt Acked-by: Ilias Apalodimas --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 1baa038da7..2515ce7da3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -827,6 +827,7 @@ F: test/dm/efi_media.c EFI PAYLOAD M: Heinrich Schuchardt +M: Ilias Apalodimas S: Maintained T: git https://source.denx.de/u-boot/custodians/u-boot-efi.git F: doc/api/efi.rst