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 || ARCH_SUPPORTS_CLANG
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 ARCH_SUPPORTS_CLANG
91 Opt-in flag for architectures that generally work well with CLANG.
92 By default the option would be hidden.
94 config ALLOW_EXPERIMENTAL_CLANG
95 bool "Allow experimental LLVM/Clang"
96 depends on !ARCH_SUPPORTS_CLANG
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 "Test platform with include-what-you-use"
122 This runs each source file through the include-what-you-use tool
123 to check the header includes.
126 bool "Generate flashmap descriptor parser using flex and bison"
129 Enable this option if you are working on the flashmap descriptor
130 parser and made changes to fmd_scanner.l or fmd_parser.y.
132 Otherwise, say N to use the provided pregenerated scanner/parser.
134 config UTIL_GENPARSER
135 bool "Generate parsers for bincfg, sconfig and kconfig locally"
138 Enable this option if you are working on the sconfig device tree
139 parser or bincfg and made changes to the .l or .y files.
141 Otherwise, say N to use the provided pregenerated scanner/parser.
144 prompt "Option backend to use"
145 default USE_MAINBOARD_SPECIFIC_OPTION_BACKEND if HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
146 default USE_OPTION_TABLE if NVRAMCUI_SECONDARY_PAYLOAD
147 default USE_UEFI_VARIABLE_STORE if DRIVERS_EFI_VARIABLE_STORE && \
148 PAYLOAD_EDK2 && SMMSTORE_V2
150 config OPTION_BACKEND_NONE
153 config USE_OPTION_TABLE
154 bool "Use CMOS for configuration values"
155 depends on HAVE_OPTION_TABLE
157 Enable this option if coreboot shall read options from the "CMOS"
158 NVRAM instead of using hard-coded values.
160 config USE_UEFI_VARIABLE_STORE
161 bool "Use UEFI variable-store in SPI flash as option backend"
162 depends on DRIVERS_EFI_VARIABLE_STORE
163 depends on SMMSTORE_V2
165 Enable this option if coreboot shall read/write options from the
166 SMMSTORE region within the SPI flash. The region must be formatted
167 by the payload first before it can be used.
169 config USE_MAINBOARD_SPECIFIC_OPTION_BACKEND
170 bool "Use mainboard-specific option backend"
171 depends on HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
173 Use a mainboard-specific mechanism to access runtime-configurable
178 config STATIC_OPTION_TABLE
179 bool "Load default configuration values into CMOS on each boot"
180 depends on USE_OPTION_TABLE
182 Enable this option to reset "CMOS" NVRAM values to default on
183 every boot. Use this if you want the NVRAM configuration to
184 never be modified from its default values.
186 config MB_COMPRESS_RAMSTAGE_LZ4
189 Select this in a mainboard to use LZ4 compression by default
192 prompt "Ramstage compression"
193 depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE
194 default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4
195 default COMPRESS_RAMSTAGE_LZMA
197 config COMPRESS_RAMSTAGE_LZMA
198 bool "Compress ramstage with LZMA"
200 Compress ramstage with LZMA to save memory in the flash image.
202 config COMPRESS_RAMSTAGE_LZ4
203 bool "Compress ramstage with LZ4"
205 LZ4 doesn't give as good compression as LZMA, but decompresses much
206 faster. For large binaries such as ramstage, it's typically best to
207 use LZMA, but there can be cases where the faster decompression of
208 LZ4 can lead to a faster boot time. Testing on each individual board
209 is typically going to be needed due to the large number of factors
210 that can influence the decision. Binary size, CPU speed, ROM read
211 speed, cache, and other factors all play a part.
213 If you're not sure, stick with LZMA.
217 config COMPRESS_PRERAM_STAGES
218 bool "Compress romstage and verstage with LZ4"
219 depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
220 # Default value set at the end of the file
222 Compress romstage and (if it exists) verstage with LZ4 to save flash
223 space and speed up boot, since the time for reading the image from SPI
224 (and in the vboot case verifying it) is usually much greater than the
225 time spent decompressing. Doesn't work for XIP stages for obvious
228 config COMPRESS_BOOTBLOCK
230 depends on HAVE_BOOTBLOCK
232 This option can be used to compress the bootblock with LZ4 and attach
233 a small self-decompression stub to its front. This can drastically
234 reduce boot time on platforms where the bootblock is loaded over a
235 very slow connection and bootblock size trumps all other factors for
236 speed. Since using this option usually requires changes to the
237 SoC memlayout and possibly extra support code, it should not be
238 user-selectable. (There's no real point in offering this to the user
239 anyway... if it works and saves boot time, you would always want it.)
241 config SEPARATE_ROMSTAGE
242 bool "Build a separate romstage"
244 Build a separate romstage that is loaded by bootblock. With this
245 option disabled the romstage sources are linked inside the bootblock
248 config INCLUDE_CONFIG_FILE
249 bool "Include the coreboot .config file into the ROM image"
250 # Default value set at the end of the file
252 Include the .config file that was used to compile coreboot
253 in the (CBFS) ROM image. This is useful if you want to know which
254 options were used to build a specific coreboot.rom image.
256 Saying Y here will increase the image size by 2-3KB.
258 You can then use cbfstool to extract the config from a final image:
260 cbfstool coreboot.rom extract -n config -f <output file path>
262 Alternatively, you can also use cbfstool to print the image
263 contents (including the raw 'config' item we're looking for).
267 $ cbfstool coreboot.rom print
268 coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304,
272 Name Offset Type Size
273 cmos_layout.bin 0x0 CMOS layout 1159
274 fallback/romstage 0x4c0 stage 339756
275 fallback/ramstage 0x53440 stage 186664
276 fallback/payload 0x80dc0 payload 51526
277 config 0x8d740 raw 3324
278 (empty) 0x8e480 null 3610440
280 config COLLECT_TIMESTAMPS
281 bool "Create a table of timestamps collected during boot"
282 default y if ARCH_X86
284 Make coreboot create a table of timer-ID/timer-value pairs to
285 allow measuring time spent at different phases of the boot process.
287 config TIMESTAMPS_ON_CONSOLE
288 bool "Print the timestamp values on the console"
290 depends on COLLECT_TIMESTAMPS
292 Print the timestamps to the debug console if enabled at level info.
295 bool "Allow use of binary-only repository"
298 This draws in the blobs repository, which contains binary files that
299 might be required for some chipsets or boards.
300 This flag ensures that a "Free" option remains available for users.
303 bool "Allow AMD blobs repository (with license agreement)"
306 This draws in the amd_blobs repository, which contains binary files
307 distributed by AMD, including VBIOS, PSP bootloaders, SMU firmwares,
308 etc. Selecting this item to download or clone the repo implies your
309 agreement to the AMD license agreement. A copy of the license text
310 may be reviewed by reading Documentation/soc/amd/amdblobs_license.md,
311 and your copy of the license is present in the repo once downloaded.
313 Note that for some products, omitting PSP, SMU images, or other items
314 may result in a nonbooting coreboot.rom.
317 bool "Allow QC blobs repository (selecting this agrees to the license!)"
320 This draws in the qc_blobs repository, which contains binary files
321 distributed by Qualcomm that are required to build firmware for
322 certain Qualcomm SoCs (including QcLib, QC-SEC, qtiseclib and QUP
323 firmware). If you say Y here you are implicitly agreeing to the
324 Qualcomm license agreement which can be found at:
325 https://review.coreboot.org/cgit/qc_blobs.git/tree/LICENSE
327 *****************************************************
328 PLEASE MAKE SURE YOU READ AND AGREE TO ALL TERMS IN
329 ABOVE LICENSE AGREEMENT BEFORE SELECTING THIS OPTION!
330 *****************************************************
332 Not selecting this option means certain Qualcomm SoCs and related
333 mainboards cannot be built and will be hidden from the "Mainboards"
337 bool "Code coverage support"
338 depends on COMPILER_GCC
340 Add code coverage support for coreboot. This will store code
341 coverage information in CBMEM for extraction from user space.
345 bool "Undefined behavior sanitizer support"
348 Instrument the code with checks for undefined behavior. If unsure,
349 say N because it adds a small performance penalty and may abort
350 on code that happens to work in spite of the UB.
352 config HAVE_ASAN_IN_ROMSTAGE
356 config ASAN_IN_ROMSTAGE
360 Enable address sanitizer in romstage for platform.
362 config HAVE_ASAN_IN_RAMSTAGE
366 config ASAN_IN_RAMSTAGE
370 Enable address sanitizer in ramstage for platform.
373 bool "Address sanitizer support"
375 select ASAN_IN_ROMSTAGE if HAVE_ASAN_IN_ROMSTAGE
376 select ASAN_IN_RAMSTAGE if HAVE_ASAN_IN_RAMSTAGE
377 depends on COMPILER_GCC
379 Enable address sanitizer - runtime memory debugger,
380 designed to find out-of-bounds accesses and use-after-scope bugs.
382 This feature consumes up to 1/8 of available memory and brings about
383 ~1.5x performance slowdown.
388 comment "Before using this feature, make sure that "
389 comment "asan_shadow_offset_callback patch is applied to GCC."
393 prompt "Stage Cache for ACPI S3 resume"
394 default NO_STAGE_CACHE if !HAVE_ACPI_RESUME || MAINBOARD_DISABLE_STAGE_CACHE
395 default TSEG_STAGE_CACHE if SMM_TSEG
397 config NO_STAGE_CACHE
400 Do not save any component in stage cache for resume path. On resume,
401 all components would be read back from CBFS again.
403 config TSEG_STAGE_CACHE
407 The option enables stage cache support for platform. Platform
408 can stash copies of postcar, ramstage and raw runtime data
409 inside SMM TSEG, to be restored on S3 resume path.
411 config CBMEM_STAGE_CACHE
415 The option enables stage cache support for platform. Platform
416 can stash copies of postcar, ramstage and raw runtime data
419 While the approach is faster than reloading stages from boot media
420 it is also a possible attack scenario via which OS can possibly
421 circumvent SMM locks and SPI write protections.
423 If unsure, select 'N'
427 config MAINBOARD_DISABLE_STAGE_CACHE
430 Selected by mainboards which wish to disable the stage cache.
431 E.g. mainboards which don't use S3 resume in the field may wish to
432 disable it to save boot time at the cost of increasing S3 resume time.
435 bool "Update existing coreboot.rom image"
437 If this option is enabled, no new coreboot.rom file
438 is created. Instead it is expected that there already
439 is a suitable file for further processing.
440 The bootblock will not be modified.
442 If unsure, select 'N'
444 config BOOTSPLASH_IMAGE
445 bool "Add a bootsplash image"
447 Select this option if you have a bootsplash image that you would
448 like to add to your ROM.
450 This will only add the image to the ROM. To actually run it check
451 options under 'Display' section.
453 config BOOTSPLASH_FILE
454 string "Bootsplash path and filename"
455 depends on BOOTSPLASH_IMAGE
456 # Default value set at the end of the file
458 The path and filename of the file to use as graphical bootsplash
459 screen. The file format has to be JPEG with YCC 4:2:0 color sampling
460 unless converted with "Pre-process bootsplash file with ImageMagick".
462 The image can only be displayed by coreboot if it's smaller or has
463 the same size as the framebuffer resolution. Width and height have
464 to be a multiple of 16 pixels.
466 Setting these constraints allows a leaner implementation in coreboot.
467 The minimum necessary ImageMagick command line seems to be:
468 $ convert input.img -colorspace YCC -sampling-factor 4:2:0 bootsplash.jpg
470 config BOOTSPLASH_CONVERT
471 bool "Pre-process bootsplash file with ImageMagick"
472 depends on BOOTSPLASH_IMAGE
474 Use ImageMagick (`convert` program) to convert a bootsplash image
475 to the supported JPEG format.
477 config BOOTSPLASH_CONVERT_QUALITY
478 int "Bootsplash JPEG target quality (%)"
479 depends on BOOTSPLASH_CONVERT
481 # Default value set at the end of the file
483 config BOOTSPLASH_CONVERT_RESIZE
484 bool "Resize bootsplash image"
485 depends on BOOTSPLASH_CONVERT
487 Resize the image to the given resolution. Aspect ratio will be kept,
488 adding black bars as necessary.
490 config BOOTSPLASH_CONVERT_RESOLUTION
491 string "Bootsplash image target size"
492 depends on BOOTSPLASH_CONVERT_RESIZE
493 # Default value set at the end of the file
495 Target image resolution given as <width>x<height>, e.g. 1024x768.
496 Values not divisible by 16 will be rounded down.
498 When using coreboot to display the bootsplash image (CONFIG_BOOTSPLASH),
499 set this lower or equal to the minimum resolution you expect.
501 config BOOTSPLASH_CONVERT_COLORSWAP
502 bool "Swap red and blue color channels"
503 depends on BOOTSPLASH_CONVERT
505 The JPEG decoder currently ignores the framebuffer color order.
506 If your colors seem all wrong, try this option.
509 bool "Firmware Configuration Probing"
512 Enable support for probing devices with fw_config. This is a simple
513 bitmask broken into fields and options for probing.
515 config FW_CONFIG_SOURCE_CHROMEEC_CBI
516 bool "Obtain Firmware Configuration value from Google Chrome EC CBI"
517 depends on FW_CONFIG && EC_GOOGLE_CHROMEEC
520 This option tells coreboot to read the firmware configuration value
521 from the Google Chrome Embedded Controller CBI interface. This source
522 is not tried if FW_CONFIG_SOURCE_CBFS is enabled and the value was
525 config FW_CONFIG_SOURCE_CBFS
526 bool "Obtain Firmware Configuration value from CBFS"
530 With this option enabled coreboot will look for the 32bit firmware
531 configuration value in CBFS at the selected prefix with the file name
532 "fw_config". This option will override other sources and allow the
533 local image to preempt the mainboard selected source and can be used as
534 FW_CONFIG_SOURCE_CHROMEEC_CBI fallback option.
536 config FW_CONFIG_SOURCE_VPD
537 bool "Obtain Firmware Configuration value from VPD"
538 depends on FW_CONFIG && VPD
541 With this option enabled coreboot will look for the 32bit firmware
542 configuration value in VPD key name "fw_config". This option will
543 override other sources and allow the local image to preempt the mainboard
544 selected source and can be used for other FW_CONFIG_SOURCEs fallback option.
546 config HAVE_RAMPAYLOAD
550 bool "Enable coreboot flow without executing ramstage"
551 default y if ARCH_X86
552 depends on HAVE_RAMPAYLOAD
554 If this option is enabled, coreboot flow will skip ramstage
555 loading and execution of ramstage to load payload.
557 Instead it is expected to load payload from postcar stage itself.
559 In this flow coreboot will perform basic x86 initialization
560 (DRAM resource allocation), MTRR programming,
561 Skip PCI enumeration logic and only allocate BAR for fixed devices
562 (bootable devices, TPM over GSPI).
564 config HAVE_CONFIGURABLE_RAMSTAGE
567 config CONFIGURABLE_RAMSTAGE
568 bool "Enable a configurable ramstage."
569 default y if ARCH_X86
570 depends on HAVE_CONFIGURABLE_RAMSTAGE
572 A configurable ramstage allows you to select which parts of the ramstage
573 to run. Currently, we can only select a minimal PCI scanning step.
574 The minimal PCI scanning will only check those parts that are enabled
575 in the devicetree.cb. By convention none of those devices should be bridges.
577 config MINIMAL_PCI_SCANNING
578 bool "Enable minimal PCI scanning"
579 depends on CONFIGURABLE_RAMSTAGE && PCI
581 If this option is enabled, coreboot will scan only PCI devices
582 marked as mandatory in devicetree.cb
584 menu "Software Bill Of Materials (SBOM)"
586 source "src/sbom/Kconfig"
593 source "src/mainboard/Kconfig"
597 default "devicetree.cb"
599 This symbol allows mainboards to select a different file under their
600 mainboard directory for the devicetree.cb file. This allows the board
601 variants that need different devicetrees to be in the same directory.
603 Examples: "devicetree.variant.cb"
604 "variant/devicetree.cb"
606 config OVERRIDE_DEVICETREE
610 This symbol allows variants to provide an override devicetree file to
611 override the registers and/or add new devices on top of the ones
612 provided by baseboard devicetree using CONFIG_DEVICETREE.
614 Examples: "devicetree.variant-override.cb"
615 "variant/devicetree-override.cb"
618 string "fmap description file in fmd format"
619 default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
622 The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
623 but in some cases more complex setups are required.
624 When an fmd is specified, it overrides the default format.
627 hex "Size of CBFS filesystem in ROM"
628 depends on FMDFILE = ""
629 # Default value set at the end of the file
631 This is the part of the ROM actually managed by CBFS, located at the
632 end of the ROM (passed through cbfstool -o) on x86 and at the start
633 of the ROM (passed through cbfstool -s) everywhere else. It defaults
634 to span the whole ROM on all but Intel systems that use an Intel Firmware
635 Descriptor. It can be overridden to make coreboot live alongside other
636 components like ChromeOS's vboot/FMAP or Intel's IFD / ME / TXE
637 binaries. This symbol should only be used to generate a default FMAP and
638 is unused when a non-default fmd file is provided via CONFIG_FMDFILE.
642 # load site-local kconfig to allow user specific defaults and overrides
643 source "site-local/Kconfig"
645 config SYSTEM_TYPE_LAPTOP
649 config SYSTEM_TYPE_TABLET
653 config SYSTEM_TYPE_DETACHABLE
657 config SYSTEM_TYPE_CONVERTIBLE
661 config CBFS_AUTOGEN_ATTRIBUTES
665 If this option is selected, every file in cbfs which has a constraint
666 regarding position or alignment will get an additional file attribute
667 which describes this constraint.
672 source "src/soc/*/*/Kconfig"
673 source "src/soc/*/*/Kconfig.common"
675 source "src/cpu/Kconfig"
676 comment "Northbridge"
677 source "src/northbridge/*/*/Kconfig"
678 source "src/northbridge/*/*/Kconfig.common"
679 comment "Southbridge"
680 source "src/southbridge/*/*/Kconfig"
681 source "src/southbridge/*/*/Kconfig.common"
683 source "src/superio/*/*/Kconfig"
684 comment "Embedded Controllers"
685 source "src/ec/acpi/Kconfig"
686 source "src/ec/*/*/Kconfig"
688 source "src/southbridge/intel/common/firmware/Kconfig"
689 source "src/vendorcode/*/Kconfig"
691 source "src/arch/*/Kconfig"
693 config CHIPSET_DEVICETREE
697 This symbol allows a chipset to provide a set of default settings in
698 a devicetree which are common to all mainboards. This may include
699 devices (including alias names), chip drivers, register settings,
700 and others. This path is relative to the src/ directory.
702 Example: "chipset.cb"
706 source "src/device/Kconfig"
708 menu "Generic Drivers"
709 source "src/drivers/*/Kconfig"
710 source "src/drivers/*/*/Kconfig"
711 source "src/drivers/*/*/*/Kconfig"
712 source "src/commonlib/storage/Kconfig"
717 source "src/security/Kconfig"
718 source "src/vendorcode/eltan/security/Kconfig"
722 source "src/acpi/Kconfig"
724 # This option is for the current boards/chipsets where SPI flash
725 # is not the boot device. Currently nearly all boards/chipsets assume
726 # SPI flash is the boot device.
727 config BOOT_DEVICE_NOT_SPI_FLASH
731 config BOOT_DEVICE_SPI_FLASH
733 default y if !BOOT_DEVICE_NOT_SPI_FLASH
736 config BOOT_DEVICE_MEMORY_MAPPED
738 default y if ARCH_X86 && BOOT_DEVICE_SPI_FLASH
741 Inform system if SPI is memory-mapped or not.
743 config BOOT_DEVICE_SUPPORTS_WRITES
747 Indicate that the platform has writable boot device
760 default 0x2000 if ARCH_X86
767 source "src/console/Kconfig"
769 config ACPI_S1_NOT_SUPPORTED
773 Set this to 'y' on platforms that do not support ACPI S1 state.
775 config HAVE_ACPI_RESUME
779 config DISABLE_ACPI_HIBERNATE
783 Removes S4 from the available sleepstates
785 config RESUME_PATH_SAME_AS_BOOT
787 default y if ARCH_X86
788 depends on HAVE_ACPI_RESUME
790 This option indicates that when a system resumes it takes the
791 same path as a regular boot. e.g. an x86 system runs from the
792 reset vector at 0xfffffff0 on both resume and warm/cold boot.
794 config NO_MONOTONIC_TIMER
797 config HAVE_MONOTONIC_TIMER
799 depends on !NO_MONOTONIC_TIMER
802 The board/chipset provides a monotonic timer.
804 config GENERIC_UDELAY
806 depends on HAVE_MONOTONIC_TIMER
807 default y if !ARCH_X86
809 The board/chipset uses a generic udelay function utilizing the
814 depends on HAVE_MONOTONIC_TIMER
816 Provide a timer queue for performing time-based callbacks.
818 config COOP_MULTITASKING
823 Cooperative multitasking allows callbacks to be multiplexed on the
824 main thread. With this enabled it allows for multiple execution paths
825 to take place when they have udelay() calls within their code.
830 depends on COOP_MULTITASKING
832 How many execution threads to cooperatively multitask with.
834 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
837 Selected by mainboards which implement a mainboard-specific mechanism
838 to access the values for runtime-configurable options. For example, a
839 custom BMC interface or an EEPROM with an externally-imposed layout.
841 config HAVE_OPTION_TABLE
845 This variable specifies whether a given board has a cmos.layout
846 file containing NVRAM/CMOS bit definitions.
847 It defaults to 'n' but can be selected in mainboard/*/Kconfig.
849 config CMOS_LAYOUT_FILE
851 default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
852 depends on HAVE_OPTION_TABLE
854 config PCI_IO_CFG_EXT
863 config USE_WATCHDOG_ON_BOOT
871 Enable Unified Memory Architecture for graphics.
876 This variable specifies whether a given board has MP table support.
877 It is usually set in mainboard/*/Kconfig.
878 Whether or not the MP table is actually generated by coreboot
879 is configurable by the user via GENERATE_MP_TABLE.
881 config HAVE_PIRQ_TABLE
884 This variable specifies whether a given board has PIRQ table support.
885 It is usually set in mainboard/*/Kconfig.
886 Whether or not the PIRQ table is actually generated by coreboot
887 is configurable by the user via GENERATE_PIRQ_TABLE.
893 Build support for NHLT (non HD Audio) ACPI table generation.
895 #These Options are here to avoid "undefined" warnings.
896 #The actual selection and help texts are in the following menu.
900 config GENERATE_MP_TABLE
901 prompt "Generate an MP table" if HAVE_MP_TABLE
903 depends on !ECAM_MMCONF_SUPPORT || ECAM_MMCONF_BUS_NUMBER <= 256
904 default HAVE_MP_TABLE
906 Generate an MP table (conforming to the Intel MultiProcessor
907 specification 1.4) for this board.
911 config GENERATE_PIRQ_TABLE
912 prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
914 default HAVE_PIRQ_TABLE
916 Generate a PIRQ table for this board.
920 config GENERATE_SMBIOS_TABLES
922 bool "Generate SMBIOS tables"
925 Generate SMBIOS tables for this board.
929 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
933 If enabled, only generate SMBIOS Type 41 entries for PCI devices in
934 the devicetree for which Type 41 information is provided, e.g. with
935 the `smbios_dev_info` devicetree syntax. This is useful to manually
936 assign specific instance IDs to onboard devices irrespective of the
937 device traversal order. It is assumed that instance IDs for devices
938 of the same class are unique.
939 When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
940 appropriate PCI devices in the devicetree. Instance IDs are assigned
941 successive numbers from a monotonically increasing counter, with one
942 counter for each device class.
944 config SMBIOS_PROVIDED_BY_MOBO
948 if GENERATE_SMBIOS_TABLES
951 prompt "SMBIOS BIOS Vendor name"
955 The BIOS Vendor name to store in the SMBIOS Type0 table.
957 config MAINBOARD_SERIAL_NUMBER
958 prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
962 The Serial Number to store in SMBIOS structures.
964 config MAINBOARD_VERSION
965 prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
969 The Version Number to store in SMBIOS structures.
971 config MAINBOARD_SMBIOS_MANUFACTURER
972 prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
974 default MAINBOARD_VENDOR
976 Override the default Manufacturer stored in SMBIOS structures.
978 config MAINBOARD_SMBIOS_PRODUCT_NAME
979 prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
981 default MAINBOARD_PART_NUMBER
983 Override the default Product name stored in SMBIOS structures.
985 config VPD_SMBIOS_VERSION
986 bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
990 Selecting this option will read firmware_version from
991 VPD_RO and override SMBIOS type 0 version. One special
992 scenario of using this feature is to assign a BIOS version
993 to a coreboot image without the need to rebuild from source.
999 source "payloads/Kconfig"
1003 comment "CPU Debug Settings"
1004 source "src/cpu/*/Kconfig.debug_cpu"
1006 comment "Vendorcode Debug Settings"
1007 source "src/vendorcode/*/*/Kconfig.debug"
1009 comment "BLOB Debug Settings"
1010 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
1012 comment "General Debug Settings"
1014 # TODO: Better help text and detailed instructions.
1016 bool "GDB debugging support"
1018 depends on DRIVERS_UART
1020 If enabled, you will be able to set breakpoints for gdb debugging.
1021 See src/arch/x86/c_start.S for details.
1024 bool "Wait for a GDB connection in the ramstage"
1028 If enabled, coreboot will wait for a GDB connection in the ramstage.
1031 config FATAL_ASSERTS
1032 bool "Halt when hitting a BUG() or assertion error"
1035 If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
1037 config HAVE_DEBUG_GPIO
1041 bool "Output verbose GPIO debug messages"
1042 depends on HAVE_DEBUG_GPIO
1045 bool "Output verbose CBFS debug messages"
1048 This option enables additional CBFS related debug messages.
1050 config HAVE_DEBUG_RAM_SETUP
1053 config DEBUG_RAM_SETUP
1054 bool "Output verbose RAM init debug messages"
1056 depends on HAVE_DEBUG_RAM_SETUP
1058 This option enables additional RAM init related debug messages.
1059 It is recommended to enable this when debugging issues on your
1060 board which might be RAM init related.
1062 Note: This option will increase the size of the coreboot image.
1067 bool "Check PIRQ table consistency"
1069 depends on GENERATE_PIRQ_TABLE
1073 config HAVE_DEBUG_SMBUS
1077 bool "Output verbose SMBus debug messages"
1079 depends on HAVE_DEBUG_SMBUS
1081 This option enables additional SMBus (and SPD) debug messages.
1083 Note: This option will increase the size of the coreboot image.
1088 bool "Output verbose SMI debug messages"
1090 depends on HAVE_SMI_HANDLER
1091 select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
1093 This option enables additional SMI related debug messages.
1095 Note: This option will increase the size of the coreboot image.
1099 config DEBUG_PERIODIC_SMI
1100 bool "Trigger SMI periodically"
1101 depends on DEBUG_SMI
1103 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1104 # printk(BIOS_DEBUG, ...) calls.
1106 prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1110 This option enables additional malloc related debug messages.
1112 Note: This option will increase the size of the coreboot image.
1116 # Only visible if DEBUG_SPEW (8) is set.
1117 config DEBUG_RESOURCES
1118 bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1121 This option enables additional PCI memory and IO debug messages.
1122 Note: This option will increase the size of the coreboot image.
1125 config DEBUG_CONSOLE_INIT
1126 bool "Debug console initialisation code"
1129 With this option printk()'s are attempted before console hardware
1130 initialisation has been completed. Your mileage may vary.
1132 Typically you will need to modify source in console_hw_init() such
1133 that a working console appears before the one you want to debug.
1137 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1138 # printk(BIOS_DEBUG, ...) calls.
1139 config REALMODE_DEBUG
1140 prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1143 depends on PCI_OPTION_ROM_RUN_REALMODE
1145 This option enables additional x86emu related debug messages.
1147 Note: This option will increase the time to emulate a ROM.
1152 bool "Output verbose x86emu debug messages"
1154 depends on PCI_OPTION_ROM_RUN_YABEL
1156 This option enables additional x86emu related debug messages.
1158 Note: This option will increase the size of the coreboot image.
1164 config X86EMU_DEBUG_JMP
1165 bool "Trace JMP/RETF"
1168 Print information about JMP and RETF opcodes from x86emu.
1170 Note: This option will increase the size of the coreboot image.
1174 config X86EMU_DEBUG_TRACE
1175 bool "Trace all opcodes"
1178 Print _all_ opcodes that are executed by x86emu.
1180 WARNING: This will produce a LOT of output and take a long time.
1182 Note: This option will increase the size of the coreboot image.
1186 config X86EMU_DEBUG_PNP
1187 bool "Log Plug&Play accesses"
1190 Print Plug And Play accesses made by option ROMs.
1192 Note: This option will increase the size of the coreboot image.
1196 config X86EMU_DEBUG_DISK
1200 Print Disk I/O related messages.
1202 Note: This option will increase the size of the coreboot image.
1206 config X86EMU_DEBUG_PMM
1210 Print messages related to POST Memory Manager (PMM).
1212 Note: This option will increase the size of the coreboot image.
1217 config X86EMU_DEBUG_VBE
1218 bool "Debug VESA BIOS Extensions"
1221 Print messages related to VESA BIOS Extension (VBE) functions.
1223 Note: This option will increase the size of the coreboot image.
1227 config X86EMU_DEBUG_INT10
1228 bool "Redirect INT10 output to console"
1231 Let INT10 (i.e. character output) calls print messages to debug output.
1233 Note: This option will increase the size of the coreboot image.
1237 config X86EMU_DEBUG_INTERRUPTS
1238 bool "Log intXX calls"
1241 Print messages related to interrupt handling.
1243 Note: This option will increase the size of the coreboot image.
1247 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1248 bool "Log special memory accesses"
1251 Print messages related to accesses to certain areas of the virtual
1252 memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1254 Note: This option will increase the size of the coreboot image.
1258 config X86EMU_DEBUG_MEM
1259 bool "Log all memory accesses"
1262 Print memory accesses made by option ROM.
1263 Note: This also includes accesses to fetch instructions.
1265 Note: This option will increase the size of the coreboot image.
1269 config X86EMU_DEBUG_IO
1270 bool "Log IO accesses"
1273 Print I/O accesses made by option ROM.
1275 Note: This option will increase the size of the coreboot image.
1279 config X86EMU_DEBUG_TIMINGS
1280 bool "Output timing information"
1282 depends on HAVE_MONOTONIC_TIMER
1284 Print timing information needed by i915tool.
1290 config DEBUG_SPI_FLASH
1291 bool "Output verbose SPI flash debug messages"
1293 depends on SPI_FLASH
1295 This option enables additional SPI flash related debug messages.
1298 bool "Output verbose IPMI debug messages"
1302 This option enables additional IPMI related debug messages.
1304 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1305 # Only visible with the right southbridge and loglevel.
1306 config DEBUG_INTEL_ME
1307 bool "Verbose logging for Intel Management Engine"
1310 Enable verbose logging for Intel Management Engine driver that
1311 is present on Intel 6-series chipsets.
1315 bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1318 This option enables additional function entry and exit debug messages
1319 for select functions.
1320 Note: This option will increase the size of the coreboot image.
1323 config DEBUG_COVERAGE
1324 bool "Debug code coverage"
1328 If enabled, the code coverage hooks in coreboot will output some
1329 information about the coverage data that is dumped.
1331 config DEBUG_BOOT_STATE
1332 bool "Debug boot state machine"
1335 Control debugging of the boot state machine. When selected displays
1336 the state boundaries in ramstage.
1338 config DEBUG_ADA_CODE
1339 bool "Compile debug code in Ada sources"
1342 Add the compiler switch `-gnata` to compile code guarded by
1345 config HAVE_EM100_SUPPORT
1348 This is enabled by platforms which can support using the EM100.
1351 bool "Configure image for EM100 usage"
1352 depends on HAVE_EM100_SUPPORT
1354 The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1355 over USB. However it only supports a maximum SPI clock of 20MHz and
1356 single data output. Enable this option to use a 20MHz SPI clock and
1357 disable "Dual Output Fast Read" Support.
1359 On AMD platforms this changes the SPI speed at run-time if the
1360 mainboard code supports this. On supported Intel platforms this works
1361 by changing the settings in the descriptor.bin file.
1363 config DEBUG_ACPICA_COMPATIBLE
1364 bool "Print out ACPI tables in ACPICA compatible format"
1365 depends on HAVE_ACPI_TABLES
1367 Select this to print out ACPI tables in an ACPICA compatible
1368 format. Set the console loglevel to verbosity 'SPEW'.
1369 To analyze ACPI tables capture the coreboot log between
1370 "Printing ACPI in ACPICA compatible table" and "Done printing
1371 ACPI in ACPICA compatible table".
1372 Remove the prefix "[SPEW ] " and then issue 'acpixtract -a dump'
1373 to extract all the tables. Then use 'iasl -d' on the .dat files
1374 to decompile the tables.
1378 ###############################################################################
1379 # Set variables with no prompt - these can be set anywhere, and putting at
1380 # the end of this file gives the most flexibility.
1382 source "src/lib/Kconfig"
1384 config WARNINGS_ARE_ERRORS
1388 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1389 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1390 # mutually exclusive. One of these options must be selected in the
1391 # mainboard Kconfig if the chipset supports enabling and disabling of
1392 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1393 # in mainboard/Kconfig to know if the button should be enabled or not.
1395 config POWER_BUTTON_DEFAULT_ENABLE
1398 Select when the board has a power button which can optionally be
1399 disabled by the user.
1401 config POWER_BUTTON_DEFAULT_DISABLE
1404 Select when the board has a power button which can optionally be
1405 enabled by the user, e.g. when the board ships with a jumper over
1406 the power switch contacts.
1408 config POWER_BUTTON_FORCE_ENABLE
1411 Select when the board requires that the power button is always
1414 config POWER_BUTTON_FORCE_DISABLE
1417 Select when the board requires that the power button is always
1418 disabled, e.g. when it has been hardwired to ground.
1420 config POWER_BUTTON_IS_OPTIONAL
1422 default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1423 default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1425 Internal option that controls ENABLE_POWER_BUTTON visibility.
1431 Internal option that controls whether we compile in register scripts.
1433 config MAX_REBOOT_CNT
1437 Internal option that sets the maximum number of bootblock executions allowed
1438 with the normal image enabled before assuming the normal image is defective
1439 and switching to the fallback image.
1441 config UNCOMPRESSED_RAMSTAGE
1444 config NO_XIP_EARLY_STAGES
1446 default n if ARCH_X86
1449 Identify if early stages are eXecute-In-Place(XIP).
1451 config EARLY_CBMEM_LIST
1455 Enable display of CBMEM during romstage and postcar.
1457 config RELOCATABLE_MODULES
1460 If RELOCATABLE_MODULES is selected then support is enabled for
1461 building relocatable modules in the RAM stage. Those modules can be
1462 loaded anywhere and all the relocations are handled automatically.
1464 config GENERIC_GPIO_LIB
1467 If enabled, compile the generic GPIO library. A "generic" GPIO
1468 implies configurability usually found on SoCs, particularly the
1469 ability to control internal pull resistors.
1471 config BOOTBLOCK_CUSTOM
1472 # To be selected by arch, SoC or mainboard if it does not want use the normal
1473 # src/lib/bootblock.c#main() C entry point.
1476 config BOOTBLOCK_IN_CBFS
1478 default y if ARCH_X86
1480 Select this on platforms that have a top aligned bootblock inside cbfs.
1482 config MEMLAYOUT_LD_FILE
1484 default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1486 This variable allows SoC/mainboard to supply in a custom linker file
1487 if required. This determines the linker file used for all the stages
1488 (bootblock, romstage, verstage, ramstage, postcar) in
1489 src/arch/${ARCH}/Makefile.mk.
1491 ###############################################################################
1492 # Set default values for symbols created before mainboards. This allows the
1493 # option to be displayed in the general menu, but the default to be loaded in
1494 # the mainboard if desired.
1495 config COMPRESS_PRERAM_STAGES
1496 depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1499 config INCLUDE_CONFIG_FILE
1502 config BOOTSPLASH_FILE
1503 depends on BOOTSPLASH_IMAGE
1504 default "bootsplash.jpg"
1506 config BOOTSPLASH_CONVERT_QUALITY
1507 depends on BOOTSPLASH_CONVERT
1510 config BOOTSPLASH_CONVERT_RESOLUTION
1511 depends on BOOTSPLASH_CONVERT_RESIZE
1517 config HAVE_BOOTBLOCK
1521 config HAVE_VERSTAGE
1523 depends on VBOOT_SEPARATE_VERSTAGE
1526 config HAVE_ROMSTAGE
1528 depends on SEPARATE_ROMSTAGE
1531 config HAVE_RAMSTAGE
1533 default n if RAMPAYLOAD
1536 config SEPARATE_ROMSTAGE