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 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(); 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%) + ================================ ===== 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) diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 759dc2d12f..353ea8b2f7 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -1,116 +1,666 @@ -.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 image for U-Boot +mkimage \- generate images for U-Boot .SH SYNOPSIS -.B mkimage -.RB [ \-T " \fItype\fP] " \-l " [\fIuimage file name\fP]" - -.B mkimage -.RB [\fIoptions\fP] " \-f [" "image tree source file" "]" " [" "uimage file name" "]" - -.B mkimage -.RB [\fIoptions\fP] " \-F [" "uimage file name" "]" - -.B mkimage -.RB [\fIoptions\fP] " (legacy mode)" - -.SH "DESCRIPTION" +.SY mkimage +.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. - -.B mkimage -supports two different formats: - -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 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. - +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 Create old legacy image: - +.B mkimage +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 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. +. +.SH OPTIONS +. +.SS General options +. .TP -.BI "\-A [" "architecture" "]" -Set architecture. Pass \-h as the architecture to see the list of supported architectures. - +.B \-h +.TQ +.B \-\-help +Print a help message and exit. +. .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. - +.B \-l +.TQ +.B \-\-list +.B mkimage +lists the information contained in the header of an existing U-Boot image. +. .TP -.BI "\-T [" "image type" "]" -Set image type. -Pass \-h as the image to see the list of supported image type. - +.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 "\-C [" "compression type" "]" -Set compression type. -Pass \-h as the compression to see the list of supported compression type. - +.BI \-T " image-type" +.TQ +.BI \-\-type " image-type" +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 -.BI "\-a [" "load address" "]" -Set load address with a hex number. - +.B \-q +.TQ +.B \-\-quiet +Quiet. Don't print the image header. +. .TP -.BI "\-e [" "entry point" "]" -Set entry point with a hex number. - +.B \-v +.TQ +.B \-\-verbose +Verbose. Print file names as they are added to the image. +. .TP -.BI "\-l" -List the contents of an image. - +.B \-V +.TQ +.B \-\-version +Print version information and exit. +. +.SS General image-creation options +. .TP -.BI "\-n [" "image name" "]" -Set image name to 'image name'. - +.BI \-A " architecture" +.TQ +.BI \-\-architecture " architecture" +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 "\-R [" "secondary image name" "]" -Some image types support a second image for additional data. For these types, -use \-R to specify this second image. +.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. +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" +.TQ +.BI \-\-compression " 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" +.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. +.I entry-point +will be interpreted as a hexadecimal number. +. +.TP +.BI \-n " primary-configuration" +.TQ +.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-configuration" +.TQ +.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" +.TQ +.BI \-\-image " 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 +.TQ +.B \-\-xip +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 +. +.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) +for documentation of possible options. If +.B \-D +is absent, it defaults to +.BR "\-I dts \-O dtb \-p 500" . +. +.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 +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" +.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 +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 +\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 +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 +.TQ +.B \-\-update +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" +.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 +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" +.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 +verification. Typically the file here is the device tree binary used by +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" . +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 " 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 +.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 +.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, +when converting the source .its to the binary .fit file. This corresponds to +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 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 -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 +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 -.sp +.RE +.P where .I address and @@ -121,220 +671,109 @@ to .I address 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 -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. - -.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. - -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 -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. - -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 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 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 - -.SH HOMEPAGE -http://www.denx.de/wiki/U-Boot/WebHome -.PP -.SH AUTHOR -This manual page was written by Nobuhiro Iwamatsu -and Wolfgang Denk . It was updated for image signing by -Simon Glass . +.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 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 diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst index 28a8952b75..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 @@ -390,7 +399,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 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), 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) 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);