X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Kconfig;h=931a22806e4ea54c0255319a18f2426e94dc067d;hb=8e1ebdcfd71a089a5aa7a69664555a75153a9b9e;hp=8f3fba085a71b075966769d07d84e47a70cb9016;hpb=c622afb0874e57cd7e9df51855e35286fa46aab7;p=platform%2Fkernel%2Fu-boot.git diff --git a/Kconfig b/Kconfig index 8f3fba0..931a228 100644 --- a/Kconfig +++ b/Kconfig @@ -5,6 +5,10 @@ # 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" @@ -53,6 +57,21 @@ 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)) + config CC_OPTIMIZE_FOR_SIZE bool "Optimize for size" default y @@ -62,6 +81,55 @@ config CC_OPTIMIZE_FOR_SIZE This option is enabled by default for U-Boot. +config OPTIMIZE_INLINING + bool "Allow compiler to uninline functions marked 'inline' in full U-Boot" + 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 + 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 + 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 @@ -69,6 +137,27 @@ config CC_COVERAGE 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 @@ -142,11 +231,11 @@ config SYS_MALLOC_F_LEN hex "Size of malloc() pool before relocation" depends on SYS_MALLOC_F default 0x1000 if AM33XX - default 0x2800 if SANDBOX + 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_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL) default 0x400 help Before relocation, memory is very limited on many platforms. Still, @@ -156,29 +245,35 @@ 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 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON + default 0x4020000 if ARCH_SUNXI && !MACH_SUN8I_V3S + default 0x200000 if ARCH_BMIPS || X86 + default 0x220000 if ARCH_SUNXI && MACH_SUN8I_V3S + default 0x400000 help This defines memory to be allocated for Dynamic allocation TODO: Use for other architectures config SPL_SYS_MALLOC_F_LEN - hex "Size of malloc() pool in SPL before relocation" + hex "Size of malloc() pool in SPL" depends on SYS_MALLOC_F && SPL default 0x2800 if RCAR_GEN3 default SYS_MALLOC_F_LEN help - Before relocation, memory is very limited on many platforms. Still, + In SPL 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. + It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new + malloc() region in SDRAM once it is inited. + config TPL_SYS_MALLOC_F_LEN - hex "Size of malloc() pool in TPL before relocation" + hex "Size of malloc() pool in TPL" depends on SYS_MALLOC_F && TPL - default SYS_MALLOC_F_LEN + default SPL_SYS_MALLOC_F_LEN help - Before relocation, memory is very limited on many platforms. Still, + In TPL 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. @@ -211,7 +306,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 @@ -240,14 +334,12 @@ config PHYS_64BIT This can be used not only for 64bit SoCs, but also for large physical address extension on 32bit SoCs. -config BUILD_ROM - bool "Build U-Boot as BIOS replacement" - depends on X86 +config HAS_ROM + bool + select BINMAN 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. + Enables building of a u-boot.rom target. This collects U-Boot and + any necessary binary blobs. config SPL_IMAGE string "SPL image used in the combined SPL+U-Boot image" @@ -266,7 +358,7 @@ 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.itb" if SPL_LOAD_FIT && (ARCH_ROCKCHIP || \ + default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \ ARCH_SUNXI || RISCV || ARCH_ZYNQMP) default "u-boot.kwb" if ARCH_KIRKWOOD default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT @@ -295,6 +387,20 @@ 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 0x22000000 if MACH_SUN9I + default 0x42000000 if ARCH_SUNXI && !MACH_SUN9I + 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 @@ -314,317 +420,49 @@ config PLATFORM_ELFENTRY default "__start" if MIPS default "_start" -endmenu # General setup - -menu "Boot images" - -config ANDROID_BOOT_IMAGE - bool "Enable support for Android Boot Images" - default y if FASTBOOT +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 - This enables support for booting images which use the Android - image format header. + 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 FIT - bool "Support Flattened Image Tree" - select MD5 - select SHA1 +config SYS_HAS_SRAM + bool + default y if TARGET_PIC32MZDASK + default y if TARGET_DEVKIT8000 + default y if TARGET_TRICORDER help - This option allows you to boot the new uImage structure, - Flattened Image Tree. FIT is formally a FDT, which can include - images of various types (kernel, FDT blob, ramdisk, etc.) - in a single blob. To boot this new uImage structure, - pass the address of the blob to the "bootm" command. - FIT is very flexible, supporting compression, multiple images, - multiple configurations, verification through hashing and also - verified boot (secure boot using RSA). + 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. -if FIT - -config FIT_EXTERNAL_OFFSET - hex "FIT external data offset" +config SYS_SRAM_BASE + hex + default 0x80000000 if TARGET_PIC32MZDASK + default 0x40200000 if TARGET_DEVKIT8000 + default 0x40200000 if TARGET_TRICORDER default 0x0 - help - This specifies a data offset in fit image. - The offset is from data payload offset to the beginning of - fit image header. When specifies a offset, specific data - could be put in the hole between data payload and fit image - header, such as CSF data on i.MX platform. -config FIT_ENABLE_SHA256_SUPPORT - bool "Support SHA256 checksum of FIT image contents" - default y - select SHA256 - 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. - -config FIT_SIGNATURE - bool "Enable signature verification of FIT uImages" - depends on DM - select HASH - select RSA - select RSA_VERIFY - select IMAGE_SIGN_INFO - help - This option enables signature verification of FIT uImages, - using a hash signed and verified using RSA. If - CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive - hashing is available using hardware, then the RSA library will use - it. See doc/uImage.FIT/signature.txt for more details. - - WARNING: When relying on signed FIT images with a required signature - check the legacy image format is disabled by default, so that - unsigned images cannot be loaded. If a board needs the legacy image - format support in this case, enable it using - CONFIG_LEGACY_IMAGE_FORMAT. - -config FIT_SIGNATURE_MAX_SIZE - hex "Max size of signed FIT structures" - depends on FIT_SIGNATURE - default 0x10000000 - help - This option sets a max size in bytes for verified FIT uImages. - A sane value of 256MB protects corrupted DTB structures from overlapping - device memory. Assure this size does not extend past expected storage - space. - -config FIT_ENABLE_RSASSA_PSS_SUPPORT - bool "Support rsassa-pss signature scheme of FIT image contents" - depends on FIT_SIGNATURE - default n - help - Enable this to support the pss padding algorithm as described - in the rfc8017 (https://tools.ietf.org/html/rfc8017). - -config FIT_CIPHER - bool "Enable ciphering data in a FIT uImages" - depends on DM - select AES - help - Enable the feature of data ciphering/unciphering in the tool mkimage - and in the u-boot support of the FIT image. - -config FIT_VERBOSE - bool "Show verbose messages when FIT images fail" - help - Generally a system will have valid FIT images so debug messages - are a waste of code space. If you are debugging your images then - you can enable this option to get more verbose information about - failures. - -config FIT_BEST_MATCH - bool "Select the best match for the kernel device tree" - help - When no configuration is explicitly selected, default to the - one whose fdt's compatibility field best matches that of - U-Boot itself. A match is considered "best" if it matches the - most specific compatibility entry of U-Boot's fdt's root node. - The order of entries in the configuration's fdt is ignored. - -config FIT_IMAGE_POST_PROCESS - bool "Enable post-processing of FIT artifacts after loading by U-Boot" - depends on TI_SECURE_DEVICE - help - Allows doing any sort of manipulation to blobs after they got extracted - from FIT images like stripping off headers or modifying the size of the - blob, verification, authentication, decryption etc. in a platform or - board specific way. In order to use this feature a platform or board- - specific implementation of board_fit_image_post_process() must be - provided. Also, anything done during this post-processing step would - need to be comprehended in how the images were prepared before being - injected into the FIT creation (i.e. the blobs would have been pre- - processed before being added to the FIT image). - -if SPL - -config SPL_FIT - bool "Support Flattened Image Tree within SPL" - depends on SPL - select SPL_OF_LIBFDT - -config SPL_FIT_PRINT - bool "Support FIT printing within SPL" - depends on SPL_FIT - help - Support printing the content of the fitImage in a verbose manner in SPL. - -config SPL_FIT_SIGNATURE - bool "Enable signature verification of FIT firmware within SPL" - depends on SPL_DM - select SPL_FIT - select SPL_RSA - select SPL_RSA_VERIFY - select SPL_IMAGE_SIGN_INFO - -config SPL_LOAD_FIT - bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)" - select SPL_FIT - help - Normally with the SPL framework a legacy image is generated as part - of the build. This contains U-Boot along with information as to - where it should be loaded. This option instead enables generation - of a FIT (Flat Image Tree) which provides more flexibility. In - particular it can handle selecting from multiple device tree - and passing the correct one to U-Boot. - -config SPL_LOAD_FIT_APPLY_OVERLAY - bool "Enable SPL applying DT overlays from FIT" - depends on SPL_LOAD_FIT - select OF_LIBFDT_OVERLAY - help - The device tree is loaded from the FIT image. Allow the SPL is to - also load device-tree overlays from the FIT image an apply them - over the device tree. - -config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ - depends on SPL_LOAD_FIT_APPLY_OVERLAY - default 0x10000 - hex "size of temporary buffer used to load the overlays" - help - The size of the area where the overlays will be loaded and - uncompress. Must be at least as large as biggest overlay - (uncompressed) - -config SPL_LOAD_FIT_FULL - bool "Enable SPL loading U-Boot as a FIT (full fitImage features)" - select SPL_FIT - help - Normally with the SPL framework a legacy image is generated as part - of the build. This contains U-Boot along with information as to - where it should be loaded. This option instead enables generation - of a FIT (Flat Image Tree) which provides more flexibility. In - particular it can handle selecting from multiple device tree - and passing the correct one to U-Boot. - -config SPL_FIT_IMAGE_POST_PROCESS - bool "Enable post-processing of FIT artifacts after loading by the SPL" - depends on SPL_LOAD_FIT - help - Allows doing any sort of manipulation to blobs after they got extracted - from the U-Boot FIT image like stripping off headers or modifying the - size of the blob, verification, authentication, decryption etc. in a - platform or board specific way. In order to use this feature a platform - or board-specific implementation of board_fit_image_post_process() must - be provided. Also, anything done during this post-processing step would - need to be comprehended in how the images were prepared before being - injected into the FIT creation (i.e. the blobs would have been pre- - processed before being added to the FIT image). - -config SPL_FIT_SOURCE - string ".its source file for U-Boot FIT image" - depends on SPL_FIT - help - Specifies a (platform specific) FIT source file to generate the - U-Boot FIT image. This could specify further image to load and/or - execute. - -config SPL_FIT_GENERATOR - string ".its file generator script for U-Boot FIT image" - depends on SPL_FIT - 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 "arch/riscv/lib/mkimage_fit_opensbi.sh" if SPL_LOAD_FIT && RISCV - help - Specifies a (platform specific) script file to generate the FIT - source file used to build the U-Boot FIT image file. This gets - passed a list of supported device tree file stub names to - include in the generated image. - -endif # SPL - -endif # FIT - -config LEGACY_IMAGE_FORMAT - bool "Enable support for the legacy image format" - default y if !FIT_SIGNATURE - help - This option enables the legacy image format. It is enabled by - default for backward compatibility, unless FIT_SIGNATURE is - set where it is disabled so that unsigned images cannot be - loaded. If a board needs the legacy image format support in this - case, enable it here. - -config OF_BOARD_SETUP - bool "Set up board-specific details in device tree before boot" - depends on OF_LIBFDT - help - This causes U-Boot to call ft_board_setup() before booting into - the Operating System. This function can set up various - board-specific information in the device tree for use by the OS. - The device tree is then passed to the OS. - -config OF_SYSTEM_SETUP - bool "Set up system-specific details in device tree before boot" - depends on OF_LIBFDT - help - This causes U-Boot to call ft_system_setup() before booting into - the Operating System. This function can set up various - system-specific information in the device tree for use by the OS. - The device tree is then passed to the OS. - -config OF_STDOUT_VIA_ALIAS - bool "Update the device-tree stdout alias from U-Boot" - depends on OF_LIBFDT - help - This uses U-Boot's serial alias from the aliases node to update - the device tree passed to the OS. The "linux,stdout-path" property - in the chosen node is set to point to the correct serial node. - This option currently references CONFIG_CONS_INDEX, which is - incorrect when used with device tree as this option does not - exist / should not be used. - -config SYS_EXTRA_OPTIONS - string "Extra Options (DEPRECATED)" - help - The old configuration infrastructure (= mkconfig + boards.cfg) - provided the extra options field. If you have something like - "HAS_BAR,BAZ=64", the optional options - #define CONFIG_HAS - #define CONFIG_BAZ 64 - will be defined in include/config.h. - This option was prepared for the smooth migration from the old - configuration to Kconfig. Since this option will be removed sometime, - new boards should not use this option. - -config HAVE_SYS_TEXT_BASE - bool - depends on !NIOS2 && !XTENSA - depends on !EFI_APP - default y - -config SYS_TEXT_BASE - depends on HAVE_SYS_TEXT_BASE - default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3 - default 0x4a000000 if ARCH_SUNXI && !MACH_SUN9I && !MACH_SUN8I_V3S - default 0x2a000000 if ARCH_SUNXI && MACH_SUN9I - default 0x42e00000 if ARCH_SUNXI && MACH_SUN8I_V3S - hex "Text Base" - help - The address in memory that U-Boot will be running from, initially. - -config SYS_CLK_FREQ - depends on ARC || ARCH_SUNXI || MPC83xx - int "CPU clock frequency" - help - TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture +config SYS_SRAM_SIZE + hex + default 0x00080000 if TARGET_PIC32MZDASK + default 0x10000 if TARGET_DEVKIT8000 + default 0x10000 if TARGET_TRICORDER + default 0x0 -config ARCH_FIXUP_FDT_MEMORY - bool "Enable arch_fixup_memory_banks() call" - default y +config EXAMPLES + bool "Compile API examples" + depends on !SANDBOX + default y if ARCH_QEMU help - Enable FDT memory map syncup before OS boot. This feature can be - used for booting OS with different memory setup where the part of - the memory location should be used for different purpose. + U-Boot provides an API for standalone applications. Examples are + provided in directory examples/. -endmenu # Boot images +endmenu # General setup source "api/Kconfig" @@ -647,3 +485,5 @@ source "fs/Kconfig" source "lib/Kconfig" source "test/Kconfig" + +source "tools/Kconfig"