WIP make sfdisk wipe file system signatures
[platform/kernel/u-boot.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 76c0cda..c8c2255 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -72,18 +72,34 @@ 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
@@ -93,7 +109,6 @@ 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
@@ -106,7 +121,6 @@ config ARCH_SUPPORTS_LTO
 config LTO
        bool "Enable Link Time Optimizations"
        depends on ARCH_SUPPORTS_LTO
-       default n
        help
          This option enables Link Time Optimization (LTO), a mechanism which
          allows the compiler to optimize between different compilation units.
@@ -127,7 +141,6 @@ config LTO
 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
@@ -141,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)
 
@@ -215,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
@@ -234,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
@@ -249,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
@@ -258,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,
@@ -279,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
@@ -307,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
@@ -343,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
@@ -375,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
@@ -393,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
@@ -410,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
@@ -439,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.
@@ -464,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
@@ -476,6 +601,8 @@ endmenu             # General setup
 
 source "api/Kconfig"
 
+source "boot/Kconfig"
+
 source "common/Kconfig"
 
 source "cmd/Kconfig"