diff options
Diffstat (limited to 'common/Kconfig')
-rw-r--r-- | common/Kconfig | 598 |
1 files changed, 113 insertions, 485 deletions
diff --git a/common/Kconfig b/common/Kconfig index 43dd92b08a..98a5e99b75 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -27,7 +27,7 @@ config HAS_DMA Drivers that depend on a DMA implementation can depend on this config, so that you don't get a compilation error. -config HAS_ARCH_SJLJ +config ARCH_HAS_SJLJ bool help Architecture has support implemented for setjmp()/longjmp()/initjmp() @@ -78,7 +78,7 @@ config ARCH_DMA_ADDR_T_64BIT config BAREBOX_UPDATE_IMX_NAND_FCB bool - depends on ARCH_IMX6 || ARCH_IMX28 + depends on ARCH_IMX7 || ARCH_IMX6 || ARCH_IMX28 depends on BAREBOX_UPDATE depends on MTD_WRITE depends on NAND_MXS @@ -144,6 +144,9 @@ config MEMINFO bool "display memory info" default y +config MEMTEST + bool + config ENVIRONMENT_VARIABLES bool "environment variables support" @@ -185,14 +188,8 @@ config MMU to enable the data cache which depends on the MMU. See Documentation/mmu.txt for further information. -config MMU_EARLY - bool "Enable MMU early" - depends on ARM - depends on MMU - default y - help - This enables the MMU during early startup. This speeds up things during startup - of barebox, but may lead to harder to debug code. If unsure say yes here. +config MMUINFO + bool config HAVE_CONFIGURABLE_TEXT_BASE bool @@ -201,9 +198,13 @@ config TEXT_BASE depends on HAVE_CONFIGURABLE_TEXT_BASE prompt "TEXT_BASE" hex + range 0 0xffffffff default ARCH_TEXT_BASE help - The Address barebox gets linked at. + The 32-bit address barebox gets linked at. This is forced + to zero for relocatable barebox and fixed up at runtime, + so barebox is executable on arbitrary addresses (given + sufficient alignment). config BAREBOX_MAX_IMAGE_SIZE prompt "Maximum size of barebox" @@ -276,6 +277,11 @@ config MALLOC_SIZE hex default 0x400000 prompt "malloc area size" + +config MALLOC_ALIGNMENT + hex + default 8 + endmenu config BROKEN @@ -347,16 +353,40 @@ config RELOCATABLE allowing it to relocate to the end of the available RAM. This way you have the whole memory in a single piece. -config PANIC_HANG - bool "hang the system in case of a fatal error" - help - This option enables stop of the system in case of a - fatal error, so that you have to reset it manually. - This is probably NOT a good idea for an embedded - system where you want the system to reboot - automatically as fast as possible, but it may be - useful during development since you can try to debug - the conditions that lead to the situation. +choice + prompt "Configure action on fatal error" + default PANIC_RESET + + config PANIC_POWEROFF + bool "power off the system" + help + This option shuts down the system in case of a + fatal error, so that you have to power it on manually. + This is probably NOT a good idea for an embedded + system where you want the system to reboot + automatically as fast as possible, but it may be + useful in emulation, because the system returns + to parent shell immediately. + + config PANIC_HANG + bool "hang the system" + help + This option enables stop of the system in case of a + fatal error, so that you have to reset it manually. + This is probably NOT a good idea for an embedded + system where you want the system to reboot + automatically as fast as possible, but it may be + useful during development since you can try to debug + the conditions that lead to the situation. + + config PANIC_RESET + bool "reset the system" + help + This option enables reset of the system in case of a + fatal error, so you don't have to reset it manually. + This is the recommended configuration in production. + +endchoice config PROMPT string @@ -518,15 +548,6 @@ endchoice endif -config DYNAMIC_CRC_TABLE - bool - depends on CRC32 - prompt "Generate the crc32 table dynamically" - default y - help - Saying yes to this option saves around 800 bytes of binary size. - If unsure say yes. - config ERRNO_MESSAGES bool prompt "print error values as text" @@ -536,12 +557,11 @@ config TIMESTAMP bool default y select GREGORIAN_CALENDER - prompt "print timestamp information from images" + prompt "print timestamp information from uImages" help When CONFIG_TIMESTAMP is selected, the timestamp - (date and time) of an image is printed by image - commands like bootm or iminfo. This option is - automatically enabled when you select CFG_CMD_DATE . + (date and time) of an uImage is printed by image + commands like bootm or uimage. menuconfig BOOTM select UIMAGE @@ -603,6 +623,9 @@ config BOOTM_AIMAGE help Support using Android Images. +config PE + bool "PE/COFF Support" if COMPILE_TEST + config ELF bool "ELF Support" if COMPILE_TEST @@ -643,9 +666,10 @@ config BOOTM_FITIMAGE_PUBKEY_ENV bool "Specify path to public key in environment" depends on BOOTM_FITIMAGE_SIGNATURE help - If this option is enabled the path to the public key for verifying - FIT images signature is taken from environment which allows for - better integration with build systems. + If this option is enabled the path to the device tree snippet + containing the public key for verifying FIT images signature is taken + from make's build-time environment, which can allow for better + integration with some build systems. The environment variable has the same name as the corresponding Kconfig variable: @@ -663,6 +687,10 @@ config BOOTM_FITIMAGE_PUBKEY snippet can then be included in a device tree with "#include CONFIG_BOOTM_FITIMAGE_PUBKEY". + This snippet is usually generated by decompiling a device tree produced + by mkimage. An alternative is CONFIG_CRYPTO_RSA_KEY, which takes a PEM + file or a PKCS#11 URI. + endif config BOOTM_FORCE_SIGNED_IMAGES @@ -683,8 +711,8 @@ config BLSPEC bool prompt "Support bootloader spec" help - Enable this to let barebox support the Freedesktop bootloader spec, - see: http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/ + Enable this to let barebox support the UAPI bootloader spec, + see: https://uapi-group.org/specifications/specs/boot_loader_specification/ The bootloader spec is a standard interface between the bootloader and the kernel. It allows the bootloader to discover boot options on a device and it allows the Operating System to install / update @@ -714,7 +742,7 @@ config MMCBLKDEV_ROOTARG kernel doesn't contain commit [1]. The first linux kernel release containing that commit is v5.10-rc1. - The appending only happen if barebox 'linux.bootargs.bootm.appendroot' + The appending only happens if barebox' 'linux.bootargs.bootm.appendroot' variable is set or the used blspec entry contains 'linux-appendroot'. Note: It is crucial that the kernel device tree and the barebox device @@ -812,6 +840,16 @@ config CONSOLE_ALLOW_COLOR compile time default for colored console output. After boot it can be controlled using global.allow_color. +config CONSOLE_FLUSH_LINE_BREAK + bool "Flush consoles on new line" if COMPILE_TEST + help + Many serial drivers configure and use hardware FIFOs as not to + delay the boot. When debuging some king of bugs, such as clock + issues that hang the SoC, this can falsify debugging output, + because the UART doesn't output a submitted message fully, before + the SoC hangs. This option will flush serial FIFOs when processing + the new line feed characters. + config CONSOLE_DISABLE_INPUT prompt "Disable input on all consoles by default (non-interactive)" def_bool CONSOLE_NONE @@ -840,6 +878,9 @@ config PARTITION bool prompt "Enable Partitions" +config PARTITION_MANIPULATION + bool + source "common/partitions/Kconfig" config ENV_HANDLING @@ -1004,7 +1045,7 @@ config POLLER config BTHREAD bool "barebox co-operative (green) thread infrastructure" select HAS_SCHED - depends on HAS_ARCH_SJLJ + depends on ARCH_HAS_SJLJ help barebox threads are lightweight cooperative (green) threads that are scheduled within delay loops and the console idle to asynchronously @@ -1016,6 +1057,8 @@ config STATE select ENVIRONMENT_VARIABLES select OFTREE select PARAMETER + imply STATE_DRV + imply CMD_STATE help barebox state is a generic framework for atomic power fail-safe variable storage and retrieval. It can be used to safely maintain @@ -1119,20 +1162,38 @@ config EXTERNAL_DTS_FRAGMENTS menu "OP-TEE loading" +config HAVE_OPTEE + bool + help + This symbol is selected by configuration where barebox either + starts OP-TEE or runs while OP-TEE is running. Actual + bidirectional communication with OP-TEE is enabled via + CONFIG_OPTEE. + config OPTEE_SIZE hex default 0x02000000 prompt "OP-TEE Memory Size" - depends on BOOTM_OPTEE || PBL_OPTEE + depends on HAVE_OPTEE help Size to reserve in main memory for OP-TEE. Can be smaller than the actual size used by OP-TEE, this is used to prevent barebox from allocating memory in this area. +config OPTEE_SHM_SIZE + hex + default 0x400000 + prompt "OP-TEE Shared Memory Size" + depends on HAVE_OPTEE + help + Size to reserve in main memory for OP-TEE shared memory communication. + Can be used for fixing up the OP-TEE OF node. + config BOOTM_OPTEE bool prompt "support booting OP-TEE" - depends on BOOTM && ARM + depends on BOOTM && ARM && 32BIT + select HAVE_OPTEE help OP-TEE is a trusted execution environment (TEE). With this option enabled barebox supports starting optee_os as part of the bootm command. @@ -1144,6 +1205,7 @@ config PBL_OPTEE bool "Enable OP-TEE early start" depends on ARM depends on !THUMB2_BAREBOX + select HAVE_OPTEE help Allows starting OP-TEE during lowlevel initialization of the PBL. Requires explicit support in the board's lowlevel file. @@ -1177,448 +1239,8 @@ endif endmenu -menu "Debugging" - -config COMPILE_LOGLEVEL - int "compile loglevel" - default 6 - help - This defines the maximum loglevel compiled into the binary. Less important - messages will be compiled away resulting in a smaller binary. - - 0 system is unusable (emerg) - 1 action must be taken immediately (alert) - 2 critical conditions (crit) - 3 error conditions (err) - 4 warning conditions (warn) - 5 normal but significant condition (notice) - 6 informational (info) - 7 debug-level messages (debug) - 8 verbose debug messages (vdebug) - -config DEFAULT_LOGLEVEL - int "default loglevel" - default 7 - help - This defines the default runtime loglevel. It can be changed using the - global.loglevel variable. Available logelevels are: - - 0 system is unusable (emerg) - 1 action must be taken immediately (alert) - 2 critical conditions (crit) - 3 error conditions (err) - 4 warning conditions (warn) - 5 normal but significant condition (notice) - 6 informational (info) - 7 debug-level messages (debug) - 8 verbose debug messages (vdebug) - -config DEBUG_LL - bool - depends on HAS_DEBUG_LL - prompt "Low level debug messages (read help)" - help - Enable this to get low level debug messages during barebox - initialization. This is helpful if you are debugging code that - executes before the console is initialized. - - This requires SoC specific support. Most SoCs require the - debug UART to be initialized by a debugger or first stage - bootloader. - - Note that selecting this option will limit barebox to a single - UART definition, as specified below under "low-level debugging - port". Attempting to boot the resulting image on a different - platform *will not work*, so this option should not be enabled - for builds that are intended to be portable. - -config ARCH_WANT_FRAME_POINTERS - bool - -config FRAME_POINTER - bool "Compile barebox with frame pointers" if COMPILE_TEST - default y if ARCH_WANT_FRAME_POINTERS - help - Selected by platforms that expect frame pointer usage, e.g. - when stack unwinding is enabled. The resulting barebox image - will be slightly larger and slower, but it can give precise - debugging information when print stack traces. - -choice - prompt "Kernel low-level debugging port" - depends on DEBUG_LL - -config DEBUG_IMX1_UART - bool "i.MX1 Debug UART" - depends on ARCH_IMX1 - help - Say Y here if you want kernel low-level debugging support - on i.MX1. - -config DEBUG_IMX21_UART - bool "i.MX21 Debug UART" - depends on ARCH_IMX21 - help - Say Y here if you want kernel low-level debugging support - on i.MX21. - -config DEBUG_IMX25_UART - bool "i.MX25 Debug UART" - depends on ARCH_IMX25 - help - Say Y here if you want kernel low-level debugging support - on i.MX25. - -config DEBUG_IMX27_UART - bool "i.MX27 Debug UART" - depends on ARCH_IMX27 - help - Say Y here if you want kernel low-level debugging support - on i.MX27. - -config DEBUG_IMX31_UART - bool "i.MX31 Debug UART" - depends on ARCH_IMX31 - help - Say Y here if you want kernel low-level debugging support - on i.MX31. - -config DEBUG_IMX35_UART - bool "i.MX35 Debug UART" - depends on ARCH_IMX35 - help - Say Y here if you want kernel low-level debugging support - on i.MX35. - -config DEBUG_IMX50_UART - bool "i.MX50 Debug UART" - depends on ARCH_IMX50 - help - Say Y here if you want kernel low-level debugging support - on i.MX50. - -config DEBUG_IMX51_UART - bool "i.MX51 Debug UART" - depends on ARCH_IMX51 - help - Say Y here if you want kernel low-level debugging support - on i.MX51. - -config DEBUG_IMX53_UART - bool "i.MX53 Debug UART" - depends on ARCH_IMX53 - help - Say Y here if you want kernel low-level debugging support - on i.MX53. - -config DEBUG_IMX6Q_UART - bool "i.MX6Q Debug UART" - depends on ARCH_IMX6 - help - Say Y here if you want kernel low-level debugging support - on i.MX6Q. - -config DEBUG_IMX7D_UART - bool "i.MX7D Debug UART" - depends on ARCH_IMX7 - help - Say Y here if you want barebox low-level debugging support - on i.MX7D. - -config DEBUG_IMX8M_UART - bool "i.MX8M Debug UART" - depends on ARCH_IMX8M - help - Say Y here if you want barebox low-level debugging support - on i.MX8M*. - -config DEBUG_VF610_UART - bool "VF610 Debug UART" - depends on ARCH_VF610 - help - Say Y here if you want kernel low-level debugging support - on VF610. - -config DEBUG_OMAP3_UART - bool "OMAP3 Debug UART" - depends on ARCH_OMAP3 - help - Say Y here if you want kernel low-level debugging support - on OMAP3. - -config DEBUG_OMAP4_UART - bool "OMAP4 Debug UART" - depends on ARCH_OMAP4 - help - Say Y here if you want kernel low-level debugging support - on OMAP4. - -config DEBUG_AM33XX_UART - bool "AM33XX Debug UART" - depends on ARCH_AM33XX - help - Say Y here if you want kernel low-level debugging support - on AM33XX. - -config DEBUG_ROCKCHIP_RK3188_UART - bool "RK3188 Debug UART" - depends on ARCH_RK3188 - help - Say Y here if you want kernel low-level debugging support - on RK3188. - -config DEBUG_ROCKCHIP_RK3288_UART - bool "RK3288 Debug UART" - depends on ARCH_RK3288 - help - Say Y here if you want kernel low-level debugging support - on RK3288. - -config DEBUG_ROCKCHIP_RK3568_UART - bool "RK3568 Debug UART" - depends on ARCH_RK3568 - help - Say Y here if you want kernel low-level debugging support - on RK3568. - -config DEBUG_ROCKCHIP_RK3399_UART - bool "RK3399 Debug UART" - depends on ARCH_RK3399 - help - Say Y here if you want kernel low-level debugging support - on RK3399. - -config DEBUG_SOCFPGA_UART0 - bool "Use SOCFPGA UART0 for low-level debug" - depends on ARCH_SOCFPGA - help - Say Y here if you want kernel low-level debugging support - on SOCFPGA(Cyclone 5 and Arria 5) based platforms. - -config DEBUG_SOCFPGA_UART1 - bool "Use SOCFPGA UART1 for low-level debug" - depends on ARCH_SOCFPGA - help - Say Y here if you want kernel low-level debugging support - on SOCFPGA(Arria 10) based platforms. - -config DEBUG_RPI1_UART - bool "RaspberryPi 1 PL011 UART" - depends on ARCH_BCM283X - help - Say Y here if you want low-level debugging support on - RaspberryPi 1 boards. - -config DEBUG_AT91_UART - bool "AT91 Debug UART" - depends on ARCH_AT91 - help - Say Y here if you want barebox low-level debugging support - on AT91 based platforms. - -config DEBUG_RPI2_3_UART - bool "RaspberryPi 2/3 PL011 UART" - depends on ARCH_BCM283X - help - Say Y here if you want low-level debugging support on - RaspberryPi 2 and 3 boards. - -config DEBUG_RPI3_MINI_UART - bool "RaspberryPi 3 mini UART" - depends on ARCH_BCM283X - help - Say Y here if you want low-level debugging support on - RaspberryPi 3 board mini UART. - -config DEBUG_RPI4_MINI_UART - bool "RaspberryPi 4 mini UART" - depends on ARCH_BCM283X - help - Say Y here if you want low-level debugging support on - RaspberryPi 4 board mini UART. - -config DEBUG_ERIZO - bool "Erizo ns16550 port" - depends on SOC_ERIZO - select DEBUG_LL_NS16550 - -config DEBUG_STARFIVE - bool "Starfive ns16550 serial0 port" - depends on SOC_STARFIVE - select DEBUG_LL_NS16550 - -config DEBUG_RISCV_VIRT - bool "RISC-V Virt ns16550 port" - depends on SOC_VIRT - select DEBUG_LL_NS16550 - -config DEBUG_RISCVEMU_HTIF - bool "riscvemu HTIF port" - depends on SOC_VIRT - help - When run without graphics support, tinyemu will expose access - to the Virt I/O console as HTIF blocking console device as well. - This is useful for low level debugging before Virt I/O DMA is - initialized. - -config DEBUG_SIFIVE - bool "SiFive serial0 port" - depends on SOC_SIFIVE - -config DEBUG_LITEX - bool "LiteX serial port" - depends on SOC_LITEX - -endchoice - -config DEBUG_LL_NS16550 - bool - help - Selected by RISC-V platforms that use ns16550 for debug_ll - -config DEBUG_IMX_UART_PORT - int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \ - DEBUG_IMX21_UART || \ - DEBUG_IMX25_UART || \ - DEBUG_IMX27_UART || \ - DEBUG_IMX31_UART || \ - DEBUG_IMX35_UART || \ - DEBUG_IMX51_UART || \ - DEBUG_IMX53_UART || \ - DEBUG_IMX6Q_UART || \ - DEBUG_IMX7D_UART || \ - DEBUG_IMX8M_UART || \ - DEBUG_VF610_UART - default 1 - depends on ARCH_IMX - help - Choose UART port on which kernel low-level debug messages - should be output. - -config DEBUG_OMAP_UART_PORT - int "OMAP Debug UART Port Selection" if DEBUG_OMAP3_UART || \ - DEBUG_OMAP4_UART || \ - DEBUG_AM33XX_UART - default 1 - depends on ARCH_OMAP - help - Choose UART port on which kernel low-level debug messages - should be output. Possible values are: - OMAP3: 1 - 3 - OMAP4: 1 - 3 - AM33XX: 0 - 2 - -config DEBUG_ROCKCHIP_UART_PORT - int "RK3xxx UART debug port" if DEBUG_ROCKCHIP_RK3188_UART || \ - DEBUG_ROCKCHIP_RK3288_UART || \ - DEBUG_ROCKCHIP_RK3568_UART || \ - DEBUG_ROCKCHIP_RK3399_UART - default 2 - depends on ARCH_ROCKCHIP - help - Choose UART port on which kernel low-level debug messages - should be output. - -config DEBUG_SOCFPGA_UART_PHYS_ADDR - hex "Physical base address of debug UART" if DEBUG_LL - default 0xffc02000 if DEBUG_SOCFPGA_UART0 - default 0xffc02100 if DEBUG_SOCFPGA_UART1 - depends on ARCH_SOCFPGA - -config DEBUG_SOCFPGA_UART_CLOCK - int "SoCFPGA UART debug clock" if DEBUG_LL - default 100000000 if ARCH_SOCFPGA_CYCLONE5 - default 50000000 if ARCH_SOCFPGA_ARRIA10 - depends on ARCH_SOCFPGA - help - Choose UART root clock. - - -config DEBUG_LAYERSCAPE_UART_PORT - int "Layerscape UART port selection" - depends on ARCH_LAYERSCAPE - default 1 - help - Select the UART port number used for early debugging here. Port - numbers start counting from 1. - -config DEBUG_AT91_UART_BASE - hex "AT91 Debug UART Port Selection" if DEBUG_AT91_UART - default 0xfffff200 if SOC_AT91RM9200 || SOC_AT91SAM9260 \ - || SOC_AT91SAM9261 || SOC_AT91SAM9X5 \ - || SOC_AT91SAM9N12 - default 0xffffee00 if SOC_AT91SAM9263 || SOC_AT91SAM9G45 || SOC_SAMA5D3 - default 0xfc069000 if SOC_SAMA5D4 - default 0xf8020000 if SOC_SAMA5D2 - default 0xfffff200 - depends on ARCH_AT91 - help - Specify UART port base address on which barebox low-level - debug messages should be output. - -config DEBUG_INITCALLS - bool "Trace initcalls" - help - If enabled this will print initcall traces. - -config DEBUG_PROBES - bool "Trace driver probes/removes" - help - If enabled this will log driver probe and remove traces. If DEBUG_LL is enabled, - probes will be printed even before registering consoles. If it's disabled, they - will be collected in the log and written out once a console is active. - - Removes are written to the log and will be printed as long as consoles exist. - Most consoles do not implement a remove callback to remain operable until - the very end. Consoles using DMA, however, must be removed. - -config PBL_BREAK - bool "Execute software break on pbl start" - depends on ARM && (!CPU_32v4T && !ARCH_TEGRA) - help - If enabled, barebox will be compiled with BKPT instruction - on early pbl init. This option should be used only with JTAG debugger! - -config PRINTF_FULL - bool "Support all extended printf format specifiers" - help - Adds support for lesser used format specifiers like UUIDs and - hex strings. Code requiring them should select it directly, - so this is mainly for debugging. If unsure, say no. - -source "lib/Kconfig.ubsan" -source "lib/kasan/Kconfig" - -config ASAN - bool "ASAN: runtime memory debugger" - depends on HAVE_ARCH_ASAN - help - Enables ASAN (AddressSANitizer) - runtime memory debugger, - designed to find out-of-bounds accesses and use-after-free bugs. - -config COMPILE_TEST - bool "compile-test drivers of other platforms" - default n - help - Some drivers can be compiled on a different platform than they are - intended to be run on. Despite they cannot be used there due to - missing HW support, developers still, opposing to users, might want - to build such drivers to compile-test them. - - If you are a developer and want to build as much as currently possible, - say Y here. If you are a user, say N here to avoid being prompted for - inclusion of unrelated drivers. - -endmenu - -source "common/efi/Kconfig" - -config HAS_DEBUG_LL - bool - -config HAS_ASM_DEBUG_LL - bool - select HAS_DEBUG_LL +source "common/Kconfig.debug" +source "common/boards/Kconfig" config DDR_SPD bool @@ -1626,3 +1248,9 @@ config DDR_SPD config HAVE_ARCH_ASAN bool + +config ARCH_USE_SYM_ANNOTATIONS + bool + help + This is selected by architectures that exclusively use the new SYM_ + macros in their assembly code and not the deprecated ENTRY/PROC. |