blob: ec1171b505b81d1427149a6309edfb079be3bb5f [file] [log] [blame]
Patrick Georgi11f00792020-03-04 15:10:45 +01001## SPDX-License-Identifier: GPL-2.0-only
Stefan Reinauer425b61e2015-03-15 04:29:35 +01002
Stefan Reinauera48ca842015-04-04 01:58:28 +02003config ARCH_X86
4 bool
Stefan Reinauera48ca842015-04-04 01:58:28 +02005 select PCI
Kyösti Mälkkiec151f02018-06-03 22:48:51 +03006 select RELOCATABLE_MODULES
Harshit Sharma65bec1c2020-08-05 22:25:27 -07007 select HAVE_ASAN_IN_RAMSTAGE
Stefan Reinauera48ca842015-04-04 01:58:28 +02008
Angel Pons8e035e32021-06-22 12:58:20 +02009if ARCH_X86
10
Stefan Reinauer68671202015-03-15 04:34:03 +010011# stage selectors for x86
12
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070013config ARCH_BOOTBLOCK_X86_32
Gabe Black5fbfc912013-07-07 13:52:37 -070014 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070015
Stefan Reinauer77b16552015-01-14 19:51:47 +010016config ARCH_VERSTAGE_X86_32
17 bool
Stefan Reinauer77b16552015-01-14 19:51:47 +010018
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070019config ARCH_ROMSTAGE_X86_32
20 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070021
Patrick Georgi29eeece2018-10-31 14:24:47 +010022config ARCH_POSTCAR_X86_32
23 bool
24 default ARCH_ROMSTAGE_X86_32 && POSTCAR_STAGE
25
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070026config ARCH_RAMSTAGE_X86_32
27 bool
Gabe Black5fbfc912013-07-07 13:52:37 -070028
Angel Ponsa32df262020-09-25 10:20:11 +020029config ARCH_ALL_STAGES_X86_32
30 bool
Arthur Heymans6e857402022-11-12 16:16:02 +010031 default !ARCH_ALL_STAGES_X86_64
Angel Ponsa32df262020-09-25 10:20:11 +020032 select ARCH_BOOTBLOCK_X86_32
Arthur Heymans6e857402022-11-12 16:16:02 +010033 select ARCH_VERSTAGE_X86_32 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
Angel Ponsa32df262020-09-25 10:20:11 +020034 select ARCH_ROMSTAGE_X86_32
35 select ARCH_RAMSTAGE_X86_32
Arthur Heymans4403c562022-11-17 12:13:35 +010036 select ARCH_SUPPORTS_CLANG
Angel Ponsa32df262020-09-25 10:20:11 +020037
Stefan Reinauer68671202015-03-15 04:34:03 +010038# stage selectors for x64
39
40config ARCH_BOOTBLOCK_X86_64
41 bool
Patrick Rudolphe249b1a2020-08-27 21:07:57 +020042 select SSE2
Stefan Reinauer68671202015-03-15 04:34:03 +010043
44config ARCH_VERSTAGE_X86_64
45 bool
Patrick Rudolphe249b1a2020-08-27 21:07:57 +020046 select SSE2
Stefan Reinauer68671202015-03-15 04:34:03 +010047
48config ARCH_ROMSTAGE_X86_64
49 bool
Patrick Rudolphe249b1a2020-08-27 21:07:57 +020050 select SSE2
Stefan Reinauer68671202015-03-15 04:34:03 +010051
Patrick Georgi29eeece2018-10-31 14:24:47 +010052config ARCH_POSTCAR_X86_64
53 bool
54 default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
Patrick Rudolphe249b1a2020-08-27 21:07:57 +020055 select SSE2
Patrick Georgi29eeece2018-10-31 14:24:47 +010056
Stefan Reinauer68671202015-03-15 04:34:03 +010057config ARCH_RAMSTAGE_X86_64
58 bool
Patrick Rudolphe249b1a2020-08-27 21:07:57 +020059 select SSE2
Arthur Heymansb86e96a2019-02-10 17:00:56 +010060
Angel Pons2db779072020-09-25 10:14:45 +020061config ARCH_ALL_STAGES_X86_64
62 bool
63 select ARCH_BOOTBLOCK_X86_64
Arthur Heymans6e857402022-11-12 16:16:02 +010064 select ARCH_VERSTAGE_X86_64 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
Angel Pons2db779072020-09-25 10:14:45 +020065 select ARCH_ROMSTAGE_X86_64
66 select ARCH_RAMSTAGE_X86_64
Arthur Heymansf45c7672022-11-04 20:38:56 +010067 select ARCH_SUPPORTS_CLANG
Angel Pons2db779072020-09-25 10:14:45 +020068
Angel Pons16fe5e12021-06-22 15:41:59 +020069config HAVE_EXP_X86_64_SUPPORT
70 bool
71 help
72 Enable experimental support to build and run coreboot in 64-bit mode.
73 When selecting this option for a new platform, it is highly advisable
74 to provide a config file for Jenkins to build-test the 64-bit option.
75
76config USE_EXP_X86_64_SUPPORT
77 bool "[EXPERIMENTAL] Run coreboot in long (64-bit) mode"
78 depends on HAVE_EXP_X86_64_SUPPORT
79 select ARCH_ALL_STAGES_X86_64
80 help
81 When set, most of coreboot runs in long (64-bit) mode instead of the
82 usual protected flat (32-bit) mode. 64-bit CPUs and OSes can be used
83 irrespective of whether coreboot runs in 32-bit or 64-bit mode. This
84 is an experimental option: do not enable unless one wants to test it
85 and has the means to recover a system when coreboot fails to boot.
86
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020087config ARCH_X86_64_PGTBL_LOC
88 hex "x86_64 page table location in CBFS"
89 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010090 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020091 help
92 The position where to place pagetables. Needs to be known at
93 compile time. Must not overlap other files in CBFS.
94
Uwe Hermann168b11b2009-10-07 16:15:40 +000095# This is an SMP option. It relates to starting up APs.
96# It is usually set in mainboard/*/Kconfig.
97# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020098config AP_IN_SIPI_WAIT
99 bool
100 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -0700101 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +0000102
Martin Roth8418fd42019-04-22 16:26:23 -0600103config RESET_VECTOR_IN_RAM
104 bool
105 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200106 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -0600107 help
Felix Heldca928c62020-04-04 01:47:37 +0200108 Select this option if the x86 processor's reset vector is in
109 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -0600110
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300111# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
112# can boot AP CPUs to enable their shared caches.
113config SIPI_VECTOR_IN_ROM
114 bool
115 default n
116 depends on ARCH_X86
117
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700118# Traditionally BIOS region on SPI flash boot media was memory mapped right below
119# 4G and it was the last region in the IFD. This way translation between CPU
120# address space to flash address was trivial. However some IFDs on newer SoCs
Raul E Rangele92a9822021-06-24 16:54:27 -0600121# have BIOS region sandwiched between descriptor and other regions. Turning on
122# X86_CUSTOM_BOOTMEDIA disables X86_TOP4G_BOOTMEDIA_MAP which allows the
123# soc code to provide custom mmap_boot.c.
124config X86_CUSTOM_BOOTMEDIA
125 bool
126
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700127config X86_TOP4G_BOOTMEDIA_MAP
128 bool
Raul E Rangele92a9822021-06-24 16:54:27 -0600129 depends on !X86_CUSTOM_BOOTMEDIA
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700130 default y
131
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530132config PRERAM_CBMEM_CONSOLE_SIZE
133 hex
134 default 0xc00
135 help
136 Increase this value if preram cbmem console is getting truncated
137
Julius Wernerbaf27db2019-10-02 17:28:56 -0700138config CBFS_MCACHE_SIZE
139 hex
140 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700141 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700142 help
Julius Werner40acfe72021-05-12 15:59:58 -0700143 Increase this value if you see CBFS mcache overflow warnings. Do NOT
144 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700145
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000146config PC80_SYSTEM
147 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700148 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000149
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700150config BOOTBLOCK_DEBUG_SPINLOOP
151 bool
152 default n
153 help
154 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
155 for a JTAG debugger to break into the execution sequence.
156
Patrick Georgia865b172011-01-14 07:40:24 +0000157config HAVE_CMOS_DEFAULT
158 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700159 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000160
161config CMOS_DEFAULT_FILE
162 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200163 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000164 depends on HAVE_CMOS_DEFAULT
165
Felix Held4e037272022-02-23 16:35:58 +0100166config HPET_MIN_TICKS
167 hex
168
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600169config C_ENV_BOOTBLOCK_SIZE
170 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300171 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
172 help
173 This is only the default maximum of bootblock size for linking
174 purposes. Platforms may provide different limit and need to
175 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800176
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200177config FIXED_BOOTBLOCK_SIZE
178 bool
179
Andrey Petrovccd300b2016-02-28 22:04:51 -0800180# Default address romstage is to be linked at
181config ROMSTAGE_ADDR
182 hex
183 default 0x2000000
184
185# Default address verstage is to be linked at
186config VERSTAGE_ADDR
187 hex
188 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500189
190# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200191# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500192config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300193 def_bool y
194 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200195 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700196
197config VERSTAGE_DEBUG_SPINLOOP
198 bool
199 default n
200 help
201 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
202 for a JTAG debugger to break into the execution sequence.
203
204config ROMSTAGE_DEBUG_SPINLOOP
205 bool
206 default n
207 help
208 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
209 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700210
211choice
212 prompt "Bootblock behaviour"
213 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200214 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700215
216config BOOTBLOCK_SIMPLE
217 bool "Always load fallback"
218
219config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200220 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700221 bool "Switch to normal if CMOS says so"
222
223endchoice
224
Martin Roth408fda72016-12-15 16:04:55 -0700225config SKIP_MAX_REBOOT_CNT_CLEAR
226 bool "Do not clear reboot count after successful boot"
227 depends on BOOTBLOCK_NORMAL
228 help
229 Do not clear the reboot count immediately after successful boot.
230 Set to allow the payload to control normal/fallback image recovery.
231 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100232 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600233
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700234config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100235 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600236 depends on HAVE_ACPI_TABLES
237 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700238 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700239
240config COLLECT_TIMESTAMPS_NO_TSC
241 bool
242 default n
243 depends on COLLECT_TIMESTAMPS
244 help
245 Use a non-TSC platform-dependent source for timestamps.
246
247config COLLECT_TIMESTAMPS_TSC
248 bool
249 default y if !COLLECT_TIMESTAMPS_NO_TSC
250 default n
251 depends on COLLECT_TIMESTAMPS
252 help
253 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600254
255config PAGING_IN_CACHE_AS_RAM
256 bool
257 default n
258 depends on ARCH_X86
259 help
260 Chipsets scan select this option to preallocate area in cache-as-ram
261 for storing paging data structures. PAE paging is currently the
262 only thing being supported.
263
264config NUM_CAR_PAGE_TABLE_PAGES
265 int
266 default 5
267 depends on PAGING_IN_CACHE_AS_RAM
268 help
269 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600270
271# Provide the interrupt handlers to every stage. Not all
272# stages may take advantage.
273config IDT_IN_EVERY_STAGE
274 bool
275 default n
276 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200277
278config HAVE_CF9_RESET
279 bool
280
281config HAVE_CF9_RESET_PREPARE
282 bool
283 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300284
285config PIRQ_ROUTE
286 bool
287 default n
288
289config MAX_PIRQ_LINKS
290 int
291 default 4
292 depends on PIRQ_ROUTE
293 help
294 This variable specifies the number of PIRQ interrupt links which are
295 routable. On most chipsets, this is 4, INTA through INTD. Some
296 chipsets offer more than four links, commonly up to INTH. They may
297 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
298 table specifies links greater than 4, pirq_route_irqs will not
299 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100300
Duncan Laurief02bf352020-03-17 18:32:54 -0700301config MAX_ACPI_TABLE_SIZE_KB
302 int
303 default 144
304 help
305 Set the maximum size of all ACPI tables in KiB.
306
Furquan Shaikh46514c22020-06-11 11:59:07 -0700307config MEMLAYOUT_LD_FILE
308 string
309 default "src/arch/x86/memlayout.ld"
310
Robert Zieba3f01cd12022-04-14 10:36:15 -0600311config DEBUG_HW_BREAKPOINTS
312 bool
313 default y
314 help
315 Enable support for hardware data and instruction breakpoints through
316 the x86 debug registers
317
318config DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
319 bool
320 default y
321 depends on DEBUG_HW_BREAKPOINTS && IDT_IN_EVERY_STAGE
322
323config DEBUG_NULL_DEREF_BREAKPOINTS
324 bool
325 default y
326 depends on DEBUG_HW_BREAKPOINTS
327 help
328 Enable support for catching null dereferences and instruction execution
329
330config DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES
331 bool
332 default y
333 depends on DEBUG_NULL_DEREF_BREAKPOINTS && DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
334
335config DEBUG_NULL_DEREF_HALT
336 bool
337 default n
338 depends on DEBUG_NULL_DEREF_BREAKPOINTS
339 help
340 When enabled null dereferences and instruction fetches will halt execution.
341 Otherwise an error will be printed.
342
Bill XIEf0215b42021-03-20 21:06:11 +0800343# Some EC need an "EC firmware pointer" (a data structure hinting the address
344# of its firmware blobs) being put at a fixed position. Its space
345# (__section__(".ecfw_ptr")) should be reserved if it lies in the range of a
346# stage. Different EC may have different format and/or value for it. The actual
347# address of EC firmware pointer should be provided in the Kconfig of the EC
348# requiring it, and its value could be filled by linking a read-only global
349# data object to the section above.
350
351config ECFW_PTR_ADDR
352 hex
353 help
354 Address of reserved space for EC firmware pointer, which should not
355 overlap other data such as reset vector or FIT pointer if present.
356
357config ECFW_PTR_SIZE
358 int
359 help
360 Size of reserved space for EC firmware pointer
361
Eric Laic1ef4f32023-06-12 14:27:54 +0800362config DUMP_SMBIOS_TYPE17
Eric Lai8bbe8502023-06-26 07:56:39 +0800363 bool "Dump part of SMBIOS type17 dimm information"
Eric Laic1ef4f32023-06-12 14:27:54 +0800364 depends on GENERATE_SMBIOS_TABLES
365
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100366endif