WIP make sfdisk wipe file system signatures
[platform/kernel/u-boot.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 86f0a39..c8c2255 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -57,18 +57,49 @@ config LOCALVERSION_AUTO
 
          which is done within the script "scripts/setlocalversion".)
 
+config CC_IS_GCC
+       def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
+
+config GCC_VERSION
+       int
+       default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC
+       default 0
+
+config CC_IS_CLANG
+       def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
+
+config CLANG_VERSION
+       int
+       default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
+
+choice
+       prompt "Optimization level"
+       default CC_OPTIMIZE_FOR_SIZE
+
 config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size"
-       default y
        help
-         Enabling this option will pass "-Os" instead of "-O2" to gcc
-         resulting in a smaller U-Boot image.
+         Enabling this option will pass "-Os" to gcc, resulting in a smaller
+         U-Boot image.
 
          This option is enabled by default for U-Boot.
 
+config CC_OPTIMIZE_FOR_SPEED
+       bool "Optimize for speed"
+       help
+         Enabling this option will pass "-O2" to gcc, resulting in a faster
+         U-Boot image.
+
+config CC_OPTIMIZE_FOR_DEBUG
+       bool "Optimize for debugging"
+       help
+         Enabling this option will pass "-Og" to gcc, enabling optimizations
+         which don't interfere with debugging.
+
+endchoice
+
 config OPTIMIZE_INLINING
        bool "Allow compiler to uninline functions marked 'inline' in full U-Boot"
-       default n
        help
          This option determines if U-Boot forces gcc to inline the functions
          developers have marked 'inline'. Doing so takes away freedom from gcc to
@@ -78,17 +109,38 @@ config OPTIMIZE_INLINING
 config SPL_OPTIMIZE_INLINING
        bool "Allow compiler to uninline functions marked 'inline' in SPL"
        depends on SPL
-       default n
        help
          This option determines if U-Boot forces gcc to inline the functions
          developers have marked 'inline'. Doing so takes away freedom from gcc to
          do what it thinks is best, which is desirable in some cases for size
          reasons.
 
+config ARCH_SUPPORTS_LTO
+       bool
+
+config LTO
+       bool "Enable Link Time Optimizations"
+       depends on ARCH_SUPPORTS_LTO
+       help
+         This option enables Link Time Optimization (LTO), a mechanism which
+         allows the compiler to optimize between different compilation units.
+
+         This can optimize away dead code paths, resulting in smaller binary
+         size (if CC_OPTIMIZE_FOR_SIZE is enabled).
+
+         This option is not available for every architecture and may
+         introduce bugs.
+
+         Currently, when compiling with GCC, due to a weird bug regarding
+         jobserver, the final linking will not respect make's --jobs argument.
+         Instead all available processors will be used (as reported by the
+         nproc command).
+
+         If unsure, say n.
+
 config TPL_OPTIMIZE_INLINING
        bool "Allow compiler to uninline functions marked 'inline' in TPL"
        depends on TPL
-       default n
        help
          This option determines if U-Boot forces gcc to inline the functions
          developers have marked 'inline'. Doing so takes away freedom from gcc to
@@ -102,6 +154,22 @@ config CC_COVERAGE
          Enabling this option will pass "--coverage" to gcc to compile
          and link code instrumented for coverage analysis.
 
+config ASAN
+       bool "Enable AddressSanitizer"
+       depends on SANDBOX
+       help
+         Enables AddressSanitizer to discover out-of-bounds accesses,
+         use-after-free, double-free and memory leaks.
+
+config FUZZ
+       bool "Enable fuzzing"
+       depends on CC_IS_CLANG
+       depends on DM_FUZZING_ENGINE
+       select ASAN
+       help
+         Enables the fuzzing infrastructure to generate fuzzing data and run
+          fuzz tests.
+
 config CC_HAS_ASM_INLINE
        def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
 
@@ -176,12 +244,38 @@ config SYS_BOOT_GET_CMDLINE
          Enables allocating and saving kernel cmdline in space between
          "bootm_low" and "bootm_low" + BOOTMAPSZ.
 
+config SYS_BARGSIZE
+       int "Size of kernel command line buffer in bytes"
+       depends on SYS_BOOT_GET_CMDLINE
+       default 512
+       help
+         Buffer size for Boot Arguments which are passed to the application
+         (usually a Linux kernel) when it is booted
+
 config SYS_BOOT_GET_KBD
        bool "Enable kernel board information setup"
        help
          Enables allocating and saving a kernel copy of the bd_info in
          space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
 
+config HAS_CUSTOM_SYS_INIT_SP_ADDR
+       bool "Use a custom location for the initial stack pointer address"
+       depends on ARC || (ARM && !INIT_SP_RELATIVE) || MIPS || PPC || RISCV
+       default y if TFABOOT
+       help
+         Typically, we use an initial stack pointer address that is calculated
+         by taking the statically defined CONFIG_SYS_INIT_RAM_ADDR, adding the
+         statically defined CONFIG_SYS_INIT_RAM_SIZE and then subtracting the
+         build-time constant of GENERATED_GBL_DATA_SIZE.  On MIPS a different
+         but statica calculation is performed.  However, some platforms will
+         take a different approach.  Say Y here to define the address statically
+         instead.
+
+config CUSTOM_SYS_INIT_SP_ADDR
+       hex "Static location for the initial stack pointer"
+       depends on HAS_CUSTOM_SYS_INIT_SP_ADDR
+       default SYS_TEXT_BASE if TFABOOT
+
 config SYS_MALLOC_F
        bool "Enable malloc() pool before relocation"
        default y if DM
@@ -195,13 +289,18 @@ config SYS_MALLOC_F
 config SYS_MALLOC_F_LEN
        hex "Size of malloc() pool before relocation"
        depends on SYS_MALLOC_F
-       default 0x1000 if AM33XX
-       default 0x4000 if SANDBOX
-       default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
-                          ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
-                          ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
-                          ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL)
-       default 0x400
+       default 0x400 if M68K || PPC || ROCKCHIP_PX30 || ROCKCHIP_RK3036 || \
+                        ROCKCHIP_RK3308 || ROCKCHIP_RV1108
+       default 0x600 if ARCH_ZYNQMP_R5 || ARCH_ZYNQMP
+       default 0x800 if ARCH_ZYNQ || ROCKCHIP_RK3128 || ROCKCHIP_RK3188 || \
+                        ROCKCHIP_RK322X || X86
+       default 0x1000 if ARCH_MESON || ARCH_BMIPS || ARCH_MTMIPS
+       default 0x1800 if ARCH_TEGRA
+       default 0x4000 if SANDBOX || RISCV || ARCH_APPLE || ROCKCHIP_RK3368 || \
+                         ROCKCHIP_RK3399
+       default 0x8000 if RCAR_GEN3
+       default 0x10000 if ARCH_IMX8 || ARCH_IMX8M
+       default 0x2000
        help
          Before relocation, memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
@@ -210,8 +309,13 @@ config SYS_MALLOC_F_LEN
 
 config SYS_MALLOC_LEN
        hex "Define memory for Dynamic allocation"
-       depends on ARCH_ZYNQ || ARCH_VERSAL || ARCH_STM32MP || ARCH_ROCKCHIP
-       default 0x2000000 if ARCH_ROCKCHIP
+       default 0x4000000 if SANDBOX
+       default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON
+       default 0x200000 if ARCH_BMIPS || X86
+       default 0x120000 if MACH_SUNIV
+       default 0x220000 if MACH_SUN8I_V3S
+       default 0x4020000 if ARCH_SUNXI
+       default 0x400000
        help
          This defines memory to be allocated for Dynamic allocation
          TODO: Use for other architectures
@@ -219,7 +323,9 @@ config SYS_MALLOC_LEN
 config SPL_SYS_MALLOC_F_LEN
        hex "Size of malloc() pool in SPL"
        depends on SYS_MALLOC_F && SPL
+       default 0 if !SPL_FRAMEWORK
        default 0x2800 if RCAR_GEN3
+       default 0x2000 if IMX8MQ
        default SYS_MALLOC_F_LEN
        help
          In SPL memory is very limited on many platforms. Still,
@@ -240,6 +346,31 @@ config TPL_SYS_MALLOC_F_LEN
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
+config VALGRIND
+       bool "Inform valgrind about memory allocations"
+       depends on !RISCV
+       help
+         Valgrind is an instrumentation framework for building dynamic analysis
+         tools. In particular, it may be used to detect memory management bugs
+         in U-Boot. It relies on knowing when heap blocks are allocated in
+         order to give accurate results. This happens automatically for
+         standard allocator functions provided by the host OS. However, this
+         doesn't automatically happen for U-Boot's malloc implementation.
+
+         Enable this option to annotate U-Boot's malloc implementation so that
+         it can be handled accurately by Valgrind. If you aren't planning on
+         using valgrind to debug U-Boot, say 'n'.
+
+config VPL_SYS_MALLOC_F_LEN
+       hex "Size of malloc() pool in VPL before relocation"
+       depends on SYS_MALLOC_F && VPL
+       default SYS_MALLOC_F_LEN
+       help
+         Before relocation, memory is very limited on many platforms. Still,
+         we can provide a small malloc() pool if needed. Driver model in
+         particular needs this to operate, so that it can allocate the
+         initial serial device and any others that are needed.
+
 menuconfig EXPERT
        bool "Configure standard U-Boot features (expert users)"
        default y
@@ -268,7 +399,6 @@ if EXPERT
 
 config SYS_MALLOC_DEFAULT_TO_INIT
        bool "Default malloc to init while reserving the memory for it"
-       default n
        help
          It may happen that one needs to move the dynamic allocation
          from one to another memory range, eg. when moving the malloc
@@ -304,27 +434,6 @@ config HAS_ROM
          Enables building of a u-boot.rom target. This collects U-Boot and
          any necessary binary blobs.
 
-config ROM_NEEDS_BLOBS
-       bool
-       depends on HAS_ROM
-       help
-         Enable this if building the u-boot.rom target needs binary blobs, and
-         so cannot be done normally. In this case, U-Boot will only build the
-         ROM if the required blobs exist. If not, you will see an warning like:
-
-           Image 'main-section' is missing external blobs and is non-functional:
-             intel-descriptor intel-me intel-refcode intel-vga intel-mrc
-
-config BUILD_ROM
-       bool "Build U-Boot as BIOS replacement"
-       depends on HAS_ROM
-       default y if !ROM_NEEDS_BLOBS
-       help
-         This option allows to build a ROM version of U-Boot.
-         The build process generally requires several binary blobs
-         which are not shipped in the U-Boot source tree.
-         Please, see doc/arch/x86.rst for details.
-
 config SPL_IMAGE
        string "SPL image used in the combined SPL+U-Boot image"
        default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
@@ -336,6 +445,13 @@ config SPL_IMAGE
          used to generate a combined image with SPL and main U-Boot
          proper as one single image.
 
+config REMAKE_ELF
+       bool "Recreate an ELF image from raw U-Boot binary"
+       help
+         Enable this to recreate an ELF image (u-boot.elf) from the raw
+         U-Boot binary (u-boot.bin), which may already have been statically
+         relocated and may already have a device-tree appended to it.
+
 config BUILD_TARGET
        string "Build target special images"
        default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_ARRIA10
@@ -354,6 +470,23 @@ config BUILD_TARGET
          special image will be automatically built upon calling
          make / buildman.
 
+config HAS_BOARD_SIZE_LIMIT
+       bool "Define a maximum size for the U-Boot image"
+       default y if RCAR_GEN3
+       help
+         In some cases, we need to enforce a hard limit on how big the U-Boot
+         image itself can be.
+
+config BOARD_SIZE_LIMIT
+       int "Maximum size of the U-Boot image in bytes"
+       default 1048576 if RCAR_GEN3
+       depends on HAS_BOARD_SIZE_LIMIT
+       help
+         Maximum size of the U-Boot image. When defined, the build system
+         checks that the actual size does not exceed it.  This does not
+         include SPL nor TPL, on platforms that use that functionality, they
+         have a separate option to restict size.
+
 config SYS_CUSTOM_LDSCRIPT
        bool "Use a custom location for the U-Boot linker script"
        help
@@ -371,6 +504,21 @@ config SYS_LDSCRIPT
          Path within the source tree to the linker script to use for the
          main U-Boot binary.
 
+config SYS_LOAD_ADDR
+       hex "Address in memory to use by default"
+       default 0x01000000 if ARCH_SOCFPGA
+       default 0x02000000 if PPC || X86
+       default 0x81000000 if MACH_SUNIV
+       default 0x22000000 if MACH_SUN9I
+       default 0x42000000 if ARCH_SUNXI
+       default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
+       default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
+       default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
+       default 0x80800000 if ARCH_MX7
+       default 0x90000000 if FSL_LSCH2 || FSL_LSCH3
+       help
+         Address in memory to use as the default safe load address.
+
 config ERR_PTR_OFFSET
        hex
        default 0x0
@@ -400,12 +548,22 @@ config STACK_SIZE
          by the UEFI sub-system. On some boards initrd_high is calculated as
          base stack pointer minus this stack size.
 
+config SYS_MEM_TOP_HIDE
+       hex "Exclude some memory from U-Boot / OS information"
+       default 0x0
+       help
+         If set, this specified memory area will get subtracted from the top
+         (end) of RAM and won't get "touched" at all by U-Boot. By fixing up
+         gd->ram_size the OS / next stage should gets passed the now
+         "corrected" memory size and won't touch it either.
+         WARNING: Please make sure that this value is a multiple of the OS
+         page size.
+
 config SYS_HAS_SRAM
        bool
        default y if TARGET_PIC32MZDASK
        default y if TARGET_DEVKIT8000
        default y if TARGET_TRICORDER
-       default n
        help
          Enable this to allow support for the on board SRAM.
          SRAM base address is controlled by CONFIG_SYS_SRAM_BASE.
@@ -425,6 +583,12 @@ config SYS_SRAM_SIZE
        default 0x10000 if TARGET_TRICORDER
        default 0x0
 
+config MP
+       bool "Support for multiprocessor"
+       help
+         This provides an option to bringup different processors
+         in multiprocessor cases.
+
 config EXAMPLES
        bool "Compile API examples"
        depends on !SANDBOX
@@ -437,6 +601,8 @@ endmenu             # General setup
 
 source "api/Kconfig"
 
+source "boot/Kconfig"
+
 source "common/Kconfig"
 
 source "cmd/Kconfig"