SMBIOS: Group Kconfig dependency
[coreboot.git] / src / Kconfig
blob50381ae0998beefe96b9be5c2945ce422b993580
1 ## SPDX-License-Identifier: GPL-2.0-only
3 mainmenu "coreboot configuration"
5 menu "General setup"
7 config COREBOOT_BUILD
8         bool
9         default y
11 config LOCALVERSION
12         string "Local version string"
13         help
14           Append an extra string to the end of the coreboot version.
16           This can be useful if, for instance, you want to append the
17           respective board's hostname or some other identifying string to
18           the coreboot version number, so that you can easily distinguish
19           boot logs of different boards from each other.
21 config CONFIGURABLE_CBFS_PREFIX
22         bool
23         help
24           Select this to prompt to use to configure the prefix for cbfs files.
26 choice
27         prompt "CBFS prefix to use"
28         depends on CONFIGURABLE_CBFS_PREFIX
29         default CBFS_PREFIX_FALLBACK
31 config CBFS_PREFIX_FALLBACK
32         bool "fallback"
34 config CBFS_PREFIX_NORMAL
35         bool "normal"
37 config CBFS_PREFIX_DIY
38         bool "Define your own cbfs prefix"
40 endchoice
42 config CBFS_PREFIX
43         string "CBFS prefix to use" if CBFS_PREFIX_DIY
44         default "fallback" if !CONFIGURABLE_CBFS_PREFIX || CBFS_PREFIX_FALLBACK
45         default "normal" if CBFS_PREFIX_NORMAL
46         help
47           Select the prefix to all files put into the image. It's "fallback"
48           by default, "normal" is a common alternative.
50 choice
51         prompt "Compiler to use"
52         default COMPILER_GCC
53         help
54           This option allows you to select the compiler used for building
55           coreboot.
56           You must build the coreboot crosscompiler for the board that you
57           have selected.
59           To build all the GCC crosscompilers (takes a LONG time), run:
60             make crossgcc
62           For help on individual architectures, run the command:
63             make help_toolchain
65 config COMPILER_GCC
66         bool "GCC"
67         help
68           Use the GNU Compiler Collection (GCC) to build coreboot.
70           For details see http://gcc.gnu.org.
72 config COMPILER_LLVM_CLANG
73         bool "LLVM/clang"
74         depends on ALLOW_EXPERIMENTAL_CLANG || ARCH_SUPPORTS_CLANG
75         help
76           Use LLVM/clang to build coreboot.  To use this, you must build the
77           coreboot version of the clang compiler.  Run the command
78             make clang
79           Note that Clang is not currently working on all architectures.
81           For details see http://clang.llvm.org.
83 endchoice
85 config ARCH_SUPPORTS_CLANG
86         bool
87         help
88           Opt-in flag for architectures that generally work well with CLANG.
89           By default the option would be hidden.
91 config ALLOW_EXPERIMENTAL_CLANG
92         bool "Allow experimental LLVM/Clang"
93         depends on !ARCH_SUPPORTS_CLANG
94         help
95           On some architectures CLANG does not work that well.
96           Use this only to try to get CLANG working.
98 config ANY_TOOLCHAIN
99         bool "Allow building with any toolchain"
100         default n
101         help
102           Many toolchains break when building coreboot since it uses quite
103           unusual linker features. Unless developers explicitly request it,
104           we'll have to assume that they use their distro compiler by mistake.
105           Make sure that using patched compilers is a conscious decision.
107 config CCACHE
108         bool "Use ccache to speed up (re)compilation"
109         default n
110         help
111           Enables the use of ccache for faster builds.
113           Requires the ccache utility in your system $PATH.
115           For details see https://ccache.samba.org.
117 config IWYU
118         bool "Test platform with include-what-you-use"
119         help
120           This runs each source file through the include-what-you-use tool
121           to check the header includes.
123 config FMD_GENPARSER
124         bool "Generate flashmap descriptor parser using flex and bison"
125         default n
126         help
127           Enable this option if you are working on the flashmap descriptor
128           parser and made changes to fmd_scanner.l or fmd_parser.y.
130           Otherwise, say N to use the provided pregenerated scanner/parser.
132 config UTIL_GENPARSER
133         bool "Generate parsers for bincfg, sconfig and kconfig locally"
134         default n
135         help
136           Enable this option if you are working on the sconfig device tree
137           parser or bincfg and made changes to the .l or .y files.
139           Otherwise, say N to use the provided pregenerated scanner/parser.
141 choice
142         prompt "Option backend to use"
143         default USE_MAINBOARD_SPECIFIC_OPTION_BACKEND if HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
144         default USE_OPTION_TABLE if NVRAMCUI_SECONDARY_PAYLOAD
145         default USE_UEFI_VARIABLE_STORE if DRIVERS_EFI_VARIABLE_STORE && \
146                 PAYLOAD_EDK2 && SMMSTORE_V2
148 config OPTION_BACKEND_NONE
149         bool "None"
151 config USE_OPTION_TABLE
152         bool "Use CMOS for configuration values"
153         depends on HAVE_OPTION_TABLE
154         help
155           Enable this option if coreboot shall read options from the "CMOS"
156           NVRAM instead of using hard-coded values.
158 config USE_UEFI_VARIABLE_STORE
159         bool "Use UEFI variable-store in SPI flash as option backend"
160         depends on DRIVERS_EFI_VARIABLE_STORE
161         depends on SMMSTORE_V2
162         help
163           Enable this option if coreboot shall read/write options from the
164           SMMSTORE region within the SPI flash. The region must be formatted
165           by the payload first before it can be used.
167 config USE_MAINBOARD_SPECIFIC_OPTION_BACKEND
168         bool "Use mainboard-specific option backend"
169         depends on HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
170         help
171           Use a mainboard-specific mechanism to access runtime-configurable
172           options.
174 endchoice
176 config STATIC_OPTION_TABLE
177         bool "Load default configuration values into CMOS on each boot"
178         depends on USE_OPTION_TABLE
179         help
180           Enable this option to reset "CMOS" NVRAM values to default on
181           every boot.  Use this if you want the NVRAM configuration to
182           never be modified from its default values.
184 config MB_COMPRESS_RAMSTAGE_LZ4
185         bool
186         help
187           Select this in a mainboard to use LZ4 compression by default
189 choice
190         prompt "Ramstage compression"
191         depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE
192         default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4
193         default COMPRESS_RAMSTAGE_LZMA
195 config COMPRESS_RAMSTAGE_LZMA
196         bool "Compress ramstage with LZMA"
197         help
198           Compress ramstage with LZMA to save memory in the flash image.
200 config COMPRESS_RAMSTAGE_LZ4
201         bool "Compress ramstage with LZ4"
202         help
203           LZ4 doesn't give as good compression as LZMA, but decompresses much
204           faster. For large binaries such as ramstage, it's typically best to
205           use LZMA, but there can be cases where the faster decompression of
206           LZ4 can lead to a faster boot time. Testing on each individual board
207           is typically going to be needed due to the large number of factors
208           that can influence the decision. Binary size, CPU speed, ROM read
209           speed, cache, and other factors all play a part.
211           If you're not sure, stick with LZMA.
213 endchoice
215 config COMPRESS_PRERAM_STAGES
216         bool "Compress romstage and verstage with LZ4"
217         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
218         # Default value set at the end of the file
219         help
220           Compress romstage and (if it exists) verstage with LZ4 to save flash
221           space and speed up boot, since the time for reading the image from SPI
222           (and in the vboot case verifying it) is usually much greater than the
223           time spent decompressing. Doesn't work for XIP stages for obvious
224           reasons.
226 config COMPRESS_BOOTBLOCK
227         bool
228         depends on HAVE_BOOTBLOCK
229         help
230           This option can be used to compress the bootblock with LZ4 and attach
231           a small self-decompression stub to its front. This can drastically
232           reduce boot time on platforms where the bootblock is loaded over a
233           very slow connection and bootblock size trumps all other factors for
234           speed. Since using this option usually requires changes to the
235           SoC memlayout and possibly extra support code, it should not be
236           user-selectable. (There's no real point in offering this to the user
237           anyway... if it works and saves boot time, you would always want it.)
239 config INCLUDE_CONFIG_FILE
240         bool "Include the coreboot .config file into the ROM image"
241         # Default value set at the end of the file
242         help
243           Include the .config file that was used to compile coreboot
244           in the (CBFS) ROM image. This is useful if you want to know which
245           options were used to build a specific coreboot.rom image.
247           Saying Y here will increase the image size by 2-3KB.
249           You can then use cbfstool to extract the config from a final image:
251             cbfstool coreboot.rom extract -n config -f <output file path>
253           Alternatively, you can also use cbfstool to print the image
254           contents (including the raw 'config' item we're looking for).
256           Example:
258             $ cbfstool coreboot.rom print
259             coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304,
260                                                        offset 0x0
261             Alignment: 64 bytes
263             Name                           Offset     Type         Size
264             cmos_layout.bin                0x0        CMOS layout  1159
265             fallback/romstage              0x4c0      stage        339756
266             fallback/ramstage              0x53440    stage        186664
267             fallback/payload               0x80dc0    payload      51526
268             config                         0x8d740    raw          3324
269             (empty)                        0x8e480    null         3610440
271 config COLLECT_TIMESTAMPS
272         bool "Create a table of timestamps collected during boot"
273         default y if ARCH_X86
274         help
275           Make coreboot create a table of timer-ID/timer-value pairs to
276           allow measuring time spent at different phases of the boot process.
278 config TIMESTAMPS_ON_CONSOLE
279         bool "Print the timestamp values on the console"
280         default n
281         depends on COLLECT_TIMESTAMPS
282         help
283           Print the timestamps to the debug console if enabled at level info.
285 config USE_BLOBS
286         bool "Allow use of binary-only repository"
287         default y
288         help
289           This draws in the blobs repository, which contains binary files that
290           might be required for some chipsets or boards.
291           This flag ensures that a "Free" option remains available for users.
293 config USE_AMD_BLOBS
294         bool "Allow AMD blobs repository (with license agreement)"
295         depends on USE_BLOBS
296         help
297           This draws in the amd_blobs repository, which contains binary files
298           distributed by AMD, including VBIOS, PSP bootloaders, SMU firmwares,
299           etc.  Selecting this item to download or clone the repo implies your
300           agreement to the AMD license agreement.  A copy of the license text
301           may be reviewed by reading Documentation/soc/amd/amdblobs_license.md,
302           and your copy of the license is present in the repo once downloaded.
304           Note that for some products, omitting PSP, SMU images, or other items
305           may result in a nonbooting coreboot.rom.
307 config USE_QC_BLOBS
308         bool "Allow QC blobs repository (selecting this agrees to the license!)"
309         depends on USE_BLOBS
310         help
311           This draws in the qc_blobs repository, which contains binary files
312           distributed by Qualcomm that are required to build firmware for
313           certain Qualcomm SoCs (including QcLib, QC-SEC, qtiseclib and QUP
314           firmware). If you say Y here you are implicitly agreeing to the
315           Qualcomm license agreement which can be found at:
316           https://review.coreboot.org/cgit/qc_blobs.git/tree/LICENSE
318           *****************************************************
319           PLEASE MAKE SURE YOU READ AND AGREE TO ALL TERMS IN
320           ABOVE LICENSE AGREEMENT BEFORE SELECTING THIS OPTION!
321           *****************************************************
323           Not selecting this option means certain Qualcomm SoCs and related
324           mainboards cannot be built and will be hidden from the "Mainboards"
325           section.
327 config COVERAGE
328         bool "Code coverage support"
329         depends on COMPILER_GCC
330         help
331           Add code coverage support for coreboot. This will store code
332           coverage information in CBMEM for extraction from user space.
333           If unsure, say N.
335 config UBSAN
336         bool "Undefined behavior sanitizer support"
337         default n
338         help
339           Instrument the code with checks for undefined behavior. If unsure,
340           say N because it adds a small performance penalty and may abort
341           on code that happens to work in spite of the UB.
343 config HAVE_ASAN_IN_ROMSTAGE
344         bool
345         default n
347 config ASAN_IN_ROMSTAGE
348         bool
349         default n
350         help
351           Enable address sanitizer in romstage for platform.
353 config HAVE_ASAN_IN_RAMSTAGE
354         bool
355         default n
357 config ASAN_IN_RAMSTAGE
358         bool
359         default n
360         help
361           Enable address sanitizer in ramstage for platform.
363 config ASAN
364         bool "Address sanitizer support"
365         default n
366         select ASAN_IN_ROMSTAGE if HAVE_ASAN_IN_ROMSTAGE
367         select ASAN_IN_RAMSTAGE if HAVE_ASAN_IN_RAMSTAGE
368         depends on COMPILER_GCC
369         help
370           Enable address sanitizer - runtime memory debugger,
371           designed to find out-of-bounds accesses and use-after-scope bugs.
373           This feature consumes up to 1/8 of available memory and brings about
374           ~1.5x performance slowdown.
376           If unsure, say N.
378 if ASAN
379         comment "Before using this feature, make sure that           "
380         comment "asan_shadow_offset_callback patch is applied to GCC."
381 endif
383 choice
384         prompt "Stage Cache for ACPI S3 resume"
385         default NO_STAGE_CACHE if !HAVE_ACPI_RESUME || MAINBOARD_DISABLE_STAGE_CACHE
386         default TSEG_STAGE_CACHE if SMM_TSEG
388 config NO_STAGE_CACHE
389         bool "Disabled"
390         help
391           Do not save any component in stage cache for resume path. On resume,
392           all components would be read back from CBFS again.
394 config TSEG_STAGE_CACHE
395         bool "TSEG"
396         depends on SMM_TSEG
397         help
398           The option enables stage cache support for platform. Platform
399           can stash copies of postcar, ramstage and raw runtime data
400           inside SMM TSEG, to be restored on S3 resume path.
402 config CBMEM_STAGE_CACHE
403         bool "CBMEM"
404         depends on !SMM_TSEG
405         help
406           The option enables stage cache support for platform. Platform
407           can stash copies of postcar, ramstage and raw runtime data
408           inside CBMEM.
410           While the approach is faster than reloading stages from boot media
411           it is also a possible attack scenario via which OS can possibly
412           circumvent SMM locks and SPI write protections.
414           If unsure, select 'N'
416 endchoice
418 config MAINBOARD_DISABLE_STAGE_CACHE
419         bool
420         help
421           Selected by mainboards which wish to disable the stage cache.
422           E.g. mainboards which don't use S3 resume in the field may wish to
423           disable it to save boot time at the cost of increasing S3 resume time.
425 config UPDATE_IMAGE
426         bool "Update existing coreboot.rom image"
427         help
428           If this option is enabled, no new coreboot.rom file
429           is created. Instead it is expected that there already
430           is a suitable file for further processing.
431           The bootblock will not be modified.
433           If unsure, select 'N'
435 config BOOTSPLASH_IMAGE
436         bool "Add a bootsplash image"
437         help
438           Select this option if you have a bootsplash image that you would
439           like to add to your ROM.
441           This will only add the image to the ROM. To actually run it check
442           options under 'Display' section.
444 config BOOTSPLASH_FILE
445         string "Bootsplash path and filename"
446         depends on BOOTSPLASH_IMAGE
447         # Default value set at the end of the file
448         help
449           The path and filename of the file to use as graphical bootsplash
450           screen. The file format has to be jpg.
452 config FW_CONFIG
453         bool "Firmware Configuration Probing"
454         default n
455         help
456           Enable support for probing devices with fw_config.  This is a simple
457           bitmask broken into fields and options for probing.
459 config FW_CONFIG_SOURCE_CHROMEEC_CBI
460         bool "Obtain Firmware Configuration value from Google Chrome EC CBI"
461         depends on FW_CONFIG && EC_GOOGLE_CHROMEEC
462         default n
463         help
464           This option tells coreboot to read the firmware configuration value
465           from the Google Chrome Embedded Controller CBI interface.  This source
466           is not tried if FW_CONFIG_SOURCE_CBFS is enabled and the value was
467           found in CBFS.
469 config FW_CONFIG_SOURCE_CBFS
470         bool "Obtain Firmware Configuration value from CBFS"
471         depends on FW_CONFIG
472         default n
473         help
474           With this option enabled coreboot will look for the 32bit firmware
475           configuration value in CBFS at the selected prefix with the file name
476           "fw_config".  This option will override other sources and allow the
477           local image to preempt the mainboard selected source and can be used as
478           FW_CONFIG_SOURCE_CHROMEEC_CBI fallback option.
480 config FW_CONFIG_SOURCE_VPD
481         bool "Obtain Firmware Configuration value from VPD"
482         depends on FW_CONFIG && VPD
483         default n
484         help
485           With this option enabled coreboot will look for the 32bit firmware
486           configuration value in VPD key name "fw_config".  This option will
487           override other sources and allow the local image to preempt the mainboard
488           selected source and can be used for other FW_CONFIG_SOURCEs fallback option.
490 config HAVE_RAMPAYLOAD
491         bool
493 config RAMPAYLOAD
494         bool "Enable coreboot flow without executing ramstage"
495         default y if ARCH_X86
496         depends on HAVE_RAMPAYLOAD
497         help
498           If this option is enabled, coreboot flow will skip ramstage
499           loading and execution of ramstage to load payload.
501           Instead it is expected to load payload from postcar stage itself.
503           In this flow coreboot will perform basic x86 initialization
504           (DRAM resource allocation), MTRR programming,
505           Skip PCI enumeration logic and only allocate BAR for fixed devices
506           (bootable devices, TPM over GSPI).
508 config HAVE_CONFIGURABLE_RAMSTAGE
509         bool
511 config CONFIGURABLE_RAMSTAGE
512         bool "Enable a configurable ramstage."
513         default y if ARCH_X86
514         depends on HAVE_CONFIGURABLE_RAMSTAGE
515         help
516           A configurable ramstage allows you to select which parts of the ramstage
517           to run. Currently, we can only select a minimal PCI scanning step.
518           The minimal PCI scanning will only check those parts that are enabled
519           in the devicetree.cb. By convention none of those devices should be bridges.
521 config MINIMAL_PCI_SCANNING
522         bool "Enable minimal PCI scanning"
523         depends on CONFIGURABLE_RAMSTAGE && PCI
524         help
525           If this option is enabled, coreboot will scan only PCI devices
526           marked as mandatory in devicetree.cb
528 menu "Software Bill Of Materials (SBOM)"
530 source "src/sbom/Kconfig"
532 endmenu
533 endmenu
535 menu "Mainboard"
537 source "src/mainboard/Kconfig"
539 config DEVICETREE
540         string
541         default "devicetree.cb"
542         help
543           This symbol allows mainboards to select a different file under their
544           mainboard directory for the devicetree.cb file.  This allows the board
545           variants that need different devicetrees to be in the same directory.
547           Examples: "devicetree.variant.cb"
548                     "variant/devicetree.cb"
550 config OVERRIDE_DEVICETREE
551         string
552         default ""
553         help
554           This symbol allows variants to provide an override devicetree file to
555           override the registers and/or add new devices on top of the ones
556           provided by baseboard devicetree using CONFIG_DEVICETREE.
558           Examples: "devicetree.variant-override.cb"
559                     "variant/devicetree-override.cb"
561 config FMDFILE
562         string "fmap description file in fmd format"
563         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
564         default ""
565         help
566           The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
567           but in some cases more complex setups are required.
568           When an fmd is specified, it overrides the default format.
570 config CBFS_SIZE
571         hex "Size of CBFS filesystem in ROM"
572         depends on FMDFILE = ""
573         # Default value set at the end of the file
574         help
575           This is the part of the ROM actually managed by CBFS, located at the
576           end of the ROM (passed through cbfstool -o) on x86 and at the start
577           of the ROM (passed through cbfstool -s) everywhere else. It defaults
578           to span the whole ROM on all but Intel systems that use an Intel Firmware
579           Descriptor.  It can be overridden to make coreboot live alongside other
580           components like ChromeOS's vboot/FMAP or Intel's IFD / ME / TXE
581           binaries. This symbol should only be used to generate a default FMAP and
582           is unused when a non-default fmd file is provided via CONFIG_FMDFILE.
584 endmenu
586 # load site-local kconfig to allow user specific defaults and overrides
587 source "site-local/Kconfig"
589 config SYSTEM_TYPE_LAPTOP
590         default n
591         bool
593 config SYSTEM_TYPE_TABLET
594         default n
595         bool
597 config SYSTEM_TYPE_DETACHABLE
598         default n
599         bool
601 config SYSTEM_TYPE_CONVERTIBLE
602         default n
603         bool
605 config CBFS_AUTOGEN_ATTRIBUTES
606         default n
607         bool
608         help
609           If this option is selected, every file in cbfs which has a constraint
610           regarding position or alignment will get an additional file attribute
611           which describes this constraint.
613 menu "Chipset"
615 comment "SoC"
616 source "src/soc/*/*/Kconfig"
617 source "src/soc/*/*/Kconfig.common"
618 comment "CPU"
619 source "src/cpu/Kconfig"
620 comment "Northbridge"
621 source "src/northbridge/*/*/Kconfig"
622 source "src/northbridge/*/*/Kconfig.common"
623 comment "Southbridge"
624 source "src/southbridge/*/*/Kconfig"
625 source "src/southbridge/*/*/Kconfig.common"
626 comment "Super I/O"
627 source "src/superio/*/*/Kconfig"
628 comment "Embedded Controllers"
629 source "src/ec/acpi/Kconfig"
630 source "src/ec/*/*/Kconfig"
632 source "src/southbridge/intel/common/firmware/Kconfig"
633 source "src/vendorcode/*/Kconfig"
635 source "src/arch/*/Kconfig"
637 config CHIPSET_DEVICETREE
638         string
639         default ""
640         help
641           This symbol allows a chipset to provide a set of default settings in
642           a devicetree which are common to all mainboards. This may include
643           devices (including alias names), chip drivers, register settings,
644           and others. This path is relative to the src/ directory.
646           Example: "chipset.cb"
648 endmenu
650 source "src/device/Kconfig"
652 menu "Generic Drivers"
653 source "src/drivers/*/Kconfig"
654 source "src/drivers/*/*/Kconfig"
655 source "src/drivers/*/*/*/Kconfig"
656 source "src/commonlib/storage/Kconfig"
657 endmenu
659 menu "Security"
661 source "src/security/Kconfig"
662 source "src/vendorcode/eltan/security/Kconfig"
664 endmenu
666 source "src/acpi/Kconfig"
668 # This option is for the current boards/chipsets where SPI flash
669 # is not the boot device. Currently nearly all boards/chipsets assume
670 # SPI flash is the boot device.
671 config BOOT_DEVICE_NOT_SPI_FLASH
672         bool
673         default n
675 config BOOT_DEVICE_SPI_FLASH
676         bool
677         default y if !BOOT_DEVICE_NOT_SPI_FLASH
678         default n
680 config BOOT_DEVICE_MEMORY_MAPPED
681         bool
682         default y if ARCH_X86 && BOOT_DEVICE_SPI_FLASH
683         default n
684         help
685           Inform system if SPI is memory-mapped or not.
687 config BOOT_DEVICE_SUPPORTS_WRITES
688         bool
689         default n
690         help
691           Indicate that the platform has writable boot device
692           support.
694 config RTC
695         bool
696         default n
698 config HEAP_SIZE
699         hex
700         default 0x100000 if FLATTENED_DEVICE_TREE
701         default 0x4000
703 config STACK_SIZE
704         hex
705         default 0x2000 if ARCH_X86
706         default 0x0
708 config MAX_CPUS
709         int
710         default 1
712 source "src/console/Kconfig"
714 config ACPI_S1_NOT_SUPPORTED
715         bool
716         default n
717         help
718           Set this to 'y' on platforms that do not support ACPI S1 state.
720 config HAVE_ACPI_RESUME
721         bool
722         default n
724 config DISABLE_ACPI_HIBERNATE
725         bool
726         default n
727         help
728           Removes S4 from the available sleepstates
730 config RESUME_PATH_SAME_AS_BOOT
731         bool
732         default y if ARCH_X86
733         depends on HAVE_ACPI_RESUME
734         help
735           This option indicates that when a system resumes it takes the
736           same path as a regular boot. e.g. an x86 system runs from the
737           reset vector at 0xfffffff0 on both resume and warm/cold boot.
739 config NO_MONOTONIC_TIMER
740         def_bool n
742 config HAVE_MONOTONIC_TIMER
743         bool
744         depends on !NO_MONOTONIC_TIMER
745         default y
746         help
747          The board/chipset provides a monotonic timer.
749 config GENERIC_UDELAY
750         bool
751         depends on HAVE_MONOTONIC_TIMER
752         default y if !ARCH_X86
753         help
754          The board/chipset uses a generic udelay function utilizing the
755          monotonic timer.
757 config TIMER_QUEUE
758         def_bool n
759         depends on HAVE_MONOTONIC_TIMER
760         help
761           Provide a timer queue for performing time-based callbacks.
763 config COOP_MULTITASKING
764         def_bool n
765         select TIMER_QUEUE
766         depends on ARCH_X86
767         help
768           Cooperative multitasking allows callbacks to be multiplexed on the
769           main thread. With this enabled it allows for multiple execution paths
770           to take place when they have udelay() calls within their code.
772 config NUM_THREADS
773         int
774         default 4
775         depends on COOP_MULTITASKING
776         help
777           How many execution threads to cooperatively multitask with.
779 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
780         bool
781         help
782           Selected by mainboards which implement a mainboard-specific mechanism
783           to access the values for runtime-configurable options. For example, a
784           custom BMC interface or an EEPROM with an externally-imposed layout.
786 config HAVE_OPTION_TABLE
787         bool
788         default n
789         help
790           This variable specifies whether a given board has a cmos.layout
791           file containing NVRAM/CMOS bit definitions.
792           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
794 config CMOS_LAYOUT_FILE
795         string
796         default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
797         depends on HAVE_OPTION_TABLE
799 config PCI_IO_CFG_EXT
800         bool
801         default n
803 config IOAPIC
804         bool
805         default y if SMP
806         default n
808 config USE_WATCHDOG_ON_BOOT
809         bool
810         default n
812 config GFXUMA
813         bool
814         default n
815         help
816           Enable Unified Memory Architecture for graphics.
818 config HAVE_MP_TABLE
819         bool
820         help
821           This variable specifies whether a given board has MP table support.
822           It is usually set in mainboard/*/Kconfig.
823           Whether or not the MP table is actually generated by coreboot
824           is configurable by the user via GENERATE_MP_TABLE.
826 config HAVE_PIRQ_TABLE
827         bool
828         help
829           This variable specifies whether a given board has PIRQ table support.
830           It is usually set in mainboard/*/Kconfig.
831           Whether or not the PIRQ table is actually generated by coreboot
832           is configurable by the user via GENERATE_PIRQ_TABLE.
834 config ACPI_NHLT
835         bool
836         default n
837         help
838           Build support for NHLT (non HD Audio) ACPI table generation.
840 #These Options are here to avoid "undefined" warnings.
841 #The actual selection and help texts are in the following menu.
843 menu "System tables"
845 config GENERATE_MP_TABLE
846         prompt "Generate an MP table" if HAVE_MP_TABLE
847         bool
848         default HAVE_MP_TABLE
849         help
850           Generate an MP table (conforming to the Intel MultiProcessor
851           specification 1.4) for this board.
853           If unsure, say Y.
855 config GENERATE_PIRQ_TABLE
856         prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
857         bool
858         default HAVE_PIRQ_TABLE
859         help
860           Generate a PIRQ table for this board.
862           If unsure, say Y.
864 config GENERATE_SMBIOS_TABLES
865         depends on ARCH_X86
866         bool "Generate SMBIOS tables"
867         default y
868         help
869           Generate SMBIOS tables for this board.
871           If unsure, say Y.
873 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
874         bool
875         depends on ARCH_X86
876         help
877           If enabled, only generate SMBIOS Type 41 entries for PCI devices in
878           the devicetree for which Type 41 information is provided, e.g. with
879           the `smbios_dev_info` devicetree syntax. This is useful to manually
880           assign specific instance IDs to onboard devices irrespective of the
881           device traversal order. It is assumed that instance IDs for devices
882           of the same class are unique.
883           When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
884           appropriate PCI devices in the devicetree. Instance IDs are assigned
885           successive numbers from a monotonically increasing counter, with one
886           counter for each device class.
888 config SMBIOS_PROVIDED_BY_MOBO
889         bool
890         default n
892 if GENERATE_SMBIOS_TABLES
894 config MAINBOARD_SERIAL_NUMBER
895         prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
896         string
897         default "123456789"
898         help
899           The Serial Number to store in SMBIOS structures.
901 config MAINBOARD_VERSION
902         prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
903         string
904         default "1.0"
905         help
906           The Version Number to store in SMBIOS structures.
908 config MAINBOARD_SMBIOS_MANUFACTURER
909         prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
910         string
911         default MAINBOARD_VENDOR
912         help
913           Override the default Manufacturer stored in SMBIOS structures.
915 config MAINBOARD_SMBIOS_PRODUCT_NAME
916         prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
917         string
918         default MAINBOARD_PART_NUMBER
919         help
920           Override the default Product name stored in SMBIOS structures.
922 config VPD_SMBIOS_VERSION
923         bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
924         default n
925         depends on VPD
926         help
927           Selecting this option will read firmware_version from
928           VPD_RO and override SMBIOS type 0 version. One special
929           scenario of using this feature is to assign a BIOS version
930           to a coreboot image without the need to rebuild from source.
932 endif
934 endmenu
936 source "payloads/Kconfig"
938 menu "Debugging"
940 comment "CPU Debug Settings"
941 source "src/cpu/*/Kconfig.debug_cpu"
943 comment "BLOB Debug Settings"
944 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
946 comment "General Debug Settings"
948 # TODO: Better help text and detailed instructions.
949 config GDB_STUB
950         bool "GDB debugging support"
951         default n
952         depends on DRIVERS_UART
953         help
954           If enabled, you will be able to set breakpoints for gdb debugging.
955           See src/arch/x86/c_start.S for details.
957 config GDB_WAIT
958         bool "Wait for a GDB connection in the ramstage"
959         default n
960         depends on GDB_STUB
961         help
962           If enabled, coreboot will wait for a GDB connection in the ramstage.
965 config FATAL_ASSERTS
966         bool "Halt when hitting a BUG() or assertion error"
967         default n
968         help
969           If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
971 config HAVE_DEBUG_GPIO
972         bool
974 config DEBUG_GPIO
975         bool "Output verbose GPIO debug messages"
976         depends on HAVE_DEBUG_GPIO
978 config DEBUG_CBFS
979         bool "Output verbose CBFS debug messages"
980         default n
981         help
982           This option enables additional CBFS related debug messages.
984 config HAVE_DEBUG_RAM_SETUP
985         def_bool n
987 config DEBUG_RAM_SETUP
988         bool "Output verbose RAM init debug messages"
989         default n
990         depends on HAVE_DEBUG_RAM_SETUP
991         help
992           This option enables additional RAM init related debug messages.
993           It is recommended to enable this when debugging issues on your
994           board which might be RAM init related.
996           Note: This option will increase the size of the coreboot image.
998           If unsure, say N.
1000 config DEBUG_PIRQ
1001         bool "Check PIRQ table consistency"
1002         default n
1003         depends on GENERATE_PIRQ_TABLE
1004         help
1005           If unsure, say N.
1007 config HAVE_DEBUG_SMBUS
1008         def_bool n
1010 config DEBUG_SMBUS
1011         bool "Output verbose SMBus debug messages"
1012         default n
1013         depends on HAVE_DEBUG_SMBUS
1014         help
1015           This option enables additional SMBus (and SPD) debug messages.
1017           Note: This option will increase the size of the coreboot image.
1019           If unsure, say N.
1021 config DEBUG_SMI
1022         bool "Output verbose SMI debug messages"
1023         default n
1024         depends on HAVE_SMI_HANDLER
1025         select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
1026         help
1027           This option enables additional SMI related debug messages.
1029           Note: This option will increase the size of the coreboot image.
1031           If unsure, say N.
1033 config DEBUG_PERIODIC_SMI
1034         bool "Trigger SMI periodically"
1035         depends on DEBUG_SMI
1037 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1038 # printk(BIOS_DEBUG, ...) calls.
1039 config DEBUG_MALLOC
1040         prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1041         bool
1042         default n
1043         help
1044           This option enables additional malloc related debug messages.
1046           Note: This option will increase the size of the coreboot image.
1048           If unsure, say N.
1050 # Only visible if DEBUG_SPEW (8) is set.
1051 config DEBUG_RESOURCES
1052         bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1053         default n
1054         help
1055           This option enables additional PCI memory and IO debug messages.
1056           Note: This option will increase the size of the coreboot image.
1057           If unsure, say N.
1059 config DEBUG_CONSOLE_INIT
1060         bool "Debug console initialisation code"
1061         default n
1062         help
1063           With this option printk()'s are attempted before console hardware
1064           initialisation has been completed. Your mileage may vary.
1066           Typically you will need to modify source in console_hw_init() such
1067           that a working console appears before the one you want to debug.
1069           If unsure, say N.
1071 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1072 # printk(BIOS_DEBUG, ...) calls.
1073 config REALMODE_DEBUG
1074         prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1075         bool
1076         default n
1077         depends on PCI_OPTION_ROM_RUN_REALMODE
1078         help
1079           This option enables additional x86emu related debug messages.
1081           Note: This option will increase the time to emulate a ROM.
1083           If unsure, say N.
1085 config X86EMU_DEBUG
1086         bool "Output verbose x86emu debug messages"
1087         default n
1088         depends on PCI_OPTION_ROM_RUN_YABEL
1089         help
1090           This option enables additional x86emu related debug messages.
1092           Note: This option will increase the size of the coreboot image.
1094           If unsure, say N.
1096 config X86EMU_DEBUG_JMP
1097         bool "Trace JMP/RETF"
1098         default n
1099         depends on X86EMU_DEBUG
1100         help
1101           Print information about JMP and RETF opcodes from x86emu.
1103           Note: This option will increase the size of the coreboot image.
1105           If unsure, say N.
1107 config X86EMU_DEBUG_TRACE
1108         bool "Trace all opcodes"
1109         default n
1110         depends on X86EMU_DEBUG
1111         help
1112           Print _all_ opcodes that are executed by x86emu.
1114           WARNING: This will produce a LOT of output and take a long time.
1116           Note: This option will increase the size of the coreboot image.
1118           If unsure, say N.
1120 config X86EMU_DEBUG_PNP
1121         bool "Log Plug&Play accesses"
1122         default n
1123         depends on X86EMU_DEBUG
1124         help
1125           Print Plug And Play accesses made by option ROMs.
1127           Note: This option will increase the size of the coreboot image.
1129           If unsure, say N.
1131 config X86EMU_DEBUG_DISK
1132         bool "Log Disk I/O"
1133         default n
1134         depends on X86EMU_DEBUG
1135         help
1136           Print Disk I/O related messages.
1138           Note: This option will increase the size of the coreboot image.
1140           If unsure, say N.
1142 config X86EMU_DEBUG_PMM
1143         bool "Log PMM"
1144         default n
1145         depends on X86EMU_DEBUG
1146         help
1147           Print messages related to POST Memory Manager (PMM).
1149           Note: This option will increase the size of the coreboot image.
1151           If unsure, say N.
1154 config X86EMU_DEBUG_VBE
1155         bool "Debug VESA BIOS Extensions"
1156         default n
1157         depends on X86EMU_DEBUG
1158         help
1159           Print messages related to VESA BIOS Extension (VBE) functions.
1161           Note: This option will increase the size of the coreboot image.
1163           If unsure, say N.
1165 config X86EMU_DEBUG_INT10
1166         bool "Redirect INT10 output to console"
1167         default n
1168         depends on X86EMU_DEBUG
1169         help
1170           Let INT10 (i.e. character output) calls print messages to debug output.
1172           Note: This option will increase the size of the coreboot image.
1174           If unsure, say N.
1176 config X86EMU_DEBUG_INTERRUPTS
1177         bool "Log intXX calls"
1178         default n
1179         depends on X86EMU_DEBUG
1180         help
1181           Print messages related to interrupt handling.
1183           Note: This option will increase the size of the coreboot image.
1185           If unsure, say N.
1187 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1188         bool "Log special memory accesses"
1189         default n
1190         depends on X86EMU_DEBUG
1191         help
1192           Print messages related to accesses to certain areas of the virtual
1193           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1195           Note: This option will increase the size of the coreboot image.
1197           If unsure, say N.
1199 config X86EMU_DEBUG_MEM
1200         bool "Log all memory accesses"
1201         default n
1202         depends on X86EMU_DEBUG
1203         help
1204           Print memory accesses made by option ROM.
1205           Note: This also includes accesses to fetch instructions.
1207           Note: This option will increase the size of the coreboot image.
1209           If unsure, say N.
1211 config X86EMU_DEBUG_IO
1212         bool "Log IO accesses"
1213         default n
1214         depends on X86EMU_DEBUG
1215         help
1216           Print I/O accesses made by option ROM.
1218           Note: This option will increase the size of the coreboot image.
1220           If unsure, say N.
1222 config X86EMU_DEBUG_TIMINGS
1223         bool "Output timing information"
1224         default n
1225         depends on X86EMU_DEBUG && HAVE_MONOTONIC_TIMER
1226         help
1227           Print timing information needed by i915tool.
1229           If unsure, say N.
1231 config DEBUG_SPI_FLASH
1232         bool "Output verbose SPI flash debug messages"
1233         default n
1234         depends on SPI_FLASH
1235         help
1236           This option enables additional SPI flash related debug messages.
1238 config DEBUG_IPMI
1239         bool "Output verbose IPMI debug messages"
1240         default n
1241         depends on IPMI_KCS
1242         help
1243           This option enables additional IPMI related debug messages.
1245 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1246 # Only visible with the right southbridge and loglevel.
1247 config DEBUG_INTEL_ME
1248         bool "Verbose logging for Intel Management Engine"
1249         default n
1250         help
1251           Enable verbose logging for Intel Management Engine driver that
1252           is present on Intel 6-series chipsets.
1253 endif
1255 config DEBUG_FUNC
1256         bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1257         default n
1258         help
1259           This option enables additional function entry and exit debug messages
1260           for select functions.
1261           Note: This option will increase the size of the coreboot image.
1262           If unsure, say N.
1264 config DEBUG_COVERAGE
1265         bool "Debug code coverage"
1266         default n
1267         depends on COVERAGE
1268         help
1269           If enabled, the code coverage hooks in coreboot will output some
1270           information about the coverage data that is dumped.
1272 config DEBUG_BOOT_STATE
1273         bool "Debug boot state machine"
1274         default n
1275         help
1276           Control debugging of the boot state machine.  When selected displays
1277           the state boundaries in ramstage.
1279 config DEBUG_ADA_CODE
1280         bool "Compile debug code in Ada sources"
1281         default n
1282         help
1283           Add the compiler switch `-gnata` to compile code guarded by
1284           `pragma Debug`.
1286 config HAVE_EM100_SUPPORT
1287         bool
1288         help
1289           This is enabled by platforms which can support using the EM100.
1291 config EM100
1292         bool "Configure image for EM100 usage"
1293         depends on HAVE_EM100_SUPPORT
1294         help
1295           The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1296           over USB. However it only supports a maximum SPI clock of 20MHz and
1297           single data output. Enable this option to use a 20MHz SPI clock and
1298           disable "Dual Output Fast Read" Support.
1300           On AMD platforms this changes the SPI speed at run-time if the
1301           mainboard code supports this. On supported Intel platforms this works
1302           by changing the settings in the descriptor.bin file.
1304 endmenu
1306 ###############################################################################
1307 # Set variables with no prompt - these can be set anywhere, and putting at
1308 # the end of this file gives the most flexibility.
1310 source "src/lib/Kconfig"
1312 config WARNINGS_ARE_ERRORS
1313         bool
1314         default y
1316 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1317 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1318 # mutually exclusive. One of these options must be selected in the
1319 # mainboard Kconfig if the chipset supports enabling and disabling of
1320 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1321 # in mainboard/Kconfig to know if the button should be enabled or not.
1323 config POWER_BUTTON_DEFAULT_ENABLE
1324         def_bool n
1325         help
1326           Select when the board has a power button which can optionally be
1327           disabled by the user.
1329 config POWER_BUTTON_DEFAULT_DISABLE
1330         def_bool n
1331         help
1332           Select when the board has a power button which can optionally be
1333           enabled by the user, e.g. when the board ships with a jumper over
1334           the power switch contacts.
1336 config POWER_BUTTON_FORCE_ENABLE
1337         def_bool n
1338         help
1339           Select when the board requires that the power button is always
1340           enabled.
1342 config POWER_BUTTON_FORCE_DISABLE
1343         def_bool n
1344         help
1345           Select when the board requires that the power button is always
1346           disabled, e.g. when it has been hardwired to ground.
1348 config POWER_BUTTON_IS_OPTIONAL
1349         bool
1350         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1351         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1352         help
1353           Internal option that controls ENABLE_POWER_BUTTON visibility.
1355 config REG_SCRIPT
1356         bool
1357         default n
1358         help
1359           Internal option that controls whether we compile in register scripts.
1361 config MAX_REBOOT_CNT
1362         int
1363         default 3
1364         help
1365           Internal option that sets the maximum number of bootblock executions allowed
1366           with the normal image enabled before assuming the normal image is defective
1367           and switching to the fallback image.
1369 config UNCOMPRESSED_RAMSTAGE
1370         bool
1372 config NO_XIP_EARLY_STAGES
1373         bool
1374         default n if ARCH_X86
1375         default y
1376         help
1377           Identify if early stages are eXecute-In-Place(XIP).
1379 config EARLY_CBMEM_LIST
1380         bool
1381         default n
1382         help
1383           Enable display of CBMEM during romstage and postcar.
1385 config RELOCATABLE_MODULES
1386         bool
1387         help
1388           If RELOCATABLE_MODULES is selected then support is enabled for
1389           building relocatable modules in the RAM stage. Those modules can be
1390           loaded anywhere and all the relocations are handled automatically.
1392 config GENERIC_GPIO_LIB
1393         bool
1394         help
1395           If enabled, compile the generic GPIO library. A "generic" GPIO
1396           implies configurability usually found on SoCs, particularly the
1397           ability to control internal pull resistors.
1399 config BOOTBLOCK_CUSTOM
1400         # To be selected by arch, SoC or mainboard if it does not want use the normal
1401         # src/lib/bootblock.c#main() C entry point.
1402         bool
1404 config BOOTBLOCK_IN_CBFS
1405         bool
1406         default y if ARCH_X86
1407         help
1408           Select this on platforms that have a top aligned bootblock inside cbfs.
1410 config MEMLAYOUT_LD_FILE
1411         string
1412         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1413         help
1414           This variable allows SoC/mainboard to supply in a custom linker file
1415           if required. This determines the linker file used for all the stages
1416           (bootblock, romstage, verstage, ramstage, postcar) in
1417           src/arch/${ARCH}/Makefile.inc.
1419 ###############################################################################
1420 # Set default values for symbols created before mainboards.  This allows the
1421 # option to be displayed in the general menu, but the default to be loaded in
1422 # the mainboard if desired.
1423 config COMPRESS_PRERAM_STAGES
1424         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1425         default y
1427 config INCLUDE_CONFIG_FILE
1428         default y
1430 config BOOTSPLASH_FILE
1431         depends on BOOTSPLASH_IMAGE
1432         default "bootsplash.jpg"
1434 config CBFS_SIZE
1435         default ROM_SIZE
1437 config HAVE_BOOTBLOCK
1438         bool
1439         default y
1441 config HAVE_VERSTAGE
1442         bool
1443         depends on VBOOT_SEPARATE_VERSTAGE
1444         default y
1446 config HAVE_ROMSTAGE
1447         bool
1448         default y
1450 config HAVE_RAMSTAGE
1451         bool
1452         default n if RAMPAYLOAD
1453         default y