util/sconfig: Remove unused ioapic and irq keywords
[coreboot.git] / src / Kconfig
blobe35df43c9e337d0f4e537090786c900de6a9a21b
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 HAVE_ACPI_RESUME
715         bool
716         default n
718 config DISABLE_ACPI_HIBERNATE
719         bool
720         default n
721         help
722           Removes S4 from the available sleepstates
724 config RESUME_PATH_SAME_AS_BOOT
725         bool
726         default y if ARCH_X86
727         depends on HAVE_ACPI_RESUME
728         help
729           This option indicates that when a system resumes it takes the
730           same path as a regular boot. e.g. an x86 system runs from the
731           reset vector at 0xfffffff0 on both resume and warm/cold boot.
733 config NO_MONOTONIC_TIMER
734         def_bool n
736 config HAVE_MONOTONIC_TIMER
737         bool
738         depends on !NO_MONOTONIC_TIMER
739         default y
740         help
741          The board/chipset provides a monotonic timer.
743 config GENERIC_UDELAY
744         bool
745         depends on HAVE_MONOTONIC_TIMER
746         default y if !ARCH_X86
747         help
748          The board/chipset uses a generic udelay function utilizing the
749          monotonic timer.
751 config TIMER_QUEUE
752         def_bool n
753         depends on HAVE_MONOTONIC_TIMER
754         help
755           Provide a timer queue for performing time-based callbacks.
757 config COOP_MULTITASKING
758         def_bool n
759         select TIMER_QUEUE
760         depends on ARCH_X86
761         help
762           Cooperative multitasking allows callbacks to be multiplexed on the
763           main thread. With this enabled it allows for multiple execution paths
764           to take place when they have udelay() calls within their code.
766 config NUM_THREADS
767         int
768         default 4
769         depends on COOP_MULTITASKING
770         help
771           How many execution threads to cooperatively multitask with.
773 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
774         bool
775         help
776           Selected by mainboards which implement a mainboard-specific mechanism
777           to access the values for runtime-configurable options. For example, a
778           custom BMC interface or an EEPROM with an externally-imposed layout.
780 config HAVE_OPTION_TABLE
781         bool
782         default n
783         help
784           This variable specifies whether a given board has a cmos.layout
785           file containing NVRAM/CMOS bit definitions.
786           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
788 config CMOS_LAYOUT_FILE
789         string
790         default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
791         depends on HAVE_OPTION_TABLE
793 config PCI_IO_CFG_EXT
794         bool
795         default n
797 config IOAPIC
798         bool
799         default y if SMP
800         default n
802 config USE_WATCHDOG_ON_BOOT
803         bool
804         default n
806 config GFXUMA
807         bool
808         default n
809         help
810           Enable Unified Memory Architecture for graphics.
812 config HAVE_MP_TABLE
813         bool
814         help
815           This variable specifies whether a given board has MP table support.
816           It is usually set in mainboard/*/Kconfig.
817           Whether or not the MP table is actually generated by coreboot
818           is configurable by the user via GENERATE_MP_TABLE.
820 config HAVE_PIRQ_TABLE
821         bool
822         help
823           This variable specifies whether a given board has PIRQ table support.
824           It is usually set in mainboard/*/Kconfig.
825           Whether or not the PIRQ table is actually generated by coreboot
826           is configurable by the user via GENERATE_PIRQ_TABLE.
828 config ACPI_NHLT
829         bool
830         default n
831         help
832           Build support for NHLT (non HD Audio) ACPI table generation.
834 #These Options are here to avoid "undefined" warnings.
835 #The actual selection and help texts are in the following menu.
837 menu "System tables"
839 config GENERATE_MP_TABLE
840         prompt "Generate an MP table" if HAVE_MP_TABLE
841         bool
842         default HAVE_MP_TABLE
843         help
844           Generate an MP table (conforming to the Intel MultiProcessor
845           specification 1.4) for this board.
847           If unsure, say Y.
849 config GENERATE_PIRQ_TABLE
850         prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
851         bool
852         default HAVE_PIRQ_TABLE
853         help
854           Generate a PIRQ table for this board.
856           If unsure, say Y.
858 config GENERATE_SMBIOS_TABLES
859         depends on ARCH_X86
860         bool "Generate SMBIOS tables"
861         default y
862         help
863           Generate SMBIOS tables for this board.
865           If unsure, say Y.
867 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
868         bool
869         depends on ARCH_X86
870         help
871           If enabled, only generate SMBIOS Type 41 entries for PCI devices in
872           the devicetree for which Type 41 information is provided, e.g. with
873           the `smbios_dev_info` devicetree syntax. This is useful to manually
874           assign specific instance IDs to onboard devices irrespective of the
875           device traversal order. It is assumed that instance IDs for devices
876           of the same class are unique.
877           When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
878           appropriate PCI devices in the devicetree. Instance IDs are assigned
879           successive numbers from a monotonically increasing counter, with one
880           counter for each device class.
882 config SMBIOS_PROVIDED_BY_MOBO
883         bool
884         default n
886 config MAINBOARD_SERIAL_NUMBER
887         prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
888         string
889         depends on GENERATE_SMBIOS_TABLES
890         default "123456789"
891         help
892           The Serial Number to store in SMBIOS structures.
894 config MAINBOARD_VERSION
895         prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
896         string
897         depends on GENERATE_SMBIOS_TABLES
898         default "1.0"
899         help
900           The Version Number to store in SMBIOS structures.
902 config MAINBOARD_SMBIOS_MANUFACTURER
903         prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
904         string
905         depends on GENERATE_SMBIOS_TABLES
906         default MAINBOARD_VENDOR
907         help
908           Override the default Manufacturer stored in SMBIOS structures.
910 config MAINBOARD_SMBIOS_PRODUCT_NAME
911         prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
912         string
913         depends on GENERATE_SMBIOS_TABLES
914         default MAINBOARD_PART_NUMBER
915         help
916           Override the default Product name stored in SMBIOS structures.
918 config VPD_SMBIOS_VERSION
919         bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
920         default n
921         depends on VPD && GENERATE_SMBIOS_TABLES
922         help
923           Selecting this option will read firmware_version from
924           VPD_RO and override SMBIOS type 0 version. One special
925           scenario of using this feature is to assign a BIOS version
926           to a coreboot image without the need to rebuild from source.
928 endmenu
930 source "payloads/Kconfig"
932 menu "Debugging"
934 comment "CPU Debug Settings"
935 source "src/cpu/*/Kconfig.debug_cpu"
937 comment "BLOB Debug Settings"
938 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
940 comment "General Debug Settings"
942 # TODO: Better help text and detailed instructions.
943 config GDB_STUB
944         bool "GDB debugging support"
945         default n
946         depends on DRIVERS_UART
947         help
948           If enabled, you will be able to set breakpoints for gdb debugging.
949           See src/arch/x86/c_start.S for details.
951 config GDB_WAIT
952         bool "Wait for a GDB connection in the ramstage"
953         default n
954         depends on GDB_STUB
955         help
956           If enabled, coreboot will wait for a GDB connection in the ramstage.
959 config FATAL_ASSERTS
960         bool "Halt when hitting a BUG() or assertion error"
961         default n
962         help
963           If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
965 config HAVE_DEBUG_GPIO
966         bool
968 config DEBUG_GPIO
969         bool "Output verbose GPIO debug messages"
970         depends on HAVE_DEBUG_GPIO
972 config DEBUG_CBFS
973         bool "Output verbose CBFS debug messages"
974         default n
975         help
976           This option enables additional CBFS related debug messages.
978 config HAVE_DEBUG_RAM_SETUP
979         def_bool n
981 config DEBUG_RAM_SETUP
982         bool "Output verbose RAM init debug messages"
983         default n
984         depends on HAVE_DEBUG_RAM_SETUP
985         help
986           This option enables additional RAM init related debug messages.
987           It is recommended to enable this when debugging issues on your
988           board which might be RAM init related.
990           Note: This option will increase the size of the coreboot image.
992           If unsure, say N.
994 config DEBUG_PIRQ
995         bool "Check PIRQ table consistency"
996         default n
997         depends on GENERATE_PIRQ_TABLE
998         help
999           If unsure, say N.
1001 config HAVE_DEBUG_SMBUS
1002         def_bool n
1004 config DEBUG_SMBUS
1005         bool "Output verbose SMBus debug messages"
1006         default n
1007         depends on HAVE_DEBUG_SMBUS
1008         help
1009           This option enables additional SMBus (and SPD) debug messages.
1011           Note: This option will increase the size of the coreboot image.
1013           If unsure, say N.
1015 config DEBUG_SMI
1016         bool "Output verbose SMI debug messages"
1017         default n
1018         depends on HAVE_SMI_HANDLER
1019         select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
1020         help
1021           This option enables additional SMI related debug messages.
1023           Note: This option will increase the size of the coreboot image.
1025           If unsure, say N.
1027 config DEBUG_PERIODIC_SMI
1028         bool "Trigger SMI periodically"
1029         depends on DEBUG_SMI
1031 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1032 # printk(BIOS_DEBUG, ...) calls.
1033 config DEBUG_MALLOC
1034         prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1035         bool
1036         default n
1037         help
1038           This option enables additional malloc related debug messages.
1040           Note: This option will increase the size of the coreboot image.
1042           If unsure, say N.
1044 # Only visible if DEBUG_SPEW (8) is set.
1045 config DEBUG_RESOURCES
1046         bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1047         default n
1048         help
1049           This option enables additional PCI memory and IO debug messages.
1050           Note: This option will increase the size of the coreboot image.
1051           If unsure, say N.
1053 config DEBUG_CONSOLE_INIT
1054         bool "Debug console initialisation code"
1055         default n
1056         help
1057           With this option printk()'s are attempted before console hardware
1058           initialisation has been completed. Your mileage may vary.
1060           Typically you will need to modify source in console_hw_init() such
1061           that a working console appears before the one you want to debug.
1063           If unsure, say N.
1065 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1066 # printk(BIOS_DEBUG, ...) calls.
1067 config REALMODE_DEBUG
1068         prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1069         bool
1070         default n
1071         depends on PCI_OPTION_ROM_RUN_REALMODE
1072         help
1073           This option enables additional x86emu related debug messages.
1075           Note: This option will increase the time to emulate a ROM.
1077           If unsure, say N.
1079 config X86EMU_DEBUG
1080         bool "Output verbose x86emu debug messages"
1081         default n
1082         depends on PCI_OPTION_ROM_RUN_YABEL
1083         help
1084           This option enables additional x86emu related debug messages.
1086           Note: This option will increase the size of the coreboot image.
1088           If unsure, say N.
1090 config X86EMU_DEBUG_JMP
1091         bool "Trace JMP/RETF"
1092         default n
1093         depends on X86EMU_DEBUG
1094         help
1095           Print information about JMP and RETF opcodes from x86emu.
1097           Note: This option will increase the size of the coreboot image.
1099           If unsure, say N.
1101 config X86EMU_DEBUG_TRACE
1102         bool "Trace all opcodes"
1103         default n
1104         depends on X86EMU_DEBUG
1105         help
1106           Print _all_ opcodes that are executed by x86emu.
1108           WARNING: This will produce a LOT of output and take a long time.
1110           Note: This option will increase the size of the coreboot image.
1112           If unsure, say N.
1114 config X86EMU_DEBUG_PNP
1115         bool "Log Plug&Play accesses"
1116         default n
1117         depends on X86EMU_DEBUG
1118         help
1119           Print Plug And Play accesses made by option ROMs.
1121           Note: This option will increase the size of the coreboot image.
1123           If unsure, say N.
1125 config X86EMU_DEBUG_DISK
1126         bool "Log Disk I/O"
1127         default n
1128         depends on X86EMU_DEBUG
1129         help
1130           Print Disk I/O related messages.
1132           Note: This option will increase the size of the coreboot image.
1134           If unsure, say N.
1136 config X86EMU_DEBUG_PMM
1137         bool "Log PMM"
1138         default n
1139         depends on X86EMU_DEBUG
1140         help
1141           Print messages related to POST Memory Manager (PMM).
1143           Note: This option will increase the size of the coreboot image.
1145           If unsure, say N.
1148 config X86EMU_DEBUG_VBE
1149         bool "Debug VESA BIOS Extensions"
1150         default n
1151         depends on X86EMU_DEBUG
1152         help
1153           Print messages related to VESA BIOS Extension (VBE) functions.
1155           Note: This option will increase the size of the coreboot image.
1157           If unsure, say N.
1159 config X86EMU_DEBUG_INT10
1160         bool "Redirect INT10 output to console"
1161         default n
1162         depends on X86EMU_DEBUG
1163         help
1164           Let INT10 (i.e. character output) calls print messages to debug output.
1166           Note: This option will increase the size of the coreboot image.
1168           If unsure, say N.
1170 config X86EMU_DEBUG_INTERRUPTS
1171         bool "Log intXX calls"
1172         default n
1173         depends on X86EMU_DEBUG
1174         help
1175           Print messages related to interrupt handling.
1177           Note: This option will increase the size of the coreboot image.
1179           If unsure, say N.
1181 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1182         bool "Log special memory accesses"
1183         default n
1184         depends on X86EMU_DEBUG
1185         help
1186           Print messages related to accesses to certain areas of the virtual
1187           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1189           Note: This option will increase the size of the coreboot image.
1191           If unsure, say N.
1193 config X86EMU_DEBUG_MEM
1194         bool "Log all memory accesses"
1195         default n
1196         depends on X86EMU_DEBUG
1197         help
1198           Print memory accesses made by option ROM.
1199           Note: This also includes accesses to fetch instructions.
1201           Note: This option will increase the size of the coreboot image.
1203           If unsure, say N.
1205 config X86EMU_DEBUG_IO
1206         bool "Log IO accesses"
1207         default n
1208         depends on X86EMU_DEBUG
1209         help
1210           Print I/O accesses made by option ROM.
1212           Note: This option will increase the size of the coreboot image.
1214           If unsure, say N.
1216 config X86EMU_DEBUG_TIMINGS
1217         bool "Output timing information"
1218         default n
1219         depends on X86EMU_DEBUG && HAVE_MONOTONIC_TIMER
1220         help
1221           Print timing information needed by i915tool.
1223           If unsure, say N.
1225 config DEBUG_SPI_FLASH
1226         bool "Output verbose SPI flash debug messages"
1227         default n
1228         depends on SPI_FLASH
1229         help
1230           This option enables additional SPI flash related debug messages.
1232 config DEBUG_IPMI
1233         bool "Output verbose IPMI debug messages"
1234         default n
1235         depends on IPMI_KCS
1236         help
1237           This option enables additional IPMI related debug messages.
1239 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1240 # Only visible with the right southbridge and loglevel.
1241 config DEBUG_INTEL_ME
1242         bool "Verbose logging for Intel Management Engine"
1243         default n
1244         help
1245           Enable verbose logging for Intel Management Engine driver that
1246           is present on Intel 6-series chipsets.
1247 endif
1249 config DEBUG_FUNC
1250         bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1251         default n
1252         help
1253           This option enables additional function entry and exit debug messages
1254           for select functions.
1255           Note: This option will increase the size of the coreboot image.
1256           If unsure, say N.
1258 config DEBUG_COVERAGE
1259         bool "Debug code coverage"
1260         default n
1261         depends on COVERAGE
1262         help
1263           If enabled, the code coverage hooks in coreboot will output some
1264           information about the coverage data that is dumped.
1266 config DEBUG_BOOT_STATE
1267         bool "Debug boot state machine"
1268         default n
1269         help
1270           Control debugging of the boot state machine.  When selected displays
1271           the state boundaries in ramstage.
1273 config DEBUG_ADA_CODE
1274         bool "Compile debug code in Ada sources"
1275         default n
1276         help
1277           Add the compiler switch `-gnata` to compile code guarded by
1278           `pragma Debug`.
1280 config HAVE_EM100_SUPPORT
1281         bool
1282         help
1283           This is enabled by platforms which can support using the EM100.
1285 config EM100
1286         bool "Configure image for EM100 usage"
1287         depends on HAVE_EM100_SUPPORT
1288         help
1289           The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1290           over USB. However it only supports a maximum SPI clock of 20MHz and
1291           single data output. Enable this option to use a 20MHz SPI clock and
1292           disable "Dual Output Fast Read" Support.
1294           On AMD platforms this changes the SPI speed at run-time if the
1295           mainboard code supports this. On supported Intel platforms this works
1296           by changing the settings in the descriptor.bin file.
1298 endmenu
1300 ###############################################################################
1301 # Set variables with no prompt - these can be set anywhere, and putting at
1302 # the end of this file gives the most flexibility.
1304 source "src/lib/Kconfig"
1306 config WARNINGS_ARE_ERRORS
1307         bool
1308         default y
1310 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1311 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1312 # mutually exclusive. One of these options must be selected in the
1313 # mainboard Kconfig if the chipset supports enabling and disabling of
1314 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1315 # in mainboard/Kconfig to know if the button should be enabled or not.
1317 config POWER_BUTTON_DEFAULT_ENABLE
1318         def_bool n
1319         help
1320           Select when the board has a power button which can optionally be
1321           disabled by the user.
1323 config POWER_BUTTON_DEFAULT_DISABLE
1324         def_bool n
1325         help
1326           Select when the board has a power button which can optionally be
1327           enabled by the user, e.g. when the board ships with a jumper over
1328           the power switch contacts.
1330 config POWER_BUTTON_FORCE_ENABLE
1331         def_bool n
1332         help
1333           Select when the board requires that the power button is always
1334           enabled.
1336 config POWER_BUTTON_FORCE_DISABLE
1337         def_bool n
1338         help
1339           Select when the board requires that the power button is always
1340           disabled, e.g. when it has been hardwired to ground.
1342 config POWER_BUTTON_IS_OPTIONAL
1343         bool
1344         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1345         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1346         help
1347           Internal option that controls ENABLE_POWER_BUTTON visibility.
1349 config REG_SCRIPT
1350         bool
1351         default n
1352         help
1353           Internal option that controls whether we compile in register scripts.
1355 config MAX_REBOOT_CNT
1356         int
1357         default 3
1358         help
1359           Internal option that sets the maximum number of bootblock executions allowed
1360           with the normal image enabled before assuming the normal image is defective
1361           and switching to the fallback image.
1363 config UNCOMPRESSED_RAMSTAGE
1364         bool
1366 config NO_XIP_EARLY_STAGES
1367         bool
1368         default n if ARCH_X86
1369         default y
1370         help
1371           Identify if early stages are eXecute-In-Place(XIP).
1373 config EARLY_CBMEM_LIST
1374         bool
1375         default n
1376         help
1377           Enable display of CBMEM during romstage and postcar.
1379 config RELOCATABLE_MODULES
1380         bool
1381         help
1382           If RELOCATABLE_MODULES is selected then support is enabled for
1383           building relocatable modules in the RAM stage. Those modules can be
1384           loaded anywhere and all the relocations are handled automatically.
1386 config GENERIC_GPIO_LIB
1387         bool
1388         help
1389           If enabled, compile the generic GPIO library. A "generic" GPIO
1390           implies configurability usually found on SoCs, particularly the
1391           ability to control internal pull resistors.
1393 config BOOTBLOCK_CUSTOM
1394         # To be selected by arch, SoC or mainboard if it does not want use the normal
1395         # src/lib/bootblock.c#main() C entry point.
1396         bool
1398 config BOOTBLOCK_IN_CBFS
1399         bool
1400         default y if ARCH_X86
1401         help
1402           Select this on platforms that have a top aligned bootblock inside cbfs.
1404 config MEMLAYOUT_LD_FILE
1405         string
1406         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1407         help
1408           This variable allows SoC/mainboard to supply in a custom linker file
1409           if required. This determines the linker file used for all the stages
1410           (bootblock, romstage, verstage, ramstage, postcar) in
1411           src/arch/${ARCH}/Makefile.inc.
1413 ###############################################################################
1414 # Set default values for symbols created before mainboards.  This allows the
1415 # option to be displayed in the general menu, but the default to be loaded in
1416 # the mainboard if desired.
1417 config COMPRESS_PRERAM_STAGES
1418         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1419         default y
1421 config INCLUDE_CONFIG_FILE
1422         default y
1424 config BOOTSPLASH_FILE
1425         depends on BOOTSPLASH_IMAGE
1426         default "bootsplash.jpg"
1428 config CBFS_SIZE
1429         default ROM_SIZE
1431 config HAVE_BOOTBLOCK
1432         bool
1433         default y
1435 config HAVE_VERSTAGE
1436         bool
1437         depends on VBOOT_SEPARATE_VERSTAGE
1438         default y
1440 config HAVE_ROMSTAGE
1441         bool
1442         default y
1444 config HAVE_RAMSTAGE
1445         bool
1446         default n if RAMPAYLOAD
1447         default y