X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Kconfig;h=67f46467b17e92e969aad5bd19b03ade322cfdc1;hb=b919d43af563147523cd2816d26a03e927104b61;hp=9dd9ec7f6dfb38a469ef52700b742814f9f3fda4;hpb=859703251251d9567f29ab10c0a29f98eb0aff5c;p=platform%2Fkernel%2Fu-boot.git diff --git a/Kconfig b/Kconfig index 9dd9ec7..67f4646 100644 --- a/Kconfig +++ b/Kconfig @@ -72,15 +72,32 @@ 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" help @@ -137,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) @@ -211,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 TEXT_BASE if TFABOOT + config SYS_MALLOC_F bool "Enable malloc() pool before relocation" default y if DM @@ -230,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 @@ -245,11 +309,12 @@ config SYS_MALLOC_F_LEN config SYS_MALLOC_LEN hex "Define memory for Dynamic allocation" + 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 0x4020000 if SUNXI_MINIMUM_DRAM_MB >= 256 + default 0x220000 if SUNXI_MINIMUM_DRAM_MB >= 64 + default 0x120000 if SUNXI_MINIMUM_DRAM_MB >= 32 default 0x400000 help This defines memory to be allocated for Dynamic allocation @@ -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 @@ -364,7 +456,7 @@ config BUILD_TARGET string "Build target special images" default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_ARRIA10 default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5 - default "u-boot-spl.kwb" if ARCH_MVEBU && SPL + default "u-boot-with-spl.kwb" if ARCH_MVEBU && SPL default "u-boot-elf.srec" if RCAR_GEN3 default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \ ARCH_SUNXI || RISCV || ARCH_ZYNQMP) @@ -378,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 @@ -431,7 +540,7 @@ config PLATFORM_ELFENTRY config STACK_SIZE hex "Define max stack size that can be used by U-Boot" - default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP + default 0x4000000 if ARCH_VERSAL_NET || ARCH_VERSAL || ARCH_ZYNQMP default 0x200000 if MICROBLAZE default 0x1000000 help @@ -439,6 +548,17 @@ 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 @@ -463,6 +583,17 @@ config SYS_SRAM_SIZE default 0x10000 if TARGET_TRICORDER default 0x0 +config SYS_MONITOR_LEN + int "Maximum size in bytes reserved for U-Boot in memory" + default 1048576 if X86 + default 0 + help + Size of memory reserved for monitor code, used to determine + _at_compile_time_ (!) if the environment is embedded within the + U-Boot image, or in a separate flash sector, among other uses where + we need to set a maximum size of the U-Boot binary itself that will + be loaded. + config MP bool "Support for multiprocessor" help