efi_loader: change setup sequence
[oweals/u-boot.git] / lib / Kconfig
index a77bf1c688affc9f72ebd10ed0df1c2d4f9672dc..868de3bf3b813aff6cf75d95c760986be05d23d1 100644 (file)
@@ -7,6 +7,16 @@ config BCH
          This is used by SoC platforms which do not have built-in ELM
          hardware engine required for BCH ECC correction.
 
          This is used by SoC platforms which do not have built-in ELM
          hardware engine required for BCH ECC correction.
 
+config BINMAN_FDT
+       bool "Allow access to binman information in the device tree"
+       depends on BINMAN && OF_CONTROL
+       default y
+       help
+         This enables U-Boot to access information about binman entries,
+         stored in the device tree in a binman node. Typical uses are to
+         locate entries in the firmware image. See binman.h for the available
+         functionality.
+
 config CC_OPTIMIZE_LIBS_FOR_SPEED
        bool "Optimize libraries for speed"
        help
 config CC_OPTIMIZE_LIBS_FOR_SPEED
        bool "Optimize libraries for speed"
        help
@@ -21,6 +31,12 @@ config DYNAMIC_CRC_TABLE
          Enable this option to calculate entries for CRC tables at runtime.
          This can be helpful when reducing the size of the build image
 
          Enable this option to calculate entries for CRC tables at runtime.
          This can be helpful when reducing the size of the build image
 
+config HAVE_ARCH_IOMAP
+       bool
+       help
+         Enable this option if architecture provides io{read,write}{8,16,32}
+         I/O accessor functions.
+
 config HAVE_PRIVATE_LIBGCC
        bool
 
 config HAVE_PRIVATE_LIBGCC
        bool
 
@@ -34,12 +50,12 @@ config PRINTF
 config SPL_PRINTF
        bool
        select SPL_SPRINTF
 config SPL_PRINTF
        bool
        select SPL_SPRINTF
-       select SPL_STRTO if !USE_TINY_PRINTF
+       select SPL_STRTO if !SPL_USE_TINY_PRINTF
 
 config TPL_PRINTF
        bool
        select TPL_SPRINTF
 
 config TPL_PRINTF
        bool
        select TPL_SPRINTF
-       select TPL_STRTO if !USE_TINY_PRINTF
+       select TPL_STRTO if !TPL_USE_TINY_PRINTF
 
 config SPRINTF
        bool
 
 config SPRINTF
        bool
@@ -89,8 +105,22 @@ config SYS_HZ
          get_timer() must operate in milliseconds and this option must be
          set to 1000.
 
          get_timer() must operate in milliseconds and this option must be
          set to 1000.
 
-config USE_TINY_PRINTF
-       bool "Enable tiny printf() version"
+config SPL_USE_TINY_PRINTF
+       bool "Enable tiny printf() version in SPL"
+       depends on SPL
+       default y
+       help
+         This option enables a tiny, stripped down printf version.
+         This should only be used in space limited environments,
+         like SPL versions with hard memory limits. This version
+         reduces the code size by about 2.5KiB on armv7.
+
+         The supported format specifiers are %c, %s, %u/%d and %x.
+
+config TPL_USE_TINY_PRINTF
+       bool "Enable tiny printf() version in TPL"
+       depends on TPL
+       default y if SPL_USE_TINY_PRINTF
        help
          This option enables a tiny, stripped down printf version.
          This should only be used in space limited environments,
        help
          This option enables a tiny, stripped down printf version.
          This should only be used in space limited environments,
@@ -120,7 +150,8 @@ config REGEX
 
 choice
        prompt "Pseudo-random library support type"
 
 choice
        prompt "Pseudo-random library support type"
-       depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID
+       depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
+                  RNG_SANDBOX || UT_LIB && AES
        default LIB_RAND
        help
          Select the library to provide pseudo-random number generator
        default LIB_RAND
        help
          Select the library to provide pseudo-random number generator
@@ -141,7 +172,7 @@ config SPL_TINY_MEMSET
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
          better performance by writing a word at a time. But in very
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
          better performance by writing a word at a time. But in very
-         size-constrained envrionments even this may be too big. Enable this
+         size-constrained environments even this may be too big. Enable this
          option to reduce code size slightly at the cost of some speed.
 
 config TPL_TINY_MEMSET
          option to reduce code size slightly at the cost of some speed.
 
 config TPL_TINY_MEMSET
@@ -150,7 +181,7 @@ config TPL_TINY_MEMSET
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
          better performance by writing a word at a time. But in very
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
          better performance by writing a word at a time. But in very
-         size-constrained envrionments even this may be too big. Enable this
+         size-constrained environments even this may be too big. Enable this
          option to reduce code size slightly at the cost of some speed.
 
 config RBTREE
          option to reduce code size slightly at the cost of some speed.
 
 config RBTREE
@@ -159,6 +190,78 @@ config RBTREE
 config BITREVERSE
        bool "Bit reverse library from Linux"
 
 config BITREVERSE
        bool "Bit reverse library from Linux"
 
+config TRACE
+       bool "Support for tracing of function calls and timing"
+       imply CMD_TRACE
+       help
+         Enables function tracing within U-Boot. This allows recording of call
+         traces including timing information. The command can write data to
+         memory for exporting for analysis (e.g. using bootchart).
+         See doc/README.trace for full details.
+
+config TRACE_BUFFER_SIZE
+       hex "Size of trace buffer in U-Boot"
+       depends on TRACE
+       default 0x01000000
+       help
+         Sets the size of the trace buffer in U-Boot. This is allocated from
+         memory during relocation. If this buffer is too small, the trace
+         history will be truncated, with later records omitted.
+
+         If early trace is enabled (i.e. before relocation), this buffer must
+         be large enough to include all the data from the early trace buffer as
+         well, since this is copied over to the main buffer during relocation.
+
+         A trace record is emitted for each function call and each record is
+         12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
+         the size is too small then 'trace stats' will show a message saying
+         how many records were dropped due to buffer overflow.
+
+config TRACE_CALL_DEPTH_LIMIT
+       int "Trace call depth limit"
+       depends on TRACE
+       default 15
+       help
+         Sets the maximum call depth up to which function calls are recorded.
+
+config TRACE_EARLY
+       bool "Enable tracing before relocation"
+       depends on TRACE
+       help
+         Sometimes it is helpful to trace execution of U-Boot before
+         relocation. This is possible by using a arch-specific, fixed buffer
+         position in memory. Enable this option to start tracing as early as
+         possible after U-Boot starts.
+
+config TRACE_EARLY_SIZE
+       hex "Size of early trace buffer in U-Boot"
+       depends on TRACE_EARLY
+       default 0x00100000
+       help
+         Sets the size of the early trace buffer in bytes. This is used to hold
+         tracing information before relocation.
+
+config TRACE_EARLY_CALL_DEPTH_LIMIT
+       int "Early trace call depth limit"
+       depends on TRACE_EARLY
+       default 200
+       help
+         Sets the maximum call depth up to which function calls are recorded
+         during early tracing.
+
+config TRACE_EARLY_ADDR
+       hex "Address of early trace buffer in U-Boot"
+       depends on TRACE_EARLY
+       default 0x00100000
+       help
+         Sets the address of the early trace buffer in U-Boot. This memory
+         must be accessible before relocation.
+
+         A trace record is emitted for each function call and each record is
+         12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
+         the size is too small then the message which says the amount of early
+         data being coped will the the same as the
+
 source lib/dhry/Kconfig
 
 menu "Security support"
 source lib/dhry/Kconfig
 
 menu "Security support"
@@ -173,6 +276,7 @@ config AES
          present.
 
 source lib/rsa/Kconfig
          present.
 
 source lib/rsa/Kconfig
+source lib/crypto/Kconfig
 
 config TPM
        bool "Trusted Platform Module (TPM) Support"
 
 config TPM
        bool "Trusted Platform Module (TPM) Support"
@@ -185,6 +289,28 @@ config TPM
          for the low-level TPM interface, but only one TPM is supported at
          a time by the TPM library.
 
          for the low-level TPM interface, but only one TPM is supported at
          a time by the TPM library.
 
+config SPL_TPM
+       bool "Trusted Platform Module (TPM) Support in SPL"
+       depends on SPL_DM
+       help
+         This enables support for TPMs which can be used to provide security
+         features for your board. The TPM can be connected via LPC or I2C
+         and a sandbox TPM is provided for testing purposes. Use the 'tpm'
+         command to interactive the TPM. Driver model support is provided
+         for the low-level TPM interface, but only one TPM is supported at
+         a time by the TPM library.
+
+config TPL_TPM
+       bool "Trusted Platform Module (TPM) Support in TPL"
+       depends on TPL_DM
+       help
+         This enables support for TPMs which can be used to provide security
+         features for your board. The TPM can be connected via LPC or I2C
+         and a sandbox TPM is provided for testing purposes. Use the 'tpm'
+         command to interactive the TPM. Driver model support is provided
+         for the low-level TPM interface, but only one TPM is supported at
+         a time by the TPM library.
+
 endmenu
 
 menu "Android Verified Boot"
 endmenu
 
 menu "Android Verified Boot"
@@ -242,6 +368,9 @@ config MD5
 config CRC32C
        bool
 
 config CRC32C
        bool
 
+config XXHASH
+       bool
+
 endmenu
 
 menu "Compression Support"
 endmenu
 
 menu "Compression Support"
@@ -273,6 +402,43 @@ config LZO
        help
          This enables support for LZO compression algorithm.r
 
        help
          This enables support for LZO compression algorithm.r
 
+config GZIP
+       bool "Enable gzip decompression support"
+       select ZLIB
+       default y
+       help
+         This enables support for GZIP compression algorithm.
+
+config BZIP2
+       bool "Enable bzip2 decompression support"
+       help
+         This enables support for BZIP2 compression algorithm.
+
+config ZLIB
+       bool
+       default y
+       help
+         This enables ZLIB compression lib.
+
+config ZSTD
+       bool "Enable Zstandard decompression support"
+       select XXHASH
+       help
+         This enables Zstandard decompression library.
+
+config SPL_LZ4
+       bool "Enable LZ4 decompression support in SPL"
+       help
+         This enables support for tge LZ4 decompression algorithm in SPL. LZ4
+         is a lossless data compression algorithm that is focused on
+         fast compression and decompression speed. It belongs to the LZ77
+         family of byte-oriented compression schemes.
+
+config SPL_LZMA
+       bool "Enable LZMA decompression support for SPL build"
+       help
+         This enables support for LZMA compression altorithm for SPL boot.
+
 config SPL_LZO
        bool "Enable LZO decompression support in SPL"
        help
 config SPL_LZO
        bool "Enable LZO decompression support in SPL"
        help
@@ -289,6 +455,12 @@ config SPL_ZLIB
        help
          This enables compression lib for SPL boot.
 
        help
          This enables compression lib for SPL boot.
 
+config SPL_ZSTD
+       bool "Enable Zstandard decompression support in SPL"
+       select XXHASH
+       help
+         This enables Zstandard decompression library in the SPL.
+
 endmenu
 
 config ERRNO_STR
 endmenu
 
 config ERRNO_STR
@@ -314,6 +486,17 @@ config OF_LIBFDT
          particular compatible nodes. The library operates on a flattened
          version of the device tree.
 
          particular compatible nodes. The library operates on a flattened
          version of the device tree.
 
+config OF_LIBFDT_ASSUME_MASK
+       hex "Mask of conditions to assume for libfdt"
+       depends on OF_LIBFDT || FIT
+       default 0
+       help
+         Use this to change the assumptions made by libfdt about the
+         device tree it is working with. A value of 0 means that no assumptions
+         are made, and libfdt is able to deal with malicious data. A value of
+         0xff means all assumptions are made and any invalid data may cause
+         unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
+
 config OF_LIBFDT_OVERLAY
        bool "Enable the FDT library overlay support"
        depends on OF_LIBFDT
 config OF_LIBFDT_OVERLAY
        bool "Enable the FDT library overlay support"
        depends on OF_LIBFDT
@@ -331,10 +514,42 @@ config SPL_OF_LIBFDT
          particular compatible nodes. The library operates on a flattened
          version of the device tree.
 
          particular compatible nodes. The library operates on a flattened
          version of the device tree.
 
+config SPL_OF_LIBFDT_ASSUME_MASK
+       hex "Mask of conditions to assume for libfdt"
+       depends on SPL_OF_LIBFDT || FIT
+       default 0xff
+       help
+         Use this to change the assumptions made by libfdt in SPL about the
+         device tree it is working with. A value of 0 means that no assumptions
+         are made, and libfdt is able to deal with malicious data. A value of
+         0xff means all assumptions are made and any invalid data may cause
+         unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
+
+config TPL_OF_LIBFDT
+       bool "Enable the FDT library for TPL"
+       default y if TPL_OF_CONTROL
+       help
+         This enables the FDT library (libfdt). It provides functions for
+         accessing binary device tree images in memory, such as adding and
+         removing nodes and properties, scanning through the tree and finding
+         particular compatible nodes. The library operates on a flattened
+         version of the device tree.
+
+config TPL_OF_LIBFDT_ASSUME_MASK
+       hex "Mask of conditions to assume for libfdt"
+       depends on TPL_OF_LIBFDT || FIT
+       default 0xff
+       help
+         Use this to change the assumptions made by libfdt in TPL about the
+         device tree it is working with. A value of 0 means that no assumptions
+         are made, and libfdt is able to deal with malicious data. A value of
+         0xff means all assumptions are made and any invalid data may cause
+         unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
+
 config FDT_FIXUP_PARTITIONS
        bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
        depends on OF_LIBFDT
 config FDT_FIXUP_PARTITIONS
        bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
        depends on OF_LIBFDT
-       default n
+       depends on CMD_MTDPARTS
        help
          Allow overwriting defined partitions in the device tree blob
          using partition info defined in the 'mtdparts' environment
        help
          Allow overwriting defined partitions in the device tree blob
          using partition info defined in the 'mtdparts' environment
@@ -373,8 +588,34 @@ config SMBIOS_PRODUCT_NAME
 
 endmenu
 
 
 endmenu
 
+config ASN1_COMPILER
+       bool
+
+config ASN1_DECODER
+       bool
+       help
+         Enable asn1 decoder library.
+
+config OID_REGISTRY
+       bool
+       help
+         Enable fast lookup object identifier registry.
+
 source lib/efi/Kconfig
 source lib/efi_loader/Kconfig
 source lib/optee/Kconfig
 
 source lib/efi/Kconfig
 source lib/efi_loader/Kconfig
 source lib/optee/Kconfig
 
+config TEST_FDTDEC
+       bool "enable fdtdec test"
+       depends on OF_LIBFDT
+
+config LIB_DATE
+       bool
+
+config LIB_ELF
+       bool
+       help
+         Supoort basic elf loading/validating functions.
+         This supports fir 32 bit and 64 bit versions.
+
 endmenu
 endmenu