libpayload: configs: Add new config.featuretest to broaden CI
[coreboot.git] / src / cpu / Kconfig
blob2770f648b49acb3a1d1e41892ef8f6fa9728e7eb
1 ## SPDX-License-Identifier: GPL-2.0-only
3 # Warning: This file is included whether or not the if is here.
4 # The if controls how the evaluation occurs.
5 # (See also src/Kconfig)
7 source "src/cpu/*/Kconfig"
9 if ARCH_X86
11 config DCACHE_RAM_BASE
12         hex
14 config DCACHE_RAM_SIZE
15         hex
17 config DCACHE_BSP_STACK_SIZE
18         hex
20 config EARLYRAM_BSP_STACK_SIZE
21         depends on RESET_VECTOR_IN_RAM
22         hex
24 config SMP
25         bool
26         default y if MAX_CPUS != 1
27         default n
28         help
29           This option is used to enable certain functions to make coreboot
30           work correctly on symmetric multi processor (SMP) systems.
32 config SSE
33         bool
34         help
35           Select SSE in your socket or model Kconfig if your CPU has SSE
36           streaming SIMD instructions.
38 config SSE2
39         bool
40         default n
41         select SSE
42         help
43           Select SSE2 in your socket or model Kconfig if your CPU has SSE2
44           streaming SIMD instructions. Some parts of coreboot can be built
45           with more efficient code if SSE2 instructions are available.
47 endif # ARCH_X86
49 config SUPPORT_CPU_UCODE_IN_CBFS
50         bool
51         default n
53 config USES_MICROCODE_HEADER_FILES
54         def_bool n
55         select SUPPORT_CPU_UCODE_IN_CBFS
56         help
57           This is selected by a board or chipset to set the default for the
58           microcode source choice to a list of external microcode headers
60 config MICROCODE_BLOB_NOT_IN_BLOB_REPO
61         bool
62         help
63           Selected by platforms that don't maintain microcode updates in the
64           blobs repo yet.
66 config MICROCODE_BLOB_NOT_HOOKED_UP
67         bool
68         help
69           Selected by platforms that haven't hooked microcode updates up yet.
71 config MICROCODE_BLOB_UNDISCLOSED
72         bool
73         help
74           Selected by work-in-progress platforms that don't have microcode
75           updates available yet.
77 config USE_CPU_MICROCODE_CBFS_BINS
78         bool
79         help
80           Automatically selected below to add binary microcode files
81           (`cpu_microcode_bins` in the makefiles) to CBFS.
83 choice
84         prompt "Include CPU microcode in CBFS" if ARCH_X86
85         default CPU_MICROCODE_CBFS_EXTERNAL_HEADER if USES_MICROCODE_HEADER_FILES
86         default CPU_MICROCODE_CBFS_NONE if MICROCODE_BLOB_NOT_IN_BLOB_REPO || \
87                                            MICROCODE_BLOB_NOT_HOOKED_UP || \
88                                            MICROCODE_BLOB_UNDISCLOSED
89         depends on SUPPORT_CPU_UCODE_IN_CBFS && !CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS
91 config CPU_MICROCODE_CBFS_DEFAULT_BINS
92         bool "Generate from tree"
93         select USE_CPU_MICROCODE_CBFS_BINS
94         depends on !(MICROCODE_BLOB_NOT_IN_BLOB_REPO || \
95                      MICROCODE_BLOB_NOT_HOOKED_UP || \
96                      MICROCODE_BLOB_UNDISCLOSED)
97         help
98           Select this option if you want microcode updates to be assembled when
99           building coreboot and included in the final image as a separate CBFS
100           file. Microcode will not be hard-coded into ramstage.
102           The microcode file may be removed from the ROM image at a later
103           time with cbfstool, if desired.
105           If unsure, select this option.
107 config CPU_MICROCODE_CBFS_EXTERNAL_BINS
108         bool "Include external microcode binary"
109         select USE_CPU_MICROCODE_CBFS_BINS
110         help
111           Select this option if you want to include external binary files
112           in the CPUs native format. They will be included as a separate
113           file in CBFS.
115           A word of caution: only select this option if you are sure the
116           microcode that you have is newer than the microcode shipping with
117           coreboot.
119           The microcode file may be removed from the ROM image at a later
120           time with cbfstool, if desired.
122           If unsure, and applicable, select "Generate from tree"
124 config CPU_MICROCODE_CBFS_EXTERNAL_HEADER
125         bool "Include external microcode header files"
126         help
127           Select this option if you want to include external c header files
128           containing the CPU microcode. This will be included as a separate
129           file in CBFS.
131           A word of caution: only select this option if you are sure the
132           microcode that you have is newer than the microcode shipping with
133           coreboot.
135           The microcode file may be removed from the ROM image at a later
136           time with cbfstool, if desired.
138           If unsure, and applicable, select "Generate from tree"
140 config CPU_MICROCODE_CBFS_NONE
141         bool "Do not include microcode updates"
142         help
143           Select this option if you do not want CPU microcode included in CBFS.
145           Microcode may be added to the ROM image at a later time with cbfstool,
146           if desired.
148           If unsure, and applicable, select "Generate from tree"
150           The GOOD:
151           Microcode updates intend to solve issues that have been discovered
152           after CPU production. The expected effect is that systems work as
153           intended with the updated microcode, but we have also seen cases where
154           issues were solved by not applying microcode updates.
156           The BAD:
157           Note that some operating system include these same microcode patches,
158           so you may need to also disable microcode updates in your operating
159           system for this option to have an effect.
161           The UGLY:
162           A word of CAUTION: some CPUs depend on microcode updates to function
163           correctly. Not updating the microcode may leave the CPU operating at
164           less than optimal performance, or may cause outright hangups.
165           There are CPUs where coreboot cannot properly initialize the CPU
166           without microcode updates
167           For example, if running with the factory microcode, some Intel
168           SandyBridge CPUs may hang when enabling CAR, or some VIA Nano CPUs
169           will hang when changing the frequency.
171           Make sure you have a way of flashing the ROM externally before
172           selecting this option.
174 endchoice
176 config CPU_MICROCODE_HEADER_FILES
177         string "List of space separated microcode header files with the path"
178         depends on CPU_MICROCODE_CBFS_EXTERNAL_HEADER
179         help
180           A list of one or more microcode header files with path from the
181           coreboot directory.  These should be separated by spaces.
183 config CPU_UCODE_BINARIES
184         string "Microcode binary path and filename"
185         depends on CPU_MICROCODE_CBFS_EXTERNAL_BINS
186         default ""
187         help
188           Some platforms have microcode in the blobs directory, and these can
189           be hardcoded in the makefiles.  For platforms with microcode
190           binaries that aren't in the makefile, set this option to pull
191           in the microcode.
193           This should contain the full path of the file for one or more
194           microcode binary files to include, separated by spaces.
196           If unsure, leave this blank.