1 ## SPDX-License-Identifier: GPL-2.0-only
3 mainmenu "coreboot configuration"
8 string "Local version string"
10 Append an extra string to the end of the coreboot version.
12 This can be useful if, for instance, you want to append the
13 respective board's hostname or some other identifying string to
14 the coreboot version number, so that you can easily distinguish
15 boot logs of different boards from each other.
17 config CONFIGURABLE_CBFS_PREFIX
20 Select this to prompt to use to configure the prefix for cbfs files.
23 prompt "CBFS prefix to use"
24 depends on CONFIGURABLE_CBFS_PREFIX
25 default CBFS_PREFIX_FALLBACK
27 config CBFS_PREFIX_FALLBACK
30 config CBFS_PREFIX_NORMAL
33 config CBFS_PREFIX_DIY
34 bool "Define your own cbfs prefix"
39 string "CBFS prefix to use" if CBFS_PREFIX_DIY
40 default "fallback" if !CONFIGURABLE_CBFS_PREFIX || CBFS_PREFIX_FALLBACK
41 default "normal" if CBFS_PREFIX_NORMAL
43 Select the prefix to all files put into the image. It's "fallback"
44 by default, "normal" is a common alternative.
46 config DEFAULT_COMPILER_LLVM_CLANG
49 Allows to override the default compiler. This can for instance be
50 set in site-local/Kconfig.
53 prompt "Compiler to use"
54 default COMPILER_LLVM_CLANG if DEFAULT_COMPILER_LLVM_CLANG
57 This option allows you to select the compiler used for building
59 You must build the coreboot crosscompiler for the board that you
62 To build all the GCC crosscompilers (takes a LONG time), run:
65 For help on individual architectures, run the command:
71 Use the GNU Compiler Collection (GCC) to build coreboot.
73 For details see http://gcc.gnu.org.
75 config COMPILER_LLVM_CLANG
77 depends on ALLOW_EXPERIMENTAL_CLANG || !CLANG_UNSUPPORTED
79 Use LLVM/clang to build coreboot. To use this, you must build the
80 coreboot version of the clang compiler. Run the command
82 Note that Clang is not currently working on all architectures.
84 For details see http://clang.llvm.org.
88 config CLANG_UNSUPPORTED
91 Set this flag on platforms that do not support building with the
94 config ALLOW_EXPERIMENTAL_CLANG
95 bool "Allow experimental LLVM/Clang"
96 depends on CLANG_UNSUPPORTED
98 On some architectures CLANG does not work that well.
99 Use this only to try to get CLANG working.
102 bool "Allow building with any toolchain"
105 Many toolchains break when building coreboot since it uses quite
106 unusual linker features. Unless developers explicitly request it,
107 we'll have to assume that they use their distro compiler by mistake.
108 Make sure that using patched compilers is a conscious decision.
111 bool "Use ccache to speed up (re)compilation"
113 Enables the use of ccache for faster builds.
115 Requires the ccache utility in your system $PATH.
117 For details see https://ccache.samba.org.
120 bool "Use link time optimization (LTO) (experimental)"
123 Compile with link time optimization. This can often decrease the
124 final binary size, but may increase compilation time.
127 bool "Test platform with include-what-you-use"
129 This runs each source file through the include-what-you-use tool
130 to check the header includes.
133 bool "Generate flashmap descriptor parser using flex and bison"
136 Enable this option if you are working on the flashmap descriptor
137 parser and made changes to fmd_scanner.l or fmd_parser.y.
139 Otherwise, say N to use the provided pregenerated scanner/parser.
141 config UTIL_GENPARSER
142 bool "Generate parsers for bincfg, sconfig and kconfig locally"
145 Enable this option if you are working on the sconfig device tree
146 parser or bincfg and made changes to the .l or .y files.
148 Otherwise, say N to use the provided pregenerated scanner/parser.
151 prompt "Option backend to use"
152 default USE_MAINBOARD_SPECIFIC_OPTION_BACKEND if HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
153 default USE_OPTION_TABLE if NVRAMCUI_SECONDARY_PAYLOAD
154 default USE_UEFI_VARIABLE_STORE if DRIVERS_EFI_VARIABLE_STORE && \
155 PAYLOAD_EDK2 && SMMSTORE_V2
157 config OPTION_BACKEND_NONE
160 config USE_OPTION_TABLE
161 bool "Use CMOS for configuration values"
162 depends on HAVE_OPTION_TABLE
164 Enable this option if coreboot shall read options from the "CMOS"
165 NVRAM instead of using hard-coded values.
167 config USE_UEFI_VARIABLE_STORE
168 bool "Use UEFI variable-store in SPI flash as option backend"
169 depends on DRIVERS_EFI_VARIABLE_STORE
170 depends on SMMSTORE_V2
172 Enable this option if coreboot shall read/write options from the
173 SMMSTORE region within the SPI flash. The region must be formatted
174 by the payload first before it can be used.
176 config USE_MAINBOARD_SPECIFIC_OPTION_BACKEND
177 bool "Use mainboard-specific option backend"
178 depends on HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
180 Use a mainboard-specific mechanism to access runtime-configurable
185 config STATIC_OPTION_TABLE
186 bool "Load default configuration values into CMOS on each boot"
187 depends on USE_OPTION_TABLE
189 Enable this option to reset "CMOS" NVRAM values to default on
190 every boot. Use this if you want the NVRAM configuration to
191 never be modified from its default values.
193 config MB_COMPRESS_RAMSTAGE_LZ4
196 Select this in a mainboard to use LZ4 compression by default
199 prompt "Ramstage compression"
200 depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE
201 default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4
202 default COMPRESS_RAMSTAGE_LZMA
204 config COMPRESS_RAMSTAGE_LZMA
205 bool "Compress ramstage with LZMA"
207 Compress ramstage with LZMA to save memory in the flash image.
209 config COMPRESS_RAMSTAGE_LZ4
210 bool "Compress ramstage with LZ4"
212 LZ4 doesn't give as good compression as LZMA, but decompresses much
213 faster. For large binaries such as ramstage, it's typically best to
214 use LZMA, but there can be cases where the faster decompression of
215 LZ4 can lead to a faster boot time. Testing on each individual board
216 is typically going to be needed due to the large number of factors
217 that can influence the decision. Binary size, CPU speed, ROM read
218 speed, cache, and other factors all play a part.
220 If you're not sure, stick with LZMA.
224 config COMPRESS_PRERAM_STAGES
225 bool "Compress romstage and verstage with LZ4"
226 depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
227 # Default value set at the end of the file
229 Compress romstage and (if it exists) verstage with LZ4 to save flash
230 space and speed up boot, since the time for reading the image from SPI
231 (and in the vboot case verifying it) is usually much greater than the
232 time spent decompressing. Doesn't work for XIP stages for obvious
235 config COMPRESS_BOOTBLOCK
237 depends on HAVE_BOOTBLOCK
239 This option can be used to compress the bootblock with LZ4 and attach
240 a small self-decompression stub to its front. This can drastically
241 reduce boot time on platforms where the bootblock is loaded over a
242 very slow connection and bootblock size trumps all other factors for
243 speed. Since using this option usually requires changes to the
244 SoC memlayout and possibly extra support code, it should not be
245 user-selectable. (There's no real point in offering this to the user
246 anyway... if it works and saves boot time, you would always want it.)
248 config SEPARATE_ROMSTAGE
249 bool "Build a separate romstage"
251 Build a separate romstage that is loaded by bootblock. With this
252 option disabled the romstage sources are linked inside the bootblock
255 config INCLUDE_CONFIG_FILE
256 bool "Include the coreboot .config file into the ROM image"
257 # Default value set at the end of the file
259 Include the .config file that was used to compile coreboot
260 in the (CBFS) ROM image. This is useful if you want to know which
261 options were used to build a specific coreboot.rom image.
263 Saying Y here will increase the image size by 2-3KB.
265 You can then use cbfstool to extract the config from a final image:
267 cbfstool coreboot.rom extract -n config -f <output file path>
269 Alternatively, you can also use cbfstool to print the image
270 contents (including the raw 'config' item we're looking for).
274 $ cbfstool coreboot.rom print
275 coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304,
279 Name Offset Type Size
280 cmos_layout.bin 0x0 CMOS layout 1159
281 fallback/romstage 0x4c0 stage 339756
282 fallback/ramstage 0x53440 stage 186664
283 fallback/payload 0x80dc0 payload 51526
284 config 0x8d740 raw 3324
285 (empty) 0x8e480 null 3610440
287 config COLLECT_TIMESTAMPS
288 bool "Create a table of timestamps collected during boot"
289 default y if ARCH_X86
291 Make coreboot create a table of timer-ID/timer-value pairs to
292 allow measuring time spent at different phases of the boot process.
294 config TIMESTAMPS_ON_CONSOLE
295 bool "Print the timestamp values on the console"
297 depends on COLLECT_TIMESTAMPS
299 Print the timestamps to the debug console if enabled at level info.
302 bool "Allow use of binary-only repository"
305 This draws in the blobs repository, which contains binary files that
306 might be required for some chipsets or boards.
307 This flag ensures that a "Free" option remains available for users.
310 bool "Allow AMD blobs repository (with license agreement)"
313 This draws in the amd_blobs repository, which contains binary files
314 distributed by AMD, including VBIOS, PSP bootloaders, SMU firmwares,
315 etc. Selecting this item to download or clone the repo implies your
316 agreement to the AMD license agreement. A copy of the license text
317 may be reviewed by reading Documentation/soc/amd/amdblobs_license.md,
318 and your copy of the license is present in the repo once downloaded.
320 Note that for some products, omitting PSP, SMU images, or other items
321 may result in a nonbooting coreboot.rom.
324 bool "Allow QC blobs repository (selecting this agrees to the license!)"
327 This draws in the qc_blobs repository, which contains binary files
328 distributed by Qualcomm that are required to build firmware for
329 certain Qualcomm SoCs (including QcLib, QC-SEC, qtiseclib and QUP
330 firmware). If you say Y here you are implicitly agreeing to the
331 Qualcomm license agreement which can be found at:
332 https://review.coreboot.org/cgit/qc_blobs.git/tree/LICENSE
334 *****************************************************
335 PLEASE MAKE SURE YOU READ AND AGREE TO ALL TERMS IN
336 ABOVE LICENSE AGREEMENT BEFORE SELECTING THIS OPTION!
337 *****************************************************
339 Not selecting this option means certain Qualcomm SoCs and related
340 mainboards cannot be built and will be hidden from the "Mainboards"
344 bool "Code coverage support"
345 depends on COMPILER_GCC
347 Add code coverage support for coreboot. This will store code
348 coverage information in CBMEM for extraction from user space.
352 bool "Undefined behavior sanitizer support"
355 Instrument the code with checks for undefined behavior. If unsure,
356 say N because it adds a small performance penalty and may abort
357 on code that happens to work in spite of the UB.
359 config HAVE_ASAN_IN_ROMSTAGE
363 config ASAN_IN_ROMSTAGE
367 Enable address sanitizer in romstage for platform.
369 config HAVE_ASAN_IN_RAMSTAGE
373 config ASAN_IN_RAMSTAGE
377 Enable address sanitizer in ramstage for platform.
380 bool "Address sanitizer support"
382 select ASAN_IN_ROMSTAGE if HAVE_ASAN_IN_ROMSTAGE
383 select ASAN_IN_RAMSTAGE if HAVE_ASAN_IN_RAMSTAGE
384 depends on COMPILER_GCC
386 Enable address sanitizer - runtime memory debugger,
387 designed to find out-of-bounds accesses and use-after-scope bugs.
389 This feature consumes up to 1/8 of available memory and brings about
390 ~1.5x performance slowdown.
395 comment "Before using this feature, make sure that "
396 comment "asan_shadow_offset_callback patch is applied to GCC."
400 prompt "Stage Cache for ACPI S3 resume"
401 default NO_STAGE_CACHE if !HAVE_ACPI_RESUME || MAINBOARD_DISABLE_STAGE_CACHE
402 default TSEG_STAGE_CACHE if SMM_TSEG
404 config NO_STAGE_CACHE
407 Do not save any component in stage cache for resume path. On resume,
408 all components would be read back from CBFS again.
410 config TSEG_STAGE_CACHE
414 The option enables stage cache support for platform. Platform
415 can stash copies of postcar, ramstage and raw runtime data
416 inside SMM TSEG, to be restored on S3 resume path.
418 config CBMEM_STAGE_CACHE
422 The option enables stage cache support for platform. Platform
423 can stash copies of postcar, ramstage and raw runtime data
426 While the approach is faster than reloading stages from boot media
427 it is also a possible attack scenario via which OS can possibly
428 circumvent SMM locks and SPI write protections.
430 If unsure, select 'N'
434 config MAINBOARD_DISABLE_STAGE_CACHE
437 Selected by mainboards which wish to disable the stage cache.
438 E.g. mainboards which don't use S3 resume in the field may wish to
439 disable it to save boot time at the cost of increasing S3 resume time.
442 bool "Update existing coreboot.rom image"
444 If this option is enabled, no new coreboot.rom file
445 is created. Instead it is expected that there already
446 is a suitable file for further processing.
447 The bootblock will not be modified.
449 If unsure, select 'N'
451 config BOOTSPLASH_IMAGE
452 bool "Add a bootsplash image"
454 Select this option if you have a bootsplash image that you would
455 like to add to your ROM.
457 This will only add the image to the ROM. To actually run it check
458 options under 'Display' section.
460 config BOOTSPLASH_FILE
461 string "Bootsplash path and filename"
462 depends on BOOTSPLASH_IMAGE
463 # Default value set at the end of the file
465 The path and filename of the file to use as graphical bootsplash
466 screen. The file format has to be JPEG with YCC 4:2:0 color sampling
467 unless converted with "Pre-process bootsplash file with ImageMagick".
469 The image can only be displayed by coreboot if it's smaller or has
470 the same size as the framebuffer resolution. Width and height have
471 to be a multiple of 16 pixels.
473 Setting these constraints allows a leaner implementation in coreboot.
474 The minimum necessary ImageMagick command line seems to be:
475 $ convert input.img -colorspace YCC -sampling-factor 4:2:0 bootsplash.jpg
477 config BOOTSPLASH_CONVERT
478 bool "Pre-process bootsplash file with ImageMagick"
479 depends on BOOTSPLASH_IMAGE
481 Use ImageMagick (`convert` program) to convert a bootsplash image
482 to the supported JPEG format.
484 config BOOTSPLASH_CONVERT_QUALITY
485 int "Bootsplash JPEG target quality (%)"
486 depends on BOOTSPLASH_CONVERT
488 # Default value set at the end of the file
490 config BOOTSPLASH_CONVERT_RESIZE
491 bool "Resize bootsplash image"
492 depends on BOOTSPLASH_CONVERT
494 Resize the image to the given resolution. Aspect ratio will be kept,
495 adding black bars as necessary.
497 config BOOTSPLASH_CONVERT_RESOLUTION
498 string "Bootsplash image target size"
499 depends on BOOTSPLASH_CONVERT_RESIZE
500 # Default value set at the end of the file
502 Target image resolution given as <width>x<height>, e.g. 1024x768.
503 Values not divisible by 16 will be rounded down.
505 When using coreboot to display the bootsplash image (CONFIG_BOOTSPLASH),
506 set this lower or equal to the minimum resolution you expect.
508 config BOOTSPLASH_CONVERT_COLORSWAP
509 bool "Swap red and blue color channels"
510 depends on BOOTSPLASH_CONVERT
512 The JPEG decoder currently ignores the framebuffer color order.
513 If your colors seem all wrong, try this option.
518 Enable support for probing devices with fw_config. This is a simple
519 bitmask broken into fields and options for probing.
520 Select this option in the Mainboard Kconfig.
522 config FW_CONFIG_SOURCE_CHROMEEC_CBI
524 depends on FW_CONFIG && EC_GOOGLE_CHROMEEC
526 This option tells coreboot to read the firmware configuration value
527 from the Google Chrome Embedded Controller CBI interface. This source
528 is not tried if FW_CONFIG_SOURCE_CBFS is enabled and the value was
530 Select this option in the Mainboard Kconfig.
532 config FW_CONFIG_SOURCE_CBFS
533 bool "Obtain Firmware Configuration value from CBFS"
536 With this option enabled coreboot will look for the 32bit firmware
537 configuration value in CBFS at the selected prefix with the file name
538 "fw_config". This option gets run if no value is found with CBI, so acts
539 as a FW_CONFIG_SOURCE_CHROMEEC_CBI fallback option.
541 config FW_CONFIG_SOURCE_VPD
542 bool "Obtain Firmware Configuration value from VPD"
543 depends on FW_CONFIG && VPD
545 With this option enabled coreboot will look for the 32bit firmware
546 configuration value in VPD key name "fw_config". This option runs if no
547 FW_CONFIG value is set by either CBI or CBFS.
549 config HAVE_RAMPAYLOAD
553 bool "Enable coreboot flow without executing ramstage"
554 default y if ARCH_X86
555 depends on HAVE_RAMPAYLOAD
557 If this option is enabled, coreboot flow will skip ramstage
558 loading and execution of ramstage to load payload.
560 Instead it is expected to load payload from postcar stage itself.
562 In this flow coreboot will perform basic x86 initialization
563 (DRAM resource allocation), MTRR programming,
564 Skip PCI enumeration logic and only allocate BAR for fixed devices
565 (bootable devices, TPM over GSPI).
567 config HAVE_CONFIGURABLE_RAMSTAGE
570 config CONFIGURABLE_RAMSTAGE
571 bool "Enable a configurable ramstage."
572 default y if ARCH_X86
573 depends on HAVE_CONFIGURABLE_RAMSTAGE
575 A configurable ramstage allows you to select which parts of the ramstage
576 to run. Currently, we can only select a minimal PCI scanning step.
577 The minimal PCI scanning will only check those parts that are enabled
578 in the devicetree.cb. By convention none of those devices should be bridges.
580 config MINIMAL_PCI_SCANNING
581 bool "Enable minimal PCI scanning"
582 depends on CONFIGURABLE_RAMSTAGE && PCI
584 If this option is enabled, coreboot will scan only PCI devices
585 marked as mandatory in devicetree.cb
587 menu "Software Bill Of Materials (SBOM)"
589 source "src/sbom/Kconfig"
596 source "src/mainboard/Kconfig"
600 default "devicetree.cb"
602 This symbol allows mainboards to select a different file under their
603 mainboard directory for the devicetree.cb file. This allows the board
604 variants that need different devicetrees to be in the same directory.
606 Examples: "devicetree.variant.cb"
607 "variant/devicetree.cb"
609 config OVERRIDE_DEVICETREE
613 This symbol allows variants to provide an override devicetree file to
614 override the registers and/or add new devices on top of the ones
615 provided by baseboard devicetree using CONFIG_DEVICETREE.
617 Examples: "devicetree.variant-override.cb"
618 "variant/devicetree-override.cb"
621 string "fmap description file in fmd format"
622 default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
625 The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
626 but in some cases more complex setups are required.
627 When an fmd is specified, it overrides the default format.
630 hex "Size of CBFS filesystem in ROM"
631 depends on FMDFILE = ""
632 # Default value set at the end of the file
634 This is the part of the ROM actually managed by CBFS, located at the
635 end of the ROM (passed through cbfstool -o) on x86 and at the start
636 of the ROM (passed through cbfstool -s) everywhere else. It defaults
637 to span the whole ROM on all but Intel systems that use an Intel Firmware
638 Descriptor. It can be overridden to make coreboot live alongside other
639 components like ChromeOS's vboot/FMAP or Intel's IFD / ME / TXE
640 binaries. This symbol should only be used to generate a default FMAP and
641 is unused when a non-default fmd file is provided via CONFIG_FMDFILE.
645 # load site-local kconfig to allow user specific defaults and overrides
646 source "site-local/Kconfig"
648 config SYSTEM_TYPE_LAPTOP
652 config SYSTEM_TYPE_TABLET
656 config SYSTEM_TYPE_DETACHABLE
660 config SYSTEM_TYPE_CONVERTIBLE
664 config CBFS_AUTOGEN_ATTRIBUTES
668 If this option is selected, every file in cbfs which has a constraint
669 regarding position or alignment will get an additional file attribute
670 which describes this constraint.
675 source "src/soc/*/*/Kconfig"
676 source "src/soc/*/*/Kconfig.common"
678 source "src/cpu/Kconfig"
679 comment "Northbridge"
680 source "src/northbridge/*/*/Kconfig"
681 source "src/northbridge/*/*/Kconfig.common"
682 comment "Southbridge"
683 source "src/southbridge/*/*/Kconfig"
684 source "src/southbridge/*/*/Kconfig.common"
686 source "src/superio/*/*/Kconfig"
687 comment "Embedded Controllers"
688 source "src/ec/acpi/Kconfig"
689 source "src/ec/*/*/Kconfig"
691 source "src/southbridge/intel/common/firmware/Kconfig"
692 source "src/vendorcode/*/Kconfig"
694 source "src/arch/*/Kconfig"
696 config CHIPSET_DEVICETREE
700 This symbol allows a chipset to provide a set of default settings in
701 a devicetree which are common to all mainboards. This may include
702 devices (including alias names), chip drivers, register settings,
703 and others. This path is relative to the src/ directory.
705 Example: "chipset.cb"
709 source "src/device/Kconfig"
711 menu "Generic Drivers"
712 source "src/drivers/*/Kconfig"
713 source "src/drivers/*/*/Kconfig"
714 source "src/drivers/*/*/*/Kconfig"
715 source "src/commonlib/storage/Kconfig"
720 source "src/security/Kconfig"
721 source "src/vendorcode/eltan/security/Kconfig"
725 source "src/acpi/Kconfig"
727 # This option is for the current boards/chipsets where SPI flash
728 # is not the boot device. Currently nearly all boards/chipsets assume
729 # SPI flash is the boot device.
730 config BOOT_DEVICE_NOT_SPI_FLASH
734 config BOOT_DEVICE_SPI_FLASH
736 default y if !BOOT_DEVICE_NOT_SPI_FLASH
739 config BOOT_DEVICE_MEMORY_MAPPED
741 default y if ARCH_X86 && BOOT_DEVICE_SPI_FLASH
744 Inform system if SPI is memory-mapped or not.
746 config BOOT_DEVICE_SUPPORTS_WRITES
750 Indicate that the platform has writable boot device
763 default 0x2000 if ARCH_X86
770 source "src/console/Kconfig"
772 config ACPI_S1_NOT_SUPPORTED
776 Set this to 'y' on platforms that do not support ACPI S1 state.
778 config HAVE_ACPI_RESUME
782 config DISABLE_ACPI_HIBERNATE
786 Removes S4 from the available sleepstates
788 config RESUME_PATH_SAME_AS_BOOT
790 default y if ARCH_X86
791 depends on HAVE_ACPI_RESUME
793 This option indicates that when a system resumes it takes the
794 same path as a regular boot. e.g. an x86 system runs from the
795 reset vector at 0xfffffff0 on both resume and warm/cold boot.
797 config NO_MONOTONIC_TIMER
800 config HAVE_MONOTONIC_TIMER
802 depends on !NO_MONOTONIC_TIMER
805 The board/chipset provides a monotonic timer.
807 config GENERIC_UDELAY
809 depends on HAVE_MONOTONIC_TIMER
810 default y if !ARCH_X86
812 The board/chipset uses a generic udelay function utilizing the
817 depends on HAVE_MONOTONIC_TIMER
819 Provide a timer queue for performing time-based callbacks.
821 config COOP_MULTITASKING
826 Cooperative multitasking allows callbacks to be multiplexed on the
827 main thread. With this enabled it allows for multiple execution paths
828 to take place when they have udelay() calls within their code.
833 depends on COOP_MULTITASKING
835 How many execution threads to cooperatively multitask with.
837 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
840 Selected by mainboards which implement a mainboard-specific mechanism
841 to access the values for runtime-configurable options. For example, a
842 custom BMC interface or an EEPROM with an externally-imposed layout.
844 config HAVE_OPTION_TABLE
848 This variable specifies whether a given board has a cmos.layout
849 file containing NVRAM/CMOS bit definitions.
850 It defaults to 'n' but can be selected in mainboard/*/Kconfig.
852 config CMOS_LAYOUT_FILE
854 default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
855 depends on HAVE_OPTION_TABLE
857 config PCI_IO_CFG_EXT
866 config USE_WATCHDOG_ON_BOOT
874 Enable Unified Memory Architecture for graphics.
879 This variable specifies whether a given board has MP table support.
880 It is usually set in mainboard/*/Kconfig.
881 Whether or not the MP table is actually generated by coreboot
882 is configurable by the user via GENERATE_MP_TABLE.
884 config HAVE_PIRQ_TABLE
887 This variable specifies whether a given board has PIRQ table support.
888 It is usually set in mainboard/*/Kconfig.
889 Whether or not the PIRQ table is actually generated by coreboot
890 is configurable by the user via GENERATE_PIRQ_TABLE.
896 Build support for NHLT (non HD Audio) ACPI table generation.
898 #These Options are here to avoid "undefined" warnings.
899 #The actual selection and help texts are in the following menu.
903 config GENERATE_MP_TABLE
904 prompt "Generate an MP table" if HAVE_MP_TABLE
906 depends on !ECAM_MMCONF_SUPPORT || ECAM_MMCONF_BUS_NUMBER <= 256
907 default HAVE_MP_TABLE
909 Generate an MP table (conforming to the Intel MultiProcessor
910 specification 1.4) for this board.
914 config GENERATE_PIRQ_TABLE
915 prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
917 default HAVE_PIRQ_TABLE
919 Generate a PIRQ table for this board.
923 config GENERATE_SMBIOS_TABLES
924 depends on ARCH_X86 || ARCH_ARM64
925 bool "Generate SMBIOS tables"
926 default n if ARCH_ARM64
929 Generate SMBIOS tables for this board.
933 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
937 If enabled, only generate SMBIOS Type 41 entries for PCI devices in
938 the devicetree for which Type 41 information is provided, e.g. with
939 the `smbios_dev_info` devicetree syntax. This is useful to manually
940 assign specific instance IDs to onboard devices irrespective of the
941 device traversal order. It is assumed that instance IDs for devices
942 of the same class are unique.
943 When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
944 appropriate PCI devices in the devicetree. Instance IDs are assigned
945 successive numbers from a monotonically increasing counter, with one
946 counter for each device class.
948 config SMBIOS_PROVIDED_BY_MOBO
952 if GENERATE_SMBIOS_TABLES
955 prompt "SMBIOS BIOS Vendor name"
959 The BIOS Vendor name to store in the SMBIOS Type0 table.
961 config MAINBOARD_SERIAL_NUMBER
962 prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
966 The Serial Number to store in SMBIOS structures.
968 config MAINBOARD_VERSION
969 prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
973 The Version Number to store in SMBIOS structures.
975 config MAINBOARD_SMBIOS_MANUFACTURER
976 prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
978 default MAINBOARD_VENDOR
980 Override the default Manufacturer stored in SMBIOS structures.
982 config MAINBOARD_SMBIOS_PRODUCT_NAME
983 prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
985 default MAINBOARD_PART_NUMBER
987 Override the default Product name stored in SMBIOS structures.
989 config VPD_SMBIOS_VERSION
990 bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
994 Selecting this option will read firmware_version from
995 VPD_RO and override SMBIOS type 0 version. One special
996 scenario of using this feature is to assign a BIOS version
997 to a coreboot image without the need to rebuild from source.
1003 source "payloads/Kconfig"
1007 comment "CPU Debug Settings"
1008 source "src/cpu/*/Kconfig.debug_cpu"
1010 comment "Vendorcode Debug Settings"
1011 source "src/vendorcode/*/*/Kconfig.debug"
1013 comment "BLOB Debug Settings"
1014 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
1016 comment "General Debug Settings"
1018 # TODO: Better help text and detailed instructions.
1020 bool "GDB debugging support"
1022 # FIXME Not implemented in long mode
1023 depends on DRIVERS_UART && !USE_X86_64_SUPPORT
1025 If enabled, you will be able to set breakpoints for gdb debugging.
1026 See src/arch/x86/c_start.S for details.
1029 bool "Wait for a GDB connection in the ramstage"
1033 If enabled, coreboot will wait for a GDB connection in the ramstage.
1036 config FATAL_ASSERTS
1037 bool "Halt when hitting a BUG() or assertion error"
1040 If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
1042 config HAVE_DEBUG_GPIO
1046 bool "Output verbose GPIO debug messages"
1047 depends on HAVE_DEBUG_GPIO
1050 bool "Output verbose CBFS debug messages"
1053 This option enables additional CBFS related debug messages.
1055 config HAVE_DEBUG_RAM_SETUP
1058 config DEBUG_RAM_SETUP
1059 bool "Output verbose RAM init debug messages"
1061 depends on HAVE_DEBUG_RAM_SETUP
1063 This option enables additional RAM init related debug messages.
1064 It is recommended to enable this when debugging issues on your
1065 board which might be RAM init related.
1067 Note: This option will increase the size of the coreboot image.
1072 bool "Check PIRQ table consistency"
1074 depends on GENERATE_PIRQ_TABLE
1078 config HAVE_DEBUG_SMBUS
1082 bool "Output verbose SMBus debug messages"
1084 depends on HAVE_DEBUG_SMBUS
1086 This option enables additional SMBus (and SPD) debug messages.
1088 Note: This option will increase the size of the coreboot image.
1093 bool "Output verbose SMI debug messages"
1095 depends on HAVE_SMI_HANDLER
1096 select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
1098 This option enables additional SMI related debug messages.
1100 Note: This option will increase the size of the coreboot image.
1104 config DEBUG_PERIODIC_SMI
1105 bool "Trigger SMI periodically"
1106 depends on DEBUG_SMI
1108 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1109 # printk(BIOS_DEBUG, ...) calls.
1111 prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1115 This option enables additional malloc related debug messages.
1117 Note: This option will increase the size of the coreboot image.
1121 # Only visible if DEBUG_SPEW (8) is set.
1122 config DEBUG_RESOURCES
1123 bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1126 This option enables additional PCI memory and IO debug messages.
1127 Note: This option will increase the size of the coreboot image.
1130 config DEBUG_CONSOLE_INIT
1131 bool "Debug console initialisation code"
1134 With this option printk()'s are attempted before console hardware
1135 initialisation has been completed. Your mileage may vary.
1137 Typically you will need to modify source in console_hw_init() such
1138 that a working console appears before the one you want to debug.
1142 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1143 # printk(BIOS_DEBUG, ...) calls.
1144 config REALMODE_DEBUG
1145 prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1148 depends on PCI_OPTION_ROM_RUN_REALMODE
1150 This option enables additional x86emu related debug messages.
1152 Note: This option will increase the time to emulate a ROM.
1157 bool "Output verbose x86emu debug messages"
1159 depends on PCI_OPTION_ROM_RUN_YABEL
1161 This option enables additional x86emu related debug messages.
1163 Note: This option will increase the size of the coreboot image.
1169 config X86EMU_DEBUG_JMP
1170 bool "Trace JMP/RETF"
1173 Print information about JMP and RETF opcodes from x86emu.
1175 Note: This option will increase the size of the coreboot image.
1179 config X86EMU_DEBUG_TRACE
1180 bool "Trace all opcodes"
1183 Print _all_ opcodes that are executed by x86emu.
1185 WARNING: This will produce a LOT of output and take a long time.
1187 Note: This option will increase the size of the coreboot image.
1191 config X86EMU_DEBUG_PNP
1192 bool "Log Plug&Play accesses"
1195 Print Plug And Play accesses made by option ROMs.
1197 Note: This option will increase the size of the coreboot image.
1201 config X86EMU_DEBUG_DISK
1205 Print Disk I/O related messages.
1207 Note: This option will increase the size of the coreboot image.
1211 config X86EMU_DEBUG_PMM
1215 Print messages related to POST Memory Manager (PMM).
1217 Note: This option will increase the size of the coreboot image.
1222 config X86EMU_DEBUG_VBE
1223 bool "Debug VESA BIOS Extensions"
1226 Print messages related to VESA BIOS Extension (VBE) functions.
1228 Note: This option will increase the size of the coreboot image.
1232 config X86EMU_DEBUG_INT10
1233 bool "Redirect INT10 output to console"
1236 Let INT10 (i.e. character output) calls print messages to debug output.
1238 Note: This option will increase the size of the coreboot image.
1242 config X86EMU_DEBUG_INTERRUPTS
1243 bool "Log intXX calls"
1246 Print messages related to interrupt handling.
1248 Note: This option will increase the size of the coreboot image.
1252 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1253 bool "Log special memory accesses"
1256 Print messages related to accesses to certain areas of the virtual
1257 memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1259 Note: This option will increase the size of the coreboot image.
1263 config X86EMU_DEBUG_MEM
1264 bool "Log all memory accesses"
1267 Print memory accesses made by option ROM.
1268 Note: This also includes accesses to fetch instructions.
1270 Note: This option will increase the size of the coreboot image.
1274 config X86EMU_DEBUG_IO
1275 bool "Log IO accesses"
1278 Print I/O accesses made by option ROM.
1280 Note: This option will increase the size of the coreboot image.
1284 config X86EMU_DEBUG_TIMINGS
1285 bool "Output timing information"
1287 depends on HAVE_MONOTONIC_TIMER
1289 Print timing information needed by i915tool.
1295 config DEBUG_SPI_FLASH
1296 bool "Output verbose SPI flash debug messages"
1298 depends on SPI_FLASH
1300 This option enables additional SPI flash related debug messages.
1303 bool "Output verbose IPMI debug messages"
1307 This option enables additional IPMI related debug messages.
1309 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1310 # Only visible with the right southbridge and loglevel.
1311 config DEBUG_INTEL_ME
1312 bool "Verbose logging for Intel Management Engine"
1315 Enable verbose logging for Intel Management Engine driver that
1316 is present on Intel 6-series chipsets.
1320 bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1323 This option enables additional function entry and exit debug messages
1324 for select functions.
1325 Note: This option will increase the size of the coreboot image.
1328 config DEBUG_COVERAGE
1329 bool "Debug code coverage"
1333 If enabled, the code coverage hooks in coreboot will output some
1334 information about the coverage data that is dumped.
1336 config DEBUG_BOOT_STATE
1337 bool "Debug boot state machine"
1340 Control debugging of the boot state machine. When selected displays
1341 the state boundaries in ramstage.
1343 config DEBUG_ADA_CODE
1344 bool "Compile debug code in Ada sources"
1347 Add the compiler switch `-gnata` to compile code guarded by
1350 config HAVE_EM100_SUPPORT
1353 This is enabled by platforms which can support using the EM100.
1356 bool "Configure image for EM100 usage"
1357 depends on HAVE_EM100_SUPPORT
1359 The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1360 over USB. However it only supports a maximum SPI clock of 20MHz and
1361 single data output. Enable this option to use a 20MHz SPI clock and
1362 disable "Dual Output Fast Read" Support.
1364 On AMD platforms this changes the SPI speed at run-time if the
1365 mainboard code supports this. On supported Intel platforms this works
1366 by changing the settings in the descriptor.bin file.
1368 config DEBUG_ACPICA_COMPATIBLE
1369 bool "Print out ACPI tables in ACPICA compatible format"
1370 depends on HAVE_ACPI_TABLES
1372 Select this to print out ACPI tables in an ACPICA compatible
1373 format. Set the console loglevel to verbosity 'SPEW'.
1374 To analyze ACPI tables capture the coreboot log between
1375 "Printing ACPI in ACPICA compatible table" and "Done printing
1376 ACPI in ACPICA compatible table".
1377 Remove the prefix "[SPEW ] " and then issue 'acpixtract -a dump'
1378 to extract all the tables. Then use 'iasl -d' on the .dat files
1379 to decompile the tables.
1383 ###############################################################################
1384 # Set variables with no prompt - these can be set anywhere, and putting at
1385 # the end of this file gives the most flexibility.
1387 source "src/lib/Kconfig"
1389 config WARNINGS_ARE_ERRORS
1393 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1394 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1395 # mutually exclusive. One of these options must be selected in the
1396 # mainboard Kconfig if the chipset supports enabling and disabling of
1397 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1398 # in mainboard/Kconfig to know if the button should be enabled or not.
1400 config POWER_BUTTON_DEFAULT_ENABLE
1403 Select when the board has a power button which can optionally be
1404 disabled by the user.
1406 config POWER_BUTTON_DEFAULT_DISABLE
1409 Select when the board has a power button which can optionally be
1410 enabled by the user, e.g. when the board ships with a jumper over
1411 the power switch contacts.
1413 config POWER_BUTTON_FORCE_ENABLE
1416 Select when the board requires that the power button is always
1419 config POWER_BUTTON_FORCE_DISABLE
1422 Select when the board requires that the power button is always
1423 disabled, e.g. when it has been hardwired to ground.
1425 config POWER_BUTTON_IS_OPTIONAL
1427 default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1428 default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1430 Internal option that controls ENABLE_POWER_BUTTON visibility.
1436 Internal option that controls whether we compile in register scripts.
1438 config MAX_REBOOT_CNT
1442 Internal option that sets the maximum number of bootblock executions allowed
1443 with the normal image enabled before assuming the normal image is defective
1444 and switching to the fallback image.
1446 config UNCOMPRESSED_RAMSTAGE
1449 config NO_XIP_EARLY_STAGES
1451 default n if ARCH_X86
1454 Identify if early stages are eXecute-In-Place(XIP).
1456 config EARLY_CBMEM_LIST
1460 Enable display of CBMEM during romstage and postcar.
1462 config RELOCATABLE_MODULES
1465 If RELOCATABLE_MODULES is selected then support is enabled for
1466 building relocatable modules in the RAM stage. Those modules can be
1467 loaded anywhere and all the relocations are handled automatically.
1469 config GENERIC_GPIO_LIB
1472 If enabled, compile the generic GPIO library. A "generic" GPIO
1473 implies configurability usually found on SoCs, particularly the
1474 ability to control internal pull resistors.
1476 config BOOTBLOCK_CUSTOM
1477 # To be selected by arch, SoC or mainboard if it does not want use the normal
1478 # src/lib/bootblock.c#main() C entry point.
1481 config BOOTBLOCK_IN_CBFS
1483 default y if ARCH_X86
1485 Select this on platforms that have a top aligned bootblock inside cbfs.
1487 config MEMLAYOUT_LD_FILE
1489 default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1491 This variable allows SoC/mainboard to supply in a custom linker file
1492 if required. This determines the linker file used for all the stages
1493 (bootblock, romstage, verstage, ramstage, postcar) in
1494 src/arch/${ARCH}/Makefile.mk.
1496 ###############################################################################
1497 # Set default values for symbols created before mainboards. This allows the
1498 # option to be displayed in the general menu, but the default to be loaded in
1499 # the mainboard if desired.
1500 config COMPRESS_PRERAM_STAGES
1501 depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1504 config INCLUDE_CONFIG_FILE
1507 config BOOTSPLASH_FILE
1508 depends on BOOTSPLASH_IMAGE
1509 default "bootsplash.jpg"
1511 config BOOTSPLASH_CONVERT_QUALITY
1512 depends on BOOTSPLASH_CONVERT
1515 config BOOTSPLASH_CONVERT_RESOLUTION
1516 depends on BOOTSPLASH_CONVERT_RESIZE
1522 config HAVE_BOOTBLOCK
1526 config HAVE_VERSTAGE
1528 depends on VBOOT_SEPARATE_VERSTAGE
1531 config HAVE_ROMSTAGE
1533 depends on SEPARATE_ROMSTAGE
1536 config HAVE_RAMSTAGE
1538 default n if RAMPAYLOAD
1541 config SEPARATE_ROMSTAGE