payloads/edk2: Disable the CPU Timer Lib unless supported
[coreboot.git] / src / Kconfig
blobb33ea6253ebbb38ce13c357b64e01edab638c7cd
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
146 config OPTION_BACKEND_NONE
147         bool "None"
149 config USE_OPTION_TABLE
150         bool "Use CMOS for configuration values"
151         depends on HAVE_OPTION_TABLE
152         help
153           Enable this option if coreboot shall read options from the "CMOS"
154           NVRAM instead of using hard-coded values.
156 config USE_MAINBOARD_SPECIFIC_OPTION_BACKEND
157         bool "Use mainboard-specific option backend"
158         depends on HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
159         help
160           Use a mainboard-specific mechanism to access runtime-configurable
161           options.
163 endchoice
165 config STATIC_OPTION_TABLE
166         bool "Load default configuration values into CMOS on each boot"
167         depends on USE_OPTION_TABLE
168         help
169           Enable this option to reset "CMOS" NVRAM values to default on
170           every boot.  Use this if you want the NVRAM configuration to
171           never be modified from its default values.
173 config COMPRESS_RAMSTAGE
174         bool "Compress ramstage with LZMA"
175         depends on HAVE_RAMSTAGE
176         # Default value set at the end of the file
177         help
178           Compress ramstage to save memory in the flash image.
180 config COMPRESS_PRERAM_STAGES
181         bool "Compress romstage and verstage with LZ4"
182         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
183         # Default value set at the end of the file
184         help
185           Compress romstage and (if it exists) verstage with LZ4 to save flash
186           space and speed up boot, since the time for reading the image from SPI
187           (and in the vboot case verifying it) is usually much greater than the
188           time spent decompressing. Doesn't work for XIP stages for obvious
189           reasons.
191 config COMPRESS_BOOTBLOCK
192         bool
193         depends on HAVE_BOOTBLOCK
194         help
195           This option can be used to compress the bootblock with LZ4 and attach
196           a small self-decompression stub to its front. This can drastically
197           reduce boot time on platforms where the bootblock is loaded over a
198           very slow connection and bootblock size trumps all other factors for
199           speed. Since using this option usually requires changes to the
200           SoC memlayout and possibly extra support code, it should not be
201           user-selectable. (There's no real point in offering this to the user
202           anyway... if it works and saves boot time, you would always want it.)
204 config INCLUDE_CONFIG_FILE
205         bool "Include the coreboot .config file into the ROM image"
206         # Default value set at the end of the file
207         help
208           Include the .config file that was used to compile coreboot
209           in the (CBFS) ROM image. This is useful if you want to know which
210           options were used to build a specific coreboot.rom image.
212           Saying Y here will increase the image size by 2-3KB.
214           You can use the following command to easily list the options:
216             grep -a CONFIG_ coreboot.rom
218           Alternatively, you can also use cbfstool to print the image
219           contents (including the raw 'config' item we're looking for).
221           Example:
223             $ cbfstool coreboot.rom print
224             coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304,
225                                                        offset 0x0
226             Alignment: 64 bytes
228             Name                           Offset     Type         Size
229             cmos_layout.bin                0x0        CMOS layout  1159
230             fallback/romstage              0x4c0      stage        339756
231             fallback/ramstage              0x53440    stage        186664
232             fallback/payload               0x80dc0    payload      51526
233             config                         0x8d740    raw          3324
234             (empty)                        0x8e480    null         3610440
236 config COLLECT_TIMESTAMPS
237         bool "Create a table of timestamps collected during boot"
238         default y if ARCH_X86
239         help
240           Make coreboot create a table of timer-ID/timer-value pairs to
241           allow measuring time spent at different phases of the boot process.
243 config TIMESTAMPS_ON_CONSOLE
244         bool "Print the timestamp values on the console"
245         default n
246         depends on COLLECT_TIMESTAMPS
247         help
248           Print the timestamps to the debug console if enabled at level info.
250 config USE_BLOBS
251         bool "Allow use of binary-only repository"
252         default y
253         help
254           This draws in the blobs repository, which contains binary files that
255           might be required for some chipsets or boards.
256           This flag ensures that a "Free" option remains available for users.
258 config USE_AMD_BLOBS
259         bool "Allow AMD blobs repository (with license agreement)"
260         depends on USE_BLOBS
261         help
262           This draws in the amd_blobs repository, which contains binary files
263           distributed by AMD, including VBIOS, PSP bootloaders, SMU firmwares,
264           etc.  Selecting this item to download or clone the repo implies your
265           agreement to the AMD license agreement.  A copy of the license text
266           may be reviewed by reading Documentation/soc/amd/amdblobs_license.md,
267           and your copy of the license is present in the repo once downloaded.
269           Note that for some products, omitting PSP, SMU images, or other items
270           may result in a nonbooting coreboot.rom.
272 config USE_QC_BLOBS
273         bool "Allow QC blobs repository (selecting this agrees to the license!)"
274         depends on USE_BLOBS
275         help
276           This draws in the qc_blobs repository, which contains binary files
277           distributed by Qualcomm that are required to build firmware for
278           certain Qualcomm SoCs (including QcLib, QC-SEC, qtiseclib and QUP
279           firmware). If you say Y here you are implicitly agreeing to the
280           Qualcomm license agreement which can be found at:
281           https://review.coreboot.org/cgit/qc_blobs.git/tree/LICENSE
283           *****************************************************
284           PLEASE MAKE SURE YOU READ AND AGREE TO ALL TERMS IN
285           ABOVE LICENSE AGREEMENT BEFORE SELECTING THIS OPTION!
286           *****************************************************
288           Not selecting this option means certain Qualcomm SoCs and related
289           mainboards cannot be built and will be hidden from the "Mainboards"
290           section.
292 config COVERAGE
293         bool "Code coverage support"
294         depends on COMPILER_GCC
295         help
296           Add code coverage support for coreboot. This will store code
297           coverage information in CBMEM for extraction from user space.
298           If unsure, say N.
300 config UBSAN
301         bool "Undefined behavior sanitizer support"
302         default n
303         help
304           Instrument the code with checks for undefined behavior. If unsure,
305           say N because it adds a small performance penalty and may abort
306           on code that happens to work in spite of the UB.
308 config HAVE_ASAN_IN_ROMSTAGE
309         bool
310         default n
312 config ASAN_IN_ROMSTAGE
313         bool
314         default n
315         help
316           Enable address sanitizer in romstage for platform.
318 config HAVE_ASAN_IN_RAMSTAGE
319         bool
320         default n
322 config ASAN_IN_RAMSTAGE
323         bool
324         default n
325         help
326           Enable address sanitizer in ramstage for platform.
328 config ASAN
329         bool "Address sanitizer support"
330         default n
331         select ASAN_IN_ROMSTAGE if HAVE_ASAN_IN_ROMSTAGE
332         select ASAN_IN_RAMSTAGE if HAVE_ASAN_IN_RAMSTAGE
333         depends on COMPILER_GCC
334         help
335           Enable address sanitizer - runtime memory debugger,
336           designed to find out-of-bounds accesses and use-after-scope bugs.
338           This feature consumes up to 1/8 of available memory and brings about
339           ~1.5x performance slowdown.
341           If unsure, say N.
343 if ASAN
344         comment "Before using this feature, make sure that           "
345         comment "asan_shadow_offset_callback patch is applied to GCC."
346 endif
348 choice
349         prompt "Stage Cache for ACPI S3 resume"
350         default NO_STAGE_CACHE if !HAVE_ACPI_RESUME
351         default TSEG_STAGE_CACHE if SMM_TSEG
353 config NO_STAGE_CACHE
354         bool "Disabled"
355         help
356           Do not save any component in stage cache for resume path. On resume,
357           all components would be read back from CBFS again.
359 config TSEG_STAGE_CACHE
360         bool "TSEG"
361         depends on SMM_TSEG
362         help
363           The option enables stage cache support for platform. Platform
364           can stash copies of postcar, ramstage and raw runtime data
365           inside SMM TSEG, to be restored on S3 resume path.
367 config CBMEM_STAGE_CACHE
368         bool "CBMEM"
369         depends on !SMM_TSEG
370         help
371           The option enables stage cache support for platform. Platform
372           can stash copies of postcar, ramstage and raw runtime data
373           inside CBMEM.
375           While the approach is faster than reloading stages from boot media
376           it is also a possible attack scenario via which OS can possibly
377           circumvent SMM locks and SPI write protections.
379           If unsure, select 'N'
381 endchoice
383 config UPDATE_IMAGE
384         bool "Update existing coreboot.rom image"
385         help
386           If this option is enabled, no new coreboot.rom file
387           is created. Instead it is expected that there already
388           is a suitable file for further processing.
389           The bootblock will not be modified.
391           If unsure, select 'N'
393 config BOOTSPLASH_IMAGE
394         bool "Add a bootsplash image"
395         help
396           Select this option if you have a bootsplash image that you would
397           like to add to your ROM.
399           This will only add the image to the ROM. To actually run it check
400           options under 'Display' section.
402 config BOOTSPLASH_FILE
403         string "Bootsplash path and filename"
404         depends on BOOTSPLASH_IMAGE
405         # Default value set at the end of the file
406         help
407           The path and filename of the file to use as graphical bootsplash
408           screen. The file format has to be jpg.
410 config FW_CONFIG
411         bool "Firmware Configuration Probing"
412         default n
413         help
414           Enable support for probing devices with fw_config.  This is a simple
415           bitmask broken into fields and options for probing.
417 config FW_CONFIG_SOURCE_CHROMEEC_CBI
418         bool "Obtain Firmware Configuration value from Google Chrome EC CBI"
419         depends on FW_CONFIG && EC_GOOGLE_CHROMEEC
420         default n
421         help
422           This option tells coreboot to read the firmware configuration value
423           from the Google Chrome Embedded Controller CBI interface.  This source
424           is not tried if FW_CONFIG_SOURCE_CBFS is enabled and the value was
425           found in CBFS.
427 config FW_CONFIG_SOURCE_CBFS
428         bool "Obtain Firmware Configuration value from CBFS"
429         depends on FW_CONFIG
430         default n
431         help
432           With this option enabled coreboot will look for the 32bit firmware
433           configuration value in CBFS at the selected prefix with the file name
434           "fw_config".  This option will override other sources and allow the
435           local image to preempt the mainboard selected source and can be used as
436           FW_CONFIG_SOURCE_CHROMEEC_CBI fallback option.
438 config FW_CONFIG_SOURCE_VPD
439         bool "Obtain Firmware Configuration value from VPD"
440         depends on FW_CONFIG && VPD
441         default n
442         help
443           With this option enabled coreboot will look for the 32bit firmware
444           configuration value in VPD key name "fw_config".  This option will
445           override other sources and allow the local image to preempt the mainboard
446           selected source and can be used for other FW_CONFIG_SOURCEs fallback option.
448 config HAVE_RAMPAYLOAD
449         bool
451 config RAMPAYLOAD
452         bool "Enable coreboot flow without executing ramstage"
453         default y if ARCH_X86
454         depends on HAVE_RAMPAYLOAD
455         help
456           If this option is enabled, coreboot flow will skip ramstage
457           loading and execution of ramstage to load payload.
459           Instead it is expected to load payload from postcar stage itself.
461           In this flow coreboot will perform basic x86 initialization
462           (DRAM resource allocation), MTRR programming,
463           Skip PCI enumeration logic and only allocate BAR for fixed devices
464           (bootable devices, TPM over GSPI).
466 config HAVE_CONFIGURABLE_RAMSTAGE
467         bool
469 config CONFIGURABLE_RAMSTAGE
470         bool "Enable a configurable ramstage."
471         default y if ARCH_X86
472         depends on HAVE_CONFIGURABLE_RAMSTAGE
473         help
474           A configurable ramstage allows you to select which parts of the ramstage
475           to run. Currently, we can only select a minimal PCI scanning step.
476           The minimal PCI scanning will only check those parts that are enabled
477           in the devicetree.cb. By convention none of those devices should be bridges.
479 config MINIMAL_PCI_SCANNING
480         bool "Enable minimal PCI scanning"
481         depends on CONFIGURABLE_RAMSTAGE && PCI
482         help
483           If this option is enabled, coreboot will scan only PCI devices
484           marked as mandatory in devicetree.cb
486 menu "Software Bill Of Materials (SBOM)"
488 source "src/sbom/Kconfig"
490 endmenu
491 endmenu
493 menu "Mainboard"
495 source "src/mainboard/Kconfig"
497 config DEVICETREE
498         string
499         default "devicetree.cb"
500         help
501           This symbol allows mainboards to select a different file under their
502           mainboard directory for the devicetree.cb file.  This allows the board
503           variants that need different devicetrees to be in the same directory.
505           Examples: "devicetree.variant.cb"
506                     "variant/devicetree.cb"
508 config OVERRIDE_DEVICETREE
509         string
510         default ""
511         help
512           This symbol allows variants to provide an override devicetree file to
513           override the registers and/or add new devices on top of the ones
514           provided by baseboard devicetree using CONFIG_DEVICETREE.
516           Examples: "devicetree.variant-override.cb"
517                     "variant/devicetree-override.cb"
519 config FMDFILE
520         string "fmap description file in fmd format"
521         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
522         default ""
523         help
524           The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
525           but in some cases more complex setups are required.
526           When an fmd is specified, it overrides the default format.
528 config CBFS_SIZE
529         hex "Size of CBFS filesystem in ROM"
530         depends on FMDFILE = ""
531         # Default value set at the end of the file
532         help
533           This is the part of the ROM actually managed by CBFS, located at the
534           end of the ROM (passed through cbfstool -o) on x86 and at at the start
535           of the ROM (passed through cbfstool -s) everywhere else. It defaults
536           to span the whole ROM on all but Intel systems that use an Intel Firmware
537           Descriptor.  It can be overridden to make coreboot live alongside other
538           components like ChromeOS's vboot/FMAP or Intel's IFD / ME / TXE
539           binaries. This symbol should only be used to generate a default FMAP and
540           is unused when a non-default fmd file is provided via CONFIG_FMDFILE.
542 endmenu
544 # load site-local kconfig to allow user specific defaults and overrides
545 source "site-local/Kconfig"
547 config SYSTEM_TYPE_LAPTOP
548         default n
549         bool
551 config SYSTEM_TYPE_TABLET
552         default n
553         bool
555 config SYSTEM_TYPE_DETACHABLE
556         default n
557         bool
559 config SYSTEM_TYPE_CONVERTIBLE
560         default n
561         bool
563 config CBFS_AUTOGEN_ATTRIBUTES
564         default n
565         bool
566         help
567           If this option is selected, every file in cbfs which has a constraint
568           regarding position or alignment will get an additional file attribute
569           which describes this constraint.
571 menu "Chipset"
573 comment "SoC"
574 source "src/soc/*/*/Kconfig"
575 source "src/soc/*/*/Kconfig.common"
576 comment "CPU"
577 source "src/cpu/Kconfig"
578 comment "Northbridge"
579 source "src/northbridge/*/*/Kconfig"
580 source "src/northbridge/*/*/Kconfig.common"
581 comment "Southbridge"
582 source "src/southbridge/*/*/Kconfig"
583 source "src/southbridge/*/*/Kconfig.common"
584 comment "Super I/O"
585 source "src/superio/*/*/Kconfig"
586 comment "Embedded Controllers"
587 source "src/ec/acpi/Kconfig"
588 source "src/ec/*/*/Kconfig"
590 source "src/southbridge/intel/common/firmware/Kconfig"
591 source "src/vendorcode/*/Kconfig"
593 source "src/arch/*/Kconfig"
595 config CHIPSET_DEVICETREE
596         string
597         default ""
598         help
599           This symbol allows a chipset to provide a set of default settings in
600           a devicetree which are common to all mainboards. This may include
601           devices (including alias names), chip drivers, register settings,
602           and others. This path is relative to the src/ directory.
604           Example: "chipset.cb"
606 endmenu
608 source "src/device/Kconfig"
610 menu "Generic Drivers"
611 source "src/drivers/*/Kconfig"
612 source "src/drivers/*/*/Kconfig"
613 source "src/drivers/*/*/*/Kconfig"
614 source "src/commonlib/storage/Kconfig"
615 endmenu
617 menu "Security"
619 source "src/security/Kconfig"
620 source "src/vendorcode/eltan/security/Kconfig"
622 endmenu
624 source "src/acpi/Kconfig"
626 # This option is for the current boards/chipsets where SPI flash
627 # is not the boot device. Currently nearly all boards/chipsets assume
628 # SPI flash is the boot device.
629 config BOOT_DEVICE_NOT_SPI_FLASH
630         bool
631         default n
633 config BOOT_DEVICE_SPI_FLASH
634         bool
635         default y if !BOOT_DEVICE_NOT_SPI_FLASH
636         default n
638 config BOOT_DEVICE_MEMORY_MAPPED
639         bool
640         default y if ARCH_X86 && BOOT_DEVICE_SPI_FLASH
641         default n
642         help
643           Inform system if SPI is memory-mapped or not.
645 config BOOT_DEVICE_SUPPORTS_WRITES
646         bool
647         default n
648         help
649           Indicate that the platform has writable boot device
650           support.
652 config RTC
653         bool
654         default n
656 config HEAP_SIZE
657         hex
658         default 0x100000 if FLATTENED_DEVICE_TREE
659         default 0x4000
661 config STACK_SIZE
662         hex
663         default 0x2000 if ARCH_X86
664         default 0x0
666 config MAX_CPUS
667         int
668         default 1
670 source "src/console/Kconfig"
672 config HAVE_ACPI_RESUME
673         bool
674         default n
676 config DISABLE_ACPI_HIBERNATE
677         bool
678         default n
679         help
680           Removes S4 from the available sleepstates
682 config RESUME_PATH_SAME_AS_BOOT
683         bool
684         default y if ARCH_X86
685         depends on HAVE_ACPI_RESUME
686         help
687           This option indicates that when a system resumes it takes the
688           same path as a regular boot. e.g. an x86 system runs from the
689           reset vector at 0xfffffff0 on both resume and warm/cold boot.
691 config NO_MONOTONIC_TIMER
692         def_bool n
694 config HAVE_MONOTONIC_TIMER
695         bool
696         depends on !NO_MONOTONIC_TIMER
697         default y
698         help
699          The board/chipset provides a monotonic timer.
701 config GENERIC_UDELAY
702         bool
703         depends on HAVE_MONOTONIC_TIMER
704         default y if !ARCH_X86
705         help
706          The board/chipset uses a generic udelay function utilizing the
707          monotonic timer.
709 config TIMER_QUEUE
710         def_bool n
711         depends on HAVE_MONOTONIC_TIMER
712         help
713           Provide a timer queue for performing time-based callbacks.
715 config COOP_MULTITASKING
716         def_bool n
717         select TIMER_QUEUE
718         depends on ARCH_X86 && CPU_INFO_V2
719         help
720           Cooperative multitasking allows callbacks to be multiplexed on the
721           main thread. With this enabled it allows for multiple execution paths
722           to take place when they have udelay() calls within their code.
724 config NUM_THREADS
725         int
726         default 4
727         depends on COOP_MULTITASKING
728         help
729           How many execution threads to cooperatively multitask with.
731 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
732         bool
733         help
734           Selected by mainboards which implement a mainboard-specific mechanism
735           to access the values for runtime-configurable options. For example, a
736           custom BMC interface or an EEPROM with an externally-imposed layout.
738 config HAVE_OPTION_TABLE
739         bool
740         default n
741         help
742           This variable specifies whether a given board has a cmos.layout
743           file containing NVRAM/CMOS bit definitions.
744           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
746 config CMOS_LAYOUT_FILE
747         string
748         default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
749         depends on HAVE_OPTION_TABLE
751 config PCI_IO_CFG_EXT
752         bool
753         default n
755 config IOAPIC
756         bool
757         default y if SMP
758         default n
760 config USE_WATCHDOG_ON_BOOT
761         bool
762         default n
764 config GFXUMA
765         bool
766         default n
767         help
768           Enable Unified Memory Architecture for graphics.
770 config HAVE_MP_TABLE
771         bool
772         help
773           This variable specifies whether a given board has MP table support.
774           It is usually set in mainboard/*/Kconfig.
775           Whether or not the MP table is actually generated by coreboot
776           is configurable by the user via GENERATE_MP_TABLE.
778 config HAVE_PIRQ_TABLE
779         bool
780         help
781           This variable specifies whether a given board has PIRQ table support.
782           It is usually set in mainboard/*/Kconfig.
783           Whether or not the PIRQ table is actually generated by coreboot
784           is configurable by the user via GENERATE_PIRQ_TABLE.
786 config ACPI_NHLT
787         bool
788         default n
789         help
790           Build support for NHLT (non HD Audio) ACPI table generation.
792 #These Options are here to avoid "undefined" warnings.
793 #The actual selection and help texts are in the following menu.
795 menu "System tables"
797 config GENERATE_MP_TABLE
798         prompt "Generate an MP table" if HAVE_MP_TABLE || DRIVERS_GENERIC_IOAPIC
799         bool
800         default HAVE_MP_TABLE || DRIVERS_GENERIC_IOAPIC
801         help
802           Generate an MP table (conforming to the Intel MultiProcessor
803           specification 1.4) for this board.
805           If unsure, say Y.
807 config GENERATE_PIRQ_TABLE
808         prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
809         bool
810         default HAVE_PIRQ_TABLE
811         help
812           Generate a PIRQ table for this board.
814           If unsure, say Y.
816 config GENERATE_SMBIOS_TABLES
817         depends on ARCH_X86
818         bool "Generate SMBIOS tables"
819         default y
820         help
821           Generate SMBIOS tables for this board.
823           If unsure, say Y.
825 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
826         bool
827         depends on ARCH_X86
828         help
829           If enabled, only generate SMBIOS Type 41 entries for PCI devices in
830           the devicetree for which Type 41 information is provided, e.g. with
831           the `smbios_dev_info` devicetree syntax. This is useful to manually
832           assign specific instance IDs to onboard devices irrespective of the
833           device traversal order. It is assumed that instance IDs for devices
834           of the same class are unique.
835           When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
836           appropriate PCI devices in the devicetree. Instance IDs are assigned
837           successive numbers from a monotonically increasing counter, with one
838           counter for each device class.
840 config SMBIOS_PROVIDED_BY_MOBO
841         bool
842         default n
844 config MAINBOARD_SERIAL_NUMBER
845         prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
846         string
847         depends on GENERATE_SMBIOS_TABLES
848         default "123456789"
849         help
850           The Serial Number to store in SMBIOS structures.
852 config MAINBOARD_VERSION
853         prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
854         string
855         depends on GENERATE_SMBIOS_TABLES
856         default "1.0"
857         help
858           The Version Number to store in SMBIOS structures.
860 config MAINBOARD_SMBIOS_MANUFACTURER
861         prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
862         string
863         depends on GENERATE_SMBIOS_TABLES
864         default MAINBOARD_VENDOR
865         help
866           Override the default Manufacturer stored in SMBIOS structures.
868 config MAINBOARD_SMBIOS_PRODUCT_NAME
869         prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
870         string
871         depends on GENERATE_SMBIOS_TABLES
872         default MAINBOARD_PART_NUMBER
873         help
874           Override the default Product name stored in SMBIOS structures.
876 config VPD_SMBIOS_VERSION
877         bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
878         default n
879         depends on VPD && GENERATE_SMBIOS_TABLES
880         help
881           Selecting this option will read firmware_version from
882           VPD_RO and override SMBIOS type 0 version. One special
883           scenario of using this feature is to assign a BIOS version
884           to a coreboot image without the need to rebuild from source.
886 endmenu
888 source "payloads/Kconfig"
890 menu "Debugging"
892 comment "CPU Debug Settings"
893 source "src/cpu/*/Kconfig.debug_cpu"
895 comment "BLOB Debug Settings"
896 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
898 comment "General Debug Settings"
900 # TODO: Better help text and detailed instructions.
901 config GDB_STUB
902         bool "GDB debugging support"
903         default n
904         depends on DRIVERS_UART
905         help
906           If enabled, you will be able to set breakpoints for gdb debugging.
907           See src/arch/x86/c_start.S for details.
909 config GDB_WAIT
910         bool "Wait for a GDB connection in the ramstage"
911         default n
912         depends on GDB_STUB
913         help
914           If enabled, coreboot will wait for a GDB connection in the ramstage.
917 config FATAL_ASSERTS
918         bool "Halt when hitting a BUG() or assertion error"
919         default n
920         help
921           If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
923 config HAVE_DEBUG_GPIO
924         bool
926 config DEBUG_GPIO
927         bool "Output verbose GPIO debug messages"
928         depends on HAVE_DEBUG_GPIO
930 config DEBUG_CBFS
931         bool "Output verbose CBFS debug messages"
932         default n
933         help
934           This option enables additional CBFS related debug messages.
936 config HAVE_DEBUG_RAM_SETUP
937         def_bool n
939 config DEBUG_RAM_SETUP
940         bool "Output verbose RAM init debug messages"
941         default n
942         depends on HAVE_DEBUG_RAM_SETUP
943         help
944           This option enables additional RAM init related debug messages.
945           It is recommended to enable this when debugging issues on your
946           board which might be RAM init related.
948           Note: This option will increase the size of the coreboot image.
950           If unsure, say N.
952 config DEBUG_PIRQ
953         bool "Check PIRQ table consistency"
954         default n
955         depends on GENERATE_PIRQ_TABLE
956         help
957           If unsure, say N.
959 config HAVE_DEBUG_SMBUS
960         def_bool n
962 config DEBUG_SMBUS
963         bool "Output verbose SMBus debug messages"
964         default n
965         depends on HAVE_DEBUG_SMBUS
966         help
967           This option enables additional SMBus (and SPD) debug messages.
969           Note: This option will increase the size of the coreboot image.
971           If unsure, say N.
973 config DEBUG_SMI
974         bool "Output verbose SMI debug messages"
975         default n
976         depends on HAVE_SMI_HANDLER
977         select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
978         help
979           This option enables additional SMI related debug messages.
981           Note: This option will increase the size of the coreboot image.
983           If unsure, say N.
985 config DEBUG_PERIODIC_SMI
986         bool "Trigger SMI periodically"
987         depends on DEBUG_SMI
989 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
990 # printk(BIOS_DEBUG, ...) calls.
991 config DEBUG_MALLOC
992         prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
993         bool
994         default n
995         help
996           This option enables additional malloc related debug messages.
998           Note: This option will increase the size of the coreboot image.
1000           If unsure, say N.
1002 # Only visible if DEBUG_SPEW (8) is set.
1003 config DEBUG_RESOURCES
1004         bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1005         default n
1006         help
1007           This option enables additional PCI memory and IO debug messages.
1008           Note: This option will increase the size of the coreboot image.
1009           If unsure, say N.
1011 config DEBUG_CONSOLE_INIT
1012         bool "Debug console initialisation code"
1013         default n
1014         help
1015           With this option printk()'s are attempted before console hardware
1016           initialisation has been completed. Your mileage may vary.
1018           Typically you will need to modify source in console_hw_init() such
1019           that a working console appears before the one you want to debug.
1021           If unsure, say N.
1023 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1024 # printk(BIOS_DEBUG, ...) calls.
1025 config REALMODE_DEBUG
1026         prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1027         bool
1028         default n
1029         depends on PCI_OPTION_ROM_RUN_REALMODE
1030         help
1031           This option enables additional x86emu related debug messages.
1033           Note: This option will increase the time to emulate a ROM.
1035           If unsure, say N.
1037 config X86EMU_DEBUG
1038         bool "Output verbose x86emu debug messages"
1039         default n
1040         depends on PCI_OPTION_ROM_RUN_YABEL
1041         help
1042           This option enables additional x86emu related debug messages.
1044           Note: This option will increase the size of the coreboot image.
1046           If unsure, say N.
1048 config X86EMU_DEBUG_JMP
1049         bool "Trace JMP/RETF"
1050         default n
1051         depends on X86EMU_DEBUG
1052         help
1053           Print information about JMP and RETF opcodes from x86emu.
1055           Note: This option will increase the size of the coreboot image.
1057           If unsure, say N.
1059 config X86EMU_DEBUG_TRACE
1060         bool "Trace all opcodes"
1061         default n
1062         depends on X86EMU_DEBUG
1063         help
1064           Print _all_ opcodes that are executed by x86emu.
1066           WARNING: This will produce a LOT of output and take a long time.
1068           Note: This option will increase the size of the coreboot image.
1070           If unsure, say N.
1072 config X86EMU_DEBUG_PNP
1073         bool "Log Plug&Play accesses"
1074         default n
1075         depends on X86EMU_DEBUG
1076         help
1077           Print Plug And Play accesses made by option ROMs.
1079           Note: This option will increase the size of the coreboot image.
1081           If unsure, say N.
1083 config X86EMU_DEBUG_DISK
1084         bool "Log Disk I/O"
1085         default n
1086         depends on X86EMU_DEBUG
1087         help
1088           Print Disk I/O related messages.
1090           Note: This option will increase the size of the coreboot image.
1092           If unsure, say N.
1094 config X86EMU_DEBUG_PMM
1095         bool "Log PMM"
1096         default n
1097         depends on X86EMU_DEBUG
1098         help
1099           Print messages related to POST Memory Manager (PMM).
1101           Note: This option will increase the size of the coreboot image.
1103           If unsure, say N.
1106 config X86EMU_DEBUG_VBE
1107         bool "Debug VESA BIOS Extensions"
1108         default n
1109         depends on X86EMU_DEBUG
1110         help
1111           Print messages related to VESA BIOS Extension (VBE) functions.
1113           Note: This option will increase the size of the coreboot image.
1115           If unsure, say N.
1117 config X86EMU_DEBUG_INT10
1118         bool "Redirect INT10 output to console"
1119         default n
1120         depends on X86EMU_DEBUG
1121         help
1122           Let INT10 (i.e. character output) calls print messages to debug output.
1124           Note: This option will increase the size of the coreboot image.
1126           If unsure, say N.
1128 config X86EMU_DEBUG_INTERRUPTS
1129         bool "Log intXX calls"
1130         default n
1131         depends on X86EMU_DEBUG
1132         help
1133           Print messages related to interrupt handling.
1135           Note: This option will increase the size of the coreboot image.
1137           If unsure, say N.
1139 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1140         bool "Log special memory accesses"
1141         default n
1142         depends on X86EMU_DEBUG
1143         help
1144           Print messages related to accesses to certain areas of the virtual
1145           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1147           Note: This option will increase the size of the coreboot image.
1149           If unsure, say N.
1151 config X86EMU_DEBUG_MEM
1152         bool "Log all memory accesses"
1153         default n
1154         depends on X86EMU_DEBUG
1155         help
1156           Print memory accesses made by option ROM.
1157           Note: This also includes accesses to fetch instructions.
1159           Note: This option will increase the size of the coreboot image.
1161           If unsure, say N.
1163 config X86EMU_DEBUG_IO
1164         bool "Log IO accesses"
1165         default n
1166         depends on X86EMU_DEBUG
1167         help
1168           Print I/O accesses made by option ROM.
1170           Note: This option will increase the size of the coreboot image.
1172           If unsure, say N.
1174 config X86EMU_DEBUG_TIMINGS
1175         bool "Output timing information"
1176         default n
1177         depends on X86EMU_DEBUG && HAVE_MONOTONIC_TIMER
1178         help
1179           Print timing information needed by i915tool.
1181           If unsure, say N.
1183 config DEBUG_SPI_FLASH
1184         bool "Output verbose SPI flash debug messages"
1185         default n
1186         depends on SPI_FLASH
1187         help
1188           This option enables additional SPI flash related debug messages.
1190 config DEBUG_IPMI
1191         bool "Output verbose IPMI debug messages"
1192         default n
1193         depends on IPMI_KCS
1194         help
1195           This option enables additional IPMI related debug messages.
1197 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1198 # Only visible with the right southbridge and loglevel.
1199 config DEBUG_INTEL_ME
1200         bool "Verbose logging for Intel Management Engine"
1201         default n
1202         help
1203           Enable verbose logging for Intel Management Engine driver that
1204           is present on Intel 6-series chipsets.
1205 endif
1207 config DEBUG_FUNC
1208         bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1209         default n
1210         help
1211           This option enables additional function entry and exit debug messages
1212           for select functions.
1213           Note: This option will increase the size of the coreboot image.
1214           If unsure, say N.
1216 config DEBUG_COVERAGE
1217         bool "Debug code coverage"
1218         default n
1219         depends on COVERAGE
1220         help
1221           If enabled, the code coverage hooks in coreboot will output some
1222           information about the coverage data that is dumped.
1224 config DEBUG_BOOT_STATE
1225         bool "Debug boot state machine"
1226         default n
1227         help
1228           Control debugging of the boot state machine.  When selected displays
1229           the state boundaries in ramstage.
1231 config DEBUG_ADA_CODE
1232         bool "Compile debug code in Ada sources"
1233         default n
1234         help
1235           Add the compiler switch `-gnata` to compile code guarded by
1236           `pragma Debug`.
1238 config HAVE_EM100_SUPPORT
1239         bool
1240         help
1241           This is enabled by platforms which can support using the EM100.
1243 config EM100
1244         bool "Configure image for EM100 usage"
1245         depends on HAVE_EM100_SUPPORT
1246         help
1247           The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1248           over USB. However it only supports a maximum SPI clock of 20MHz and
1249           single data output. Enable this option to use a 20MHz SPI clock and
1250           disable "Dual Output Fast Read" Support.
1252           On AMD platforms this changes the SPI speed at run-time if the
1253           mainboard code supports this. On supported Intel platforms this works
1254           by changing the settings in the descriptor.bin file.
1256 endmenu
1258 ###############################################################################
1259 # Set variables with no prompt - these can be set anywhere, and putting at
1260 # the end of this file gives the most flexibility.
1262 source "src/lib/Kconfig"
1264 config WARNINGS_ARE_ERRORS
1265         bool
1266         default y
1268 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1269 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1270 # mutually exclusive. One of these options must be selected in the
1271 # mainboard Kconfig if the chipset supports enabling and disabling of
1272 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1273 # in mainboard/Kconfig to know if the button should be enabled or not.
1275 config POWER_BUTTON_DEFAULT_ENABLE
1276         def_bool n
1277         help
1278           Select when the board has a power button which can optionally be
1279           disabled by the user.
1281 config POWER_BUTTON_DEFAULT_DISABLE
1282         def_bool n
1283         help
1284           Select when the board has a power button which can optionally be
1285           enabled by the user, e.g. when the board ships with a jumper over
1286           the power switch contacts.
1288 config POWER_BUTTON_FORCE_ENABLE
1289         def_bool n
1290         help
1291           Select when the board requires that the power button is always
1292           enabled.
1294 config POWER_BUTTON_FORCE_DISABLE
1295         def_bool n
1296         help
1297           Select when the board requires that the power button is always
1298           disabled, e.g. when it has been hardwired to ground.
1300 config POWER_BUTTON_IS_OPTIONAL
1301         bool
1302         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1303         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1304         help
1305           Internal option that controls ENABLE_POWER_BUTTON visibility.
1307 config REG_SCRIPT
1308         bool
1309         default n
1310         help
1311           Internal option that controls whether we compile in register scripts.
1313 config MAX_REBOOT_CNT
1314         int
1315         default 3
1316         help
1317           Internal option that sets the maximum number of bootblock executions allowed
1318           with the normal image enabled before assuming the normal image is defective
1319           and switching to the fallback image.
1321 config UNCOMPRESSED_RAMSTAGE
1322         bool
1324 config NO_XIP_EARLY_STAGES
1325         bool
1326         default n if ARCH_X86
1327         default y
1328         help
1329           Identify if early stages are eXecute-In-Place(XIP).
1331 config EARLY_CBMEM_LIST
1332         bool
1333         default n
1334         help
1335           Enable display of CBMEM during romstage and postcar.
1337 config RELOCATABLE_MODULES
1338         bool
1339         help
1340           If RELOCATABLE_MODULES is selected then support is enabled for
1341           building relocatable modules in the RAM stage. Those modules can be
1342           loaded anywhere and all the relocations are handled automatically.
1344 config GENERIC_GPIO_LIB
1345         bool
1346         help
1347           If enabled, compile the generic GPIO library. A "generic" GPIO
1348           implies configurability usually found on SoCs, particularly the
1349           ability to control internal pull resistors.
1351 config BOOTBLOCK_CUSTOM
1352         # To be selected by arch, SoC or mainboard if it does not want use the normal
1353         # src/lib/bootblock.c#main() C entry point.
1354         bool
1356 config BOOTBLOCK_IN_CBFS
1357         bool
1358         default y if ARCH_X86
1359         help
1360           Select this on platforms that have a top aligned bootblock inside cbfs.
1362 config MEMLAYOUT_LD_FILE
1363         string
1364         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1365         help
1366           This variable allows SoC/mainboard to supply in a custom linker file
1367           if required. This determines the linker file used for all the stages
1368           (bootblock, romstage, verstage, ramstage, postcar) in
1369           src/arch/${ARCH}/Makefile.inc.
1371 ###############################################################################
1372 # Set default values for symbols created before mainboards.  This allows the
1373 # option to be displayed in the general menu, but the default to be loaded in
1374 # the mainboard if desired.
1375 config COMPRESS_RAMSTAGE
1376         default y if !UNCOMPRESSED_RAMSTAGE
1378 config COMPRESS_PRERAM_STAGES
1379         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1380         default y
1382 config INCLUDE_CONFIG_FILE
1383         default y
1385 config BOOTSPLASH_FILE
1386         depends on BOOTSPLASH_IMAGE
1387         default "bootsplash.jpg"
1389 config CBFS_SIZE
1390         default ROM_SIZE
1392 config HAVE_BOOTBLOCK
1393         bool
1394         default y
1396 config HAVE_VERSTAGE
1397         bool
1398         depends on VBOOT_SEPARATE_VERSTAGE
1399         default y
1401 config HAVE_ROMSTAGE
1402         bool
1403         default y
1405 config HAVE_RAMSTAGE
1406         bool
1407         default n if RAMPAYLOAD
1408         default y