Merge tag 'dm-pull-22aug20' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
[platform/kernel/u-boot.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 8bae87e..883e3f7 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -5,6 +5,10 @@
 #
 mainmenu "U-Boot $(UBOOTVERSION) Configuration"
 
 #
 mainmenu "U-Boot $(UBOOTVERSION) Configuration"
 
+comment "Compiler: $(CC_VERSION_TEXT)"
+
+source "scripts/Kconfig.include"
+
 # Allow defaults in arch-specific code to override any given here
 source "arch/Kconfig"
 
 # Allow defaults in arch-specific code to override any given here
 source "arch/Kconfig"
 
@@ -62,6 +66,35 @@ config CC_OPTIMIZE_FOR_SIZE
 
          This option is enabled by default for U-Boot.
 
 
          This option is enabled by default for U-Boot.
 
+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
+         do what it thinks is best, which is desirable in some cases for size
+         reasons.
+
+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 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
+         do what it thinks is best, which is desirable in some cases for size
+         reasons.
+
 config CC_COVERAGE
        bool "Enable code coverage analysis"
        depends on SANDBOX
 config CC_COVERAGE
        bool "Enable code coverage analysis"
        depends on SANDBOX
@@ -69,6 +102,27 @@ config CC_COVERAGE
          Enabling this option will pass "--coverage" to gcc to compile
          and link code instrumented for coverage analysis.
 
          Enabling this option will pass "--coverage" to gcc to compile
          and link code instrumented for coverage analysis.
 
+config CC_HAS_ASM_INLINE
+       def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
+
+config XEN
+       bool "Select U-Boot be run as a bootloader for XEN Virtual Machine"
+       help
+         Enabling this option will make U-Boot be run as a bootloader
+         for XEN [1] Virtual Machine.
+
+         Xen is a virtual machine monitor (VMM) or a type-1 hypervisor with support
+         for para-virtualization. Xen can organize the safe execution of several
+         virtual machines on the same physical system with performance close to
+         native. It is used as the basis for a number of different commercial and
+         open source applications, such as: server virtualization, Infrastructure
+         as a Service (IaaS), desktop virtualization, security applications,
+         embedded and hardware appliances.
+         Xen has a special VM called Domain-0 that runs the Dom0 kernel and allows
+         Xen to use the device drivers for the Domain-0 kernel by default.
+
+         [1] - https://xenproject.org/
+
 config DISTRO_DEFAULTS
        bool "Select defaults suitable for booting general purpose Linux distributions"
        select AUTO_COMPLETE
 config DISTRO_DEFAULTS
        bool "Select defaults suitable for booting general purpose Linux distributions"
        select AUTO_COMPLETE
@@ -111,7 +165,7 @@ config ENV_VARS_UBOOT_CONFIG
 
 config NR_DRAM_BANKS
        int "Number of DRAM banks"
 
 config NR_DRAM_BANKS
        int "Number of DRAM banks"
-       default 1 if ARCH_SUNXI
+       default 1 if ARCH_SUNXI || ARCH_OWL
        default 4
        help
          This defines the number of DRAM banks.
        default 4
        help
          This defines the number of DRAM banks.
@@ -146,7 +200,7 @@ config SYS_MALLOC_F_LEN
        default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
                           ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
                           ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
        default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
                           ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
                           ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
-                          ARCH_LS1046A)
+                          ARCH_LS1046A || ARCH_QEMU)
        default 0x400
        help
          Before relocation, memory is very limited on many platforms. Still,
        default 0x400
        help
          Before relocation, memory is very limited on many platforms. Still,
@@ -209,6 +263,20 @@ if EXPERT
          When disabling this, please check if malloc calls, maybe
          should be replaced by calloc - if one expects zeroed memory.
 
          When disabling this, please check if malloc calls, maybe
          should be replaced by calloc - if one expects zeroed memory.
 
+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
+         from the limited static to a potentially large dynamic (DDR)
+         memory.
+
+         If so then on top of setting the updated memory aside one
+         needs to bring the malloc init.
+
+         If such a scenario is sought choose yes.
+
 config TOOLS_DEBUG
        bool "Enable debug information for tools"
        help
 config TOOLS_DEBUG
        bool "Enable debug information for tools"
        help
@@ -226,9 +294,28 @@ config PHYS_64BIT
          This can be used not only for 64bit SoCs, but also for
          large physical address extension on 32bit SoCs.
 
          This can be used not only for 64bit SoCs, but also for
          large physical address extension on 32bit SoCs.
 
+config HAS_ROM
+       bool
+       select BINMAN
+       help
+         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"
 config BUILD_ROM
        bool "Build U-Boot as BIOS replacement"
-       depends on X86
+       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
        help
          This option allows to build a ROM version of U-Boot.
          The build process generally requires several binary blobs
@@ -252,9 +339,9 @@ config BUILD_TARGET
        default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5
        default "u-boot-spl.kwb" if ARCH_MVEBU && SPL
        default "u-boot-elf.srec" if RCAR_GEN3
        default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5
        default "u-boot-spl.kwb" if ARCH_MVEBU && SPL
        default "u-boot-elf.srec" if RCAR_GEN3
-       default "u-boot.itb" if SPL_LOAD_FIT && (ARCH_ROCKCHIP || \
+       default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \
                                ARCH_SUNXI || RISCV || ARCH_ZYNQMP)
                                ARCH_SUNXI || RISCV || ARCH_ZYNQMP)
-       default "u-boot.kwb" if KIRKWOOD
+       default "u-boot.kwb" if ARCH_KIRKWOOD
        default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
        default "u-boot-with-spl.imx" if ARCH_MX6 && SPL
        help
        default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
        default "u-boot-with-spl.imx" if ARCH_MX6 && SPL
        help
@@ -300,6 +387,41 @@ config PLATFORM_ELFENTRY
        default "__start" if MIPS
        default "_start"
 
        default "__start" if MIPS
        default "_start"
 
+config STACK_SIZE
+       hex "Define max stack size that can be used by U-Boot"
+       default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
+       default 0x200000 if MICROBLAZE
+       default 0x1000000
+       help
+         Define Max stack size that can be used by U-Boot. This value is used
+         by the UEFI sub-system. On some boards initrd_high is calculated as
+         base stack pointer minus this stack 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.
+         SRAM size is controlled by CONFIG_SYS_SRAM_SIZE.
+
+config SYS_SRAM_BASE
+       hex
+       default 0x80000000 if TARGET_PIC32MZDASK
+       default 0x40200000 if TARGET_DEVKIT8000
+       default 0x40200000 if TARGET_TRICORDER
+       default 0x0
+
+config SYS_SRAM_SIZE
+       hex
+       default 0x00080000 if TARGET_PIC32MZDASK
+       default 0x10000 if TARGET_DEVKIT8000
+       default 0x10000 if TARGET_TRICORDER
+       default 0x0
+
 endmenu                # General setup
 
 menu "Boot images"
 endmenu                # General setup
 
 menu "Boot images"
@@ -344,12 +466,26 @@ config FIT_ENABLE_SHA256_SUPPORT
        help
          Enable this to support SHA256 checksum of FIT image contents. A
          SHA256 checksum is a 256-bit (32-byte) hash value used to check that
        help
          Enable this to support SHA256 checksum of FIT image contents. A
          SHA256 checksum is a 256-bit (32-byte) hash value used to check that
-         the image contents have not been corrupted. SHA256 is recommended
-         for use in secure applications since (as at 2016) there is no known
-         feasible attack that could produce a 'collision' with differing
-         input data. Use this for the highest security. Note that only the
-         SHA256 variant is supported: SHA512 and others are not currently
-         supported in U-Boot.
+         the image contents have not been corrupted.
+
+config FIT_ENABLE_SHA384_SUPPORT
+       bool "Support SHA384 checksum of FIT image contents"
+       default n
+       select SHA384
+       help
+         Enable this to support SHA384 checksum of FIT image contents. A
+         SHA384 checksum is a 384-bit (48-byte) hash value used to check that
+         the image contents have not been corrupted. Use this for the highest
+         security.
+
+config FIT_ENABLE_SHA512_SUPPORT
+       bool "Support SHA512 checksum of FIT image contents"
+       default n
+       select SHA512
+       help
+         Enable this to support SHA512 checksum of FIT image contents. A
+         SHA512 checksum is a 512-bit (64-byte) hash value used to check that
+         the image contents have not been corrupted.
 
 config FIT_SIGNATURE
        bool "Enable signature verification of FIT uImages"
 
 config FIT_SIGNATURE
        bool "Enable signature verification of FIT uImages"
@@ -445,9 +581,11 @@ config SPL_FIT_SIGNATURE
        bool "Enable signature verification of FIT firmware within SPL"
        depends on SPL_DM
        select SPL_FIT
        bool "Enable signature verification of FIT firmware within SPL"
        depends on SPL_DM
        select SPL_FIT
+       select SPL_CRYPTO_SUPPORT
+       select SPL_HASH_SUPPORT
        select SPL_RSA
        select SPL_RSA_VERIFY
        select SPL_RSA
        select SPL_RSA_VERIFY
-       select IMAGE_SIGN_INFO
+       select SPL_IMAGE_SIGN_INFO
 
 config SPL_LOAD_FIT
        bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
 
 config SPL_LOAD_FIT
        bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
@@ -460,6 +598,14 @@ config SPL_LOAD_FIT
          particular it can handle selecting from multiple device tree
          and passing the correct one to U-Boot.
 
          particular it can handle selecting from multiple device tree
          and passing the correct one to U-Boot.
 
+config SPL_LOAD_FIT_ADDRESS
+       hex "load address of fit image"
+       depends on SPL_LOAD_FIT
+       default 0x0
+       help
+         Specify the load address of the fit image that will be loaded
+         by SPL.
+
 config SPL_LOAD_FIT_APPLY_OVERLAY
        bool "Enable SPL applying DT overlays from FIT"
        depends on SPL_LOAD_FIT
 config SPL_LOAD_FIT_APPLY_OVERLAY
        bool "Enable SPL applying DT overlays from FIT"
        depends on SPL_LOAD_FIT
@@ -511,9 +657,13 @@ config SPL_FIT_SOURCE
          U-Boot FIT image. This could specify further image to load and/or
          execute.
 
          U-Boot FIT image. This could specify further image to load and/or
          execute.
 
+config USE_SPL_FIT_GENERATOR
+       bool "Use a script to generate the .its script"
+       default y if SPL_FIT
+
 config SPL_FIT_GENERATOR
        string ".its file generator script for U-Boot FIT image"
 config SPL_FIT_GENERATOR
        string ".its file generator script for U-Boot FIT image"
-       depends on SPL_FIT
+       depends on USE_SPL_FIT_GENERATOR
        default "board/sunxi/mksunxi_fit_atf.sh" if SPL_LOAD_FIT && ARCH_SUNXI
        default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP
        default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
        default "board/sunxi/mksunxi_fit_atf.sh" if SPL_LOAD_FIT && ARCH_SUNXI
        default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP
        default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP