1# 2# For a description of the syntax of this configuration file, 3# see the file Documentation/kbuild/kconfig-language.txt in the 4# Linux kernel source tree. 5# 6mainmenu "U-Boot $(UBOOTVERSION) Configuration" 7 8comment "Compiler: $(CC_VERSION_TEXT)" 9 10source "scripts/Kconfig.include" 11 12# Allow defaults in arch-specific code to override any given here 13source "arch/Kconfig" 14 15menu "General setup" 16 17config BROKEN 18 bool 19 help 20 This option cannot be enabled. It is used as dependency 21 for broken and incomplete features. 22 23config DEPRECATED 24 bool 25 help 26 This option cannot be enabled. It it used as a dependency for 27 code that relies on deprecated features that will be removed and 28 the conversion deadline has passed. 29 30config LOCALVERSION 31 string "Local version - append to U-Boot release" 32 help 33 Append an extra string to the end of your U-Boot version. 34 This will show up in your boot log, for example. 35 The string you set here will be appended after the contents of 36 any files with a filename matching localversion* in your 37 object and source tree, in that order. Your total string can 38 be a maximum of 64 characters. 39 40config LOCALVERSION_AUTO 41 bool "Automatically append version information to the version string" 42 default y 43 help 44 This will try to automatically determine if the current tree is a 45 release tree by looking for Git tags that belong to the current 46 top of tree revision. 47 48 A string of the format -gxxxxxxxx will be added to the localversion 49 if a Git-based tree is found. The string generated by this will be 50 appended after any matching localversion* files, and after the value 51 set in CONFIG_LOCALVERSION. 52 53 (The actual string used here is the first eight characters produced 54 by running the command: 55 56 $ git rev-parse --verify HEAD 57 58 which is done within the script "scripts/setlocalversion".) 59 60config CC_IS_GCC 61 def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc) 62 63config GCC_VERSION 64 int 65 default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC 66 default 0 67 68config CC_IS_CLANG 69 def_bool $(success,$(CC) --version | head -n 1 | grep -q clang) 70 71config CLANG_VERSION 72 int 73 default $(shell,$(srctree)/scripts/clang-version.sh $(CC)) 74 75choice 76 prompt "Optimization level" 77 default CC_OPTIMIZE_FOR_SIZE 78 79config CC_OPTIMIZE_FOR_SIZE 80 bool "Optimize for size" 81 help 82 Enabling this option will pass "-Os" to gcc, resulting in a smaller 83 U-Boot image. 84 85 This option is enabled by default for U-Boot. 86 87config CC_OPTIMIZE_FOR_SPEED 88 bool "Optimize for speed" 89 help 90 Enabling this option will pass "-O2" to gcc, resulting in a faster 91 U-Boot image. 92 93config CC_OPTIMIZE_FOR_DEBUG 94 bool "Optimize for debugging" 95 help 96 Enabling this option will pass "-Og" to gcc, enabling optimizations 97 which don't interfere with debugging. 98 99endchoice 100 101config OPTIMIZE_INLINING 102 bool "Allow compiler to uninline functions marked 'inline' in full U-Boot" 103 help 104 This option determines if U-Boot forces gcc to inline the functions 105 developers have marked 'inline'. Doing so takes away freedom from gcc to 106 do what it thinks is best, which is desirable in some cases for size 107 reasons. 108 109config SPL_OPTIMIZE_INLINING 110 bool "Allow compiler to uninline functions marked 'inline' in SPL" 111 depends on SPL 112 help 113 This option determines if U-Boot forces gcc to inline the functions 114 developers have marked 'inline'. Doing so takes away freedom from gcc to 115 do what it thinks is best, which is desirable in some cases for size 116 reasons. 117 118config ARCH_SUPPORTS_LTO 119 bool 120 121config LTO 122 bool "Enable Link Time Optimizations" 123 depends on ARCH_SUPPORTS_LTO 124 help 125 This option enables Link Time Optimization (LTO), a mechanism which 126 allows the compiler to optimize between different compilation units. 127 128 This can optimize away dead code paths, resulting in smaller binary 129 size (if CC_OPTIMIZE_FOR_SIZE is enabled). 130 131 This option is not available for every architecture and may 132 introduce bugs. 133 134 Currently, when compiling with GCC, due to a weird bug regarding 135 jobserver, the final linking will not respect make's --jobs argument. 136 Instead all available processors will be used (as reported by the 137 nproc command). 138 139 If unsure, say n. 140 141config TPL_OPTIMIZE_INLINING 142 bool "Allow compiler to uninline functions marked 'inline' in TPL" 143 depends on TPL 144 help 145 This option determines if U-Boot forces gcc to inline the functions 146 developers have marked 'inline'. Doing so takes away freedom from gcc to 147 do what it thinks is best, which is desirable in some cases for size 148 reasons. 149 150config CC_COVERAGE 151 bool "Enable code coverage analysis" 152 depends on SANDBOX 153 help 154 Enabling this option will pass "--coverage" to gcc to compile 155 and link code instrumented for coverage analysis. 156 157config ASAN 158 bool "Enable AddressSanitizer" 159 depends on SANDBOX 160 help 161 Enables AddressSanitizer to discover out-of-bounds accesses, 162 use-after-free, double-free and memory leaks. 163 164config FUZZ 165 bool "Enable fuzzing" 166 depends on CC_IS_CLANG 167 depends on DM_FUZZING_ENGINE 168 select ASAN 169 help 170 Enables the fuzzing infrastructure to generate fuzzing data and run 171 fuzz tests. 172 173config CC_HAS_ASM_INLINE 174 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 175 176config XEN 177 bool "Select U-Boot be run as a bootloader for XEN Virtual Machine" 178 depends on ARM64 179 select SSCANF 180 help 181 Enabling this option will make U-Boot be run as a bootloader 182 for XEN [1] Virtual Machine. 183 184 Xen is a virtual machine monitor (VMM) or a type-1 hypervisor with support 185 for para-virtualization. Xen can organize the safe execution of several 186 virtual machines on the same physical system with performance close to 187 native. It is used as the basis for a number of different commercial and 188 open source applications, such as: server virtualization, Infrastructure 189 as a Service (IaaS), desktop virtualization, security applications, 190 embedded and hardware appliances. 191 Xen has a special VM called Domain-0 that runs the Dom0 kernel and allows 192 Xen to use the device drivers for the Domain-0 kernel by default. 193 194 [1] - https://xenproject.org/ 195 196config ENV_VARS_UBOOT_CONFIG 197 bool "Add arch, board, vendor and soc variables to default environment" 198 help 199 Define this in order to add variables describing the 200 U-Boot build configuration to the default environment. 201 These will be named arch, cpu, board, vendor, and soc. 202 Enabling this option will cause the following to be defined: 203 - CONFIG_SYS_ARCH 204 - CONFIG_SYS_CPU 205 - CONFIG_SYS_BOARD 206 - CONFIG_SYS_VENDOR 207 - CONFIG_SYS_SOC 208 209config NR_DRAM_BANKS 210 int "Number of DRAM banks" 211 default 1 if ARCH_SUNXI || ARCH_OWL 212 default 4 213 help 214 This defines the number of DRAM banks. 215 216config SYS_BOOT_GET_CMDLINE 217 bool "Enable kernel command line setup" 218 help 219 Enables allocating and saving kernel cmdline in space between 220 "bootm_low" and "bootm_low" + BOOTMAPSZ. 221 222config SYS_BARGSIZE 223 int "Size of kernel command line buffer in bytes" 224 depends on SYS_BOOT_GET_CMDLINE 225 default 512 226 help 227 Buffer size for Boot Arguments which are passed to the application 228 (usually a Linux kernel) when it is booted 229 230config SYS_BOOT_GET_KBD 231 bool "Enable kernel board information setup" 232 help 233 Enables allocating and saving a kernel copy of the bd_info in 234 space between "bootm_low" and "bootm_low" + BOOTMAPSZ. 235 236config HAS_CUSTOM_SYS_INIT_SP_ADDR 237 bool "Use a custom location for the initial stack pointer address" 238 depends on ARC || (ARM && !INIT_SP_RELATIVE) || MIPS || PPC || RISCV 239 default y if TFABOOT 240 help 241 Typically, we use an initial stack pointer address that is calculated 242 by taking the statically defined CFG_SYS_INIT_RAM_ADDR, adding the 243 statically defined CFG_SYS_INIT_RAM_SIZE and then subtracting the 244 build-time constant of GENERATED_GBL_DATA_SIZE. On MIPS a different 245 but statica calculation is performed. However, some platforms will 246 take a different approach. Say Y here to define the address statically 247 instead. 248 249config CUSTOM_SYS_INIT_SP_ADDR 250 hex "Static location for the initial stack pointer" 251 depends on HAS_CUSTOM_SYS_INIT_SP_ADDR 252 default TEXT_BASE if TFABOOT 253 254config SYS_MALLOC_F 255 bool "Enable malloc() pool before relocation" 256 default y if DM 257 258 help 259 Before relocation, memory is very limited on many platforms. Still, 260 we can provide a small malloc() pool if needed. Driver model in 261 particular needs this to operate, so that it can allocate the 262 initial serial device and any others that are needed. 263 264config SYS_MALLOC_F_LEN 265 hex "Size of malloc() pool before relocation" 266 depends on SYS_MALLOC_F 267 default 0x400 if M68K || PPC || ROCKCHIP_PX30 || ROCKCHIP_RK3036 || \ 268 ROCKCHIP_RK3308 || ROCKCHIP_RV1108 269 default 0x600 if ARCH_ZYNQMP_R5 || ARCH_ZYNQMP 270 default 0x800 if ARCH_ZYNQ || ROCKCHIP_RK3128 || ROCKCHIP_RK3188 || \ 271 ROCKCHIP_RK322X || X86 272 default 0x1000 if ARCH_MESON || ARCH_BMIPS || ARCH_MTMIPS 273 default 0x1800 if ARCH_TEGRA 274 default 0x4000 if SANDBOX || RISCV || ARCH_APPLE || ROCKCHIP_RK3368 || \ 275 ROCKCHIP_RK3399 276 default 0x8000 if RCAR_GEN3 277 default 0x10000 if ARCH_IMX8 || ARCH_IMX8M 278 default 0x2000 279 help 280 Before relocation, memory is very limited on many platforms. Still, 281 we can provide a small malloc() pool if needed. Driver model in 282 particular needs this to operate, so that it can allocate the 283 initial serial device and any others that are needed. 284 285config SYS_MALLOC_LEN 286 hex "Define memory for Dynamic allocation" 287 default 0x4000000 if SANDBOX 288 default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON 289 default 0x200000 if ARCH_BMIPS || X86 290 default 0x4020000 if SUNXI_MINIMUM_DRAM_MB >= 256 291 default 0x220000 if SUNXI_MINIMUM_DRAM_MB >= 64 292 default 0x120000 if SUNXI_MINIMUM_DRAM_MB >= 32 293 default 0x400000 294 help 295 This defines memory to be allocated for Dynamic allocation 296 TODO: Use for other architectures 297 298config SPL_SYS_MALLOC_F_LEN 299 hex "Size of malloc() pool in SPL" 300 depends on SYS_MALLOC_F && SPL 301 default 0 if !SPL_FRAMEWORK 302 default 0x2800 if RCAR_GEN3 303 default 0x2000 if IMX8MQ 304 default SYS_MALLOC_F_LEN 305 help 306 In SPL memory is very limited on many platforms. Still, 307 we can provide a small malloc() pool if needed. Driver model in 308 particular needs this to operate, so that it can allocate the 309 initial serial device and any others that are needed. 310 311 It is possible to enable CFG_SYS_SPL_MALLOC_START to start a new 312 malloc() region in SDRAM once it is inited. 313 314config TPL_SYS_MALLOC_F_LEN 315 hex "Size of malloc() pool in TPL" 316 depends on SYS_MALLOC_F && TPL 317 default SPL_SYS_MALLOC_F_LEN 318 help 319 In TPL memory is very limited on many platforms. Still, 320 we can provide a small malloc() pool if needed. Driver model in 321 particular needs this to operate, so that it can allocate the 322 initial serial device and any others that are needed. 323 324config VALGRIND 325 bool "Inform valgrind about memory allocations" 326 depends on !RISCV 327 help 328 Valgrind is an instrumentation framework for building dynamic analysis 329 tools. In particular, it may be used to detect memory management bugs 330 in U-Boot. It relies on knowing when heap blocks are allocated in 331 order to give accurate results. This happens automatically for 332 standard allocator functions provided by the host OS. However, this 333 doesn't automatically happen for U-Boot's malloc implementation. 334 335 Enable this option to annotate U-Boot's malloc implementation so that 336 it can be handled accurately by Valgrind. If you aren't planning on 337 using valgrind to debug U-Boot, say 'n'. 338 339config VPL_SYS_MALLOC_F_LEN 340 hex "Size of malloc() pool in VPL before relocation" 341 depends on SYS_MALLOC_F && VPL 342 default SYS_MALLOC_F_LEN 343 help 344 Before relocation, memory is very limited on many platforms. Still, 345 we can provide a small malloc() pool if needed. Driver model in 346 particular needs this to operate, so that it can allocate the 347 initial serial device and any others that are needed. 348 349menuconfig EXPERT 350 bool "Configure standard U-Boot features (expert users)" 351 default y 352 help 353 This option allows certain base U-Boot options and settings 354 to be disabled or tweaked. This is for specialized 355 environments which can tolerate a "non-standard" U-Boot. 356 Use this only if you really know what you are doing. 357 358if EXPERT 359 config SYS_MALLOC_CLEAR_ON_INIT 360 bool "Init with zeros the memory reserved for malloc (slow)" 361 default y 362 help 363 This setting is enabled by default. The reserved malloc 364 memory is initialized with zeros, so first malloc calls 365 will return the pointer to the zeroed memory. But this 366 slows the boot time. 367 368 It is recommended to disable it, when CONFIG_SYS_MALLOC_LEN 369 value, has more than few MiB, e.g. when uses bzip2 or bmp logo. 370 Then the boot time can be significantly reduced. 371 Warning: 372 When disabling this, please check if malloc calls, maybe 373 should be replaced by calloc - if one expects zeroed memory. 374 375config SYS_MALLOC_DEFAULT_TO_INIT 376 bool "Default malloc to init while reserving the memory for it" 377 help 378 It may happen that one needs to move the dynamic allocation 379 from one to another memory range, eg. when moving the malloc 380 from the limited static to a potentially large dynamic (DDR) 381 memory. 382 383 If so then on top of setting the updated memory aside one 384 needs to bring the malloc init. 385 386 If such a scenario is sought choose yes. 387 388config TOOLS_DEBUG 389 bool "Enable debug information for tools" 390 help 391 Enable generation of debug information for tools such as mkimage. 392 This can be used for debugging purposes. With debug information 393 it is possible to set breakpoints on particular lines, single-step 394 debug through the source code, etc. 395 396endif # EXPERT 397 398config PHYS_64BIT 399 bool "64bit physical address support" 400 select FDT_64BIT 401 help 402 Say Y here to support 64bit physical memory address. 403 This can be used not only for 64bit SoCs, but also for 404 large physical address extension on 32bit SoCs. 405 406config FDT_64BIT 407 bool "64bit fdt address support" 408 help 409 Say Y here to support 64bit fdt addresses. 410 This can be used not only for 64bit SoCs, but also 411 for large address extensions on 32bit SoCs. 412 413config HAS_ROM 414 bool 415 select BINMAN 416 help 417 Enables building of a u-boot.rom target. This collects U-Boot and 418 any necessary binary blobs. 419 420config SPL_IMAGE 421 string "SPL image used in the combined SPL+U-Boot image" 422 default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT 423 default "spl/u-boot-spl.bin" 424 depends on SPL 425 help 426 Select the SPL build target that shall be generated by the SPL 427 build process (default spl/u-boot-spl.bin). This image will be 428 used to generate a combined image with SPL and main U-Boot 429 proper as one single image. 430 431config REMAKE_ELF 432 bool "Recreate an ELF image from raw U-Boot binary" 433 help 434 Enable this to recreate an ELF image (u-boot.elf) from the raw 435 U-Boot binary (u-boot.bin), which may already have been statically 436 relocated and may already have a device-tree appended to it. 437 438config BUILD_TARGET 439 string "Build target special images" 440 default "u-boot-elf.srec" if RCAR_64 441 default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT 442 default "u-boot-with-spl.bin" if MPC85xx && !E500MC && !E5500 && !E6500 && SPL 443 default "u-boot-with-spl.imx" if ARCH_MX6 && SPL 444 default "u-boot-with-spl.kwb" if ARMADA_32BIT && SPL 445 default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_ARRIA10 446 default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5 447 default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \ 448 RISCV || ARCH_ZYNQMP) 449 default "u-boot.kwb" if (ARCH_KIRKWOOD || ARMADA_32BIT) && !SPL 450 help 451 Some SoCs need special image types (e.g. U-Boot binary 452 with a special header) as build targets. By defining 453 CONFIG_BUILD_TARGET in the SoC / board header, this 454 special image will be automatically built upon calling 455 make / buildman. 456 457config HAS_BOARD_SIZE_LIMIT 458 bool "Define a maximum size for the U-Boot image" 459 default y if RCAR_64 460 help 461 In some cases, we need to enforce a hard limit on how big the U-Boot 462 image itself can be. 463 464config BOARD_SIZE_LIMIT 465 int "Maximum size of the U-Boot image in bytes" 466 default 1048576 if RCAR_64 467 depends on HAS_BOARD_SIZE_LIMIT 468 help 469 Maximum size of the U-Boot image. When defined, the build system 470 checks that the actual size does not exceed it. This does not 471 include SPL nor TPL, on platforms that use that functionality, they 472 have a separate option to restict size. 473 474config SYS_CUSTOM_LDSCRIPT 475 bool "Use a custom location for the U-Boot linker script" 476 help 477 Normally when linking U-Boot we will look in the board directory, 478 the CPU directory and finally the "cpu" directory of the architecture 479 for the ile "u-boot.lds" and use that as our linker. However, in 480 some cases we need to provide a different linker script. To do so, 481 enable this option and then provide the location under 482 CONFIG_SYS_LDSCRIPT. 483 484config SYS_LDSCRIPT 485 depends on SYS_CUSTOM_LDSCRIPT 486 string "Custom ldscript location" 487 help 488 Path within the source tree to the linker script to use for the 489 main U-Boot binary. 490 491config SYS_LOAD_ADDR 492 hex "Address in memory to use by default" 493 default 0x01000000 if ARCH_SOCFPGA 494 default 0x02000000 if PPC || X86 495 default 0x81000000 if MACH_SUNIV 496 default 0x22000000 if MACH_SUN9I 497 default 0x42000000 if ARCH_SUNXI 498 default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3 499 default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) 500 default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) 501 default 0x80800000 if ARCH_MX7 502 default 0x90000000 if FSL_LSCH2 || FSL_LSCH3 503 help 504 Address in memory to use as the default safe load address. 505 506config ERR_PTR_OFFSET 507 hex 508 default 0x0 509 help 510 Some U-Boot pointers have redundant information, so we can use a 511 scheme where we can return either an error code or a pointer with the 512 same return value. The default implementation just casts the pointer 513 to a number, however, this may fail on platforms where the end of the 514 address range is used for valid pointers (e.g. 0xffffff00 is a valid 515 heap pointer in socfpga SPL). 516 For such platforms, this value provides an upper range of those error 517 pointer values - up to 'MAX_ERRNO' bytes below this value must be 518 unused/invalid addresses. 519 520config PLATFORM_ELFENTRY 521 string 522 default "__start" if MIPS 523 default "_start" 524 525config STACK_SIZE 526 hex "Define max stack size that can be used by U-Boot" 527 default 0x4000000 if ARCH_VERSAL_NET || ARCH_VERSAL || ARCH_ZYNQMP 528 default 0x200000 if MICROBLAZE 529 default 0x1000000 530 help 531 Define Max stack size that can be used by U-Boot. This value is used 532 by the UEFI sub-system. On some boards initrd_high is calculated as 533 base stack pointer minus this stack size. 534 535config SYS_MEM_TOP_HIDE 536 hex "Exclude some memory from U-Boot / OS information" 537 default 0x0 538 help 539 If set, this specified memory area will get subtracted from the top 540 (end) of RAM and won't get "touched" at all by U-Boot. By fixing up 541 gd->ram_size the OS / next stage should gets passed the now 542 "corrected" memory size and won't touch it either. 543 WARNING: Please make sure that this value is a multiple of the OS 544 page size. 545 546config SYS_HAS_SRAM 547 bool 548 default y if TARGET_PIC32MZDASK 549 default y if TARGET_DEVKIT8000 550 default y if TARGET_TRICORDER 551 help 552 Enable this to allow support for the on board SRAM. 553 SRAM base address is controlled by CONFIG_SYS_SRAM_BASE. 554 SRAM size is controlled by CONFIG_SYS_SRAM_SIZE. 555 556config SYS_SRAM_BASE 557 hex 558 default 0x80000000 if TARGET_PIC32MZDASK 559 default 0x40200000 if TARGET_DEVKIT8000 560 default 0x40200000 if TARGET_TRICORDER 561 default 0x0 562 563config SYS_SRAM_SIZE 564 hex 565 default 0x00080000 if TARGET_PIC32MZDASK 566 default 0x10000 if TARGET_DEVKIT8000 567 default 0x10000 if TARGET_TRICORDER 568 default 0x0 569 570config SYS_MONITOR_LEN 571 int "Maximum size in bytes reserved for U-Boot in memory" 572 default 1048576 if X86 573 default 786432 if ARCH_SUNXI 574 default 0 575 help 576 Size of memory reserved for monitor code, used to determine 577 _at_compile_time_ (!) if the environment is embedded within the 578 U-Boot image, or in a separate flash sector, among other uses where 579 we need to set a maximum size of the U-Boot binary itself that will 580 be loaded. 581 582config MP 583 bool "Support for multiprocessor" 584 help 585 This provides an option to bringup different processors 586 in multiprocessor cases. 587 588endmenu # General setup 589 590source "api/Kconfig" 591 592source "boot/Kconfig" 593 594source "common/Kconfig" 595 596source "cmd/Kconfig" 597 598source "disk/Kconfig" 599 600source "dts/Kconfig" 601 602source "env/Kconfig" 603 604source "net/Kconfig" 605 606source "drivers/Kconfig" 607 608source "fs/Kconfig" 609 610source "lib/Kconfig" 611 612source "test/Kconfig" 613 614source "tools/Kconfig" 615