xref: /aosp_15_r20/external/coreboot/src/cpu/Kconfig (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1## SPDX-License-Identifier: GPL-2.0-only
2
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)
6
7source "src/cpu/*/Kconfig"
8
9if ARCH_X86
10
11config DCACHE_RAM_BASE
12	hex
13
14config DCACHE_RAM_SIZE
15	hex
16
17config DCACHE_BSP_STACK_SIZE
18	hex
19
20config EARLYRAM_BSP_STACK_SIZE
21	depends on RESET_VECTOR_IN_RAM
22	hex
23
24config 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.
31
32config SSE
33	bool
34	help
35	  Select SSE in your socket or model Kconfig if your CPU has SSE
36	  streaming SIMD instructions.
37
38config 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.
46
47endif # ARCH_X86
48
49config SUPPORT_CPU_UCODE_IN_CBFS
50	bool
51	default n
52
53config 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
59
60config 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.
65
66config MICROCODE_BLOB_NOT_HOOKED_UP
67	bool
68	help
69	  Selected by platforms that haven't hooked microcode updates up yet.
70
71config MICROCODE_BLOB_UNDISCLOSED
72	bool
73	help
74	  Selected by work-in-progress platforms that don't have microcode
75	  updates available yet.
76
77config 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.
82
83choice
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
90
91config 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.
101
102	  The microcode file may be removed from the ROM image at a later
103	  time with cbfstool, if desired.
104
105	  If unsure, select this option.
106
107config 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.
114
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.
118
119	  The microcode file may be removed from the ROM image at a later
120	  time with cbfstool, if desired.
121
122	  If unsure, and applicable, select "Generate from tree"
123
124config 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.
130
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.
134
135	  The microcode file may be removed from the ROM image at a later
136	  time with cbfstool, if desired.
137
138	  If unsure, and applicable, select "Generate from tree"
139
140config 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.
144
145	  Microcode may be added to the ROM image at a later time with cbfstool,
146	  if desired.
147
148	  If unsure, and applicable, select "Generate from tree"
149
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.
155
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.
160
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.
170
171	  Make sure you have a way of flashing the ROM externally before
172	  selecting this option.
173
174endchoice
175
176config 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.
182
183config 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.
192
193	  This should contain the full path of the file for one or more
194	  microcode binary files to include, separated by spaces.
195
196	  If unsure, leave this blank.
197