blob: b60f600541277bc8c6d464dba46c0e886fbe5bc0 [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
Angel Pons6f5a6582021-06-22 15:18:07 +020031 default ARCH_ALL_STAGES_X86 && !ARCH_ALL_STAGES_X86_64
Angel Ponsa32df262020-09-25 10:20:11 +020032 select ARCH_BOOTBLOCK_X86_32
33 select ARCH_VERSTAGE_X86_32
34 select ARCH_ROMSTAGE_X86_32
35 select ARCH_RAMSTAGE_X86_32
Arthur Heymans5b528bc2022-03-24 10:38:54 +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
64 select ARCH_VERSTAGE_X86_64
65 select ARCH_ROMSTAGE_X86_64
66 select ARCH_RAMSTAGE_X86_64
67
Angel Pons6f5a6582021-06-22 15:18:07 +020068config ARCH_ALL_STAGES_X86
69 bool
70 default y
71
Angel Pons16fe5e12021-06-22 15:41:59 +020072config HAVE_EXP_X86_64_SUPPORT
73 bool
74 help
75 Enable experimental support to build and run coreboot in 64-bit mode.
76 When selecting this option for a new platform, it is highly advisable
77 to provide a config file for Jenkins to build-test the 64-bit option.
78
79config USE_EXP_X86_64_SUPPORT
80 bool "[EXPERIMENTAL] Run coreboot in long (64-bit) mode"
81 depends on HAVE_EXP_X86_64_SUPPORT
82 select ARCH_ALL_STAGES_X86_64
83 help
84 When set, most of coreboot runs in long (64-bit) mode instead of the
85 usual protected flat (32-bit) mode. 64-bit CPUs and OSes can be used
86 irrespective of whether coreboot runs in 32-bit or 64-bit mode. This
87 is an experimental option: do not enable unless one wants to test it
88 and has the means to recover a system when coreboot fails to boot.
89
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020090config ARCH_X86_64_PGTBL_LOC
91 hex "x86_64 page table location in CBFS"
92 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010093 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020094 help
95 The position where to place pagetables. Needs to be known at
96 compile time. Must not overlap other files in CBFS.
97
Martin Roth0cd9ff82016-02-01 17:33:37 -070098config USE_MARCH_586
99 def_bool n
100 help
101 Allow a platform or processor to select to be compiled using
102 the '-march=i586' option instead of the typical '-march=i686'
103
Uwe Hermann168b11b2009-10-07 16:15:40 +0000104# This is an SMP option. It relates to starting up APs.
105# It is usually set in mainboard/*/Kconfig.
106# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +0200107config AP_IN_SIPI_WAIT
108 bool
109 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -0700110 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +0000111
Martin Roth8418fd42019-04-22 16:26:23 -0600112config RESET_VECTOR_IN_RAM
113 bool
114 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200115 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -0600116 help
Felix Heldca928c62020-04-04 01:47:37 +0200117 Select this option if the x86 processor's reset vector is in
118 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -0600119
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300120# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
121# can boot AP CPUs to enable their shared caches.
122config SIPI_VECTOR_IN_ROM
123 bool
124 default n
125 depends on ARCH_X86
126
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700127# Traditionally BIOS region on SPI flash boot media was memory mapped right below
128# 4G and it was the last region in the IFD. This way translation between CPU
129# address space to flash address was trivial. However some IFDs on newer SoCs
Raul E Rangele92a9822021-06-24 16:54:27 -0600130# have BIOS region sandwiched between descriptor and other regions. Turning on
131# X86_CUSTOM_BOOTMEDIA disables X86_TOP4G_BOOTMEDIA_MAP which allows the
132# soc code to provide custom mmap_boot.c.
133config X86_CUSTOM_BOOTMEDIA
134 bool
135
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700136config X86_TOP4G_BOOTMEDIA_MAP
137 bool
Raul E Rangele92a9822021-06-24 16:54:27 -0600138 depends on !X86_CUSTOM_BOOTMEDIA
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700139 default y
140
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200141# This is something you almost certainly don't want to mess with.
142# How many SIPIs do we send when starting up APs and cores?
143# The answer in 2000 or so was '2'. Nowadays, on many systems,
144# it is 1. Set a safe default here, and you can override it
145# on reasonable platforms.
146config NUM_IPI_STARTS
147 int
148 default 2
149
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530150config PRERAM_CBMEM_CONSOLE_SIZE
151 hex
152 default 0xc00
153 help
154 Increase this value if preram cbmem console is getting truncated
155
Julius Wernerbaf27db2019-10-02 17:28:56 -0700156config CBFS_MCACHE_SIZE
157 hex
158 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700159 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700160 help
Julius Werner40acfe72021-05-12 15:59:58 -0700161 Increase this value if you see CBFS mcache overflow warnings. Do NOT
162 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700163
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000164config PC80_SYSTEM
165 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700166 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000167
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700168config BOOTBLOCK_DEBUG_SPINLOOP
169 bool
170 default n
171 help
172 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
173 for a JTAG debugger to break into the execution sequence.
174
Patrick Georgia865b172011-01-14 07:40:24 +0000175config HAVE_CMOS_DEFAULT
176 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700177 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000178
179config CMOS_DEFAULT_FILE
180 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200181 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000182 depends on HAVE_CMOS_DEFAULT
183
Felix Held4e037272022-02-23 16:35:58 +0100184config HPET_MIN_TICKS
185 hex
186
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600187config C_ENV_BOOTBLOCK_SIZE
188 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300189 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
190 help
191 This is only the default maximum of bootblock size for linking
192 purposes. Platforms may provide different limit and need to
193 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800194
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200195config FIXED_BOOTBLOCK_SIZE
196 bool
197
Andrey Petrovccd300b2016-02-28 22:04:51 -0800198# Default address romstage is to be linked at
199config ROMSTAGE_ADDR
200 hex
201 default 0x2000000
202
203# Default address verstage is to be linked at
204config VERSTAGE_ADDR
205 hex
206 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500207
208# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200209# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500210config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300211 def_bool y
212 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200213 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700214
215config VERSTAGE_DEBUG_SPINLOOP
216 bool
217 default n
218 help
219 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
220 for a JTAG debugger to break into the execution sequence.
221
222config ROMSTAGE_DEBUG_SPINLOOP
223 bool
224 default n
225 help
226 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
227 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700228
229choice
230 prompt "Bootblock behaviour"
231 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200232 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700233
234config BOOTBLOCK_SIMPLE
235 bool "Always load fallback"
236
237config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200238 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700239 bool "Switch to normal if CMOS says so"
240
241endchoice
242
Martin Roth408fda72016-12-15 16:04:55 -0700243config SKIP_MAX_REBOOT_CNT_CLEAR
244 bool "Do not clear reboot count after successful boot"
245 depends on BOOTBLOCK_NORMAL
246 help
247 Do not clear the reboot count immediately after successful boot.
248 Set to allow the payload to control normal/fallback image recovery.
249 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100250 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600251
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700252config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100253 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600254 depends on HAVE_ACPI_TABLES
255 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700256 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700257
258config COLLECT_TIMESTAMPS_NO_TSC
259 bool
260 default n
261 depends on COLLECT_TIMESTAMPS
262 help
263 Use a non-TSC platform-dependent source for timestamps.
264
265config COLLECT_TIMESTAMPS_TSC
266 bool
267 default y if !COLLECT_TIMESTAMPS_NO_TSC
268 default n
269 depends on COLLECT_TIMESTAMPS
270 help
271 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600272
273config PAGING_IN_CACHE_AS_RAM
274 bool
275 default n
276 depends on ARCH_X86
277 help
278 Chipsets scan select this option to preallocate area in cache-as-ram
279 for storing paging data structures. PAE paging is currently the
280 only thing being supported.
281
282config NUM_CAR_PAGE_TABLE_PAGES
283 int
284 default 5
285 depends on PAGING_IN_CACHE_AS_RAM
286 help
287 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600288
289# Provide the interrupt handlers to every stage. Not all
290# stages may take advantage.
291config IDT_IN_EVERY_STAGE
292 bool
293 default n
294 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200295
296config HAVE_CF9_RESET
297 bool
298
299config HAVE_CF9_RESET_PREPARE
300 bool
301 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300302
303config PIRQ_ROUTE
304 bool
305 default n
306
307config MAX_PIRQ_LINKS
308 int
309 default 4
310 depends on PIRQ_ROUTE
311 help
312 This variable specifies the number of PIRQ interrupt links which are
313 routable. On most chipsets, this is 4, INTA through INTD. Some
314 chipsets offer more than four links, commonly up to INTH. They may
315 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
316 table specifies links greater than 4, pirq_route_irqs will not
317 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100318
Duncan Laurief02bf352020-03-17 18:32:54 -0700319config MAX_ACPI_TABLE_SIZE_KB
320 int
321 default 144
322 help
323 Set the maximum size of all ACPI tables in KiB.
324
Furquan Shaikh46514c22020-06-11 11:59:07 -0700325config MEMLAYOUT_LD_FILE
326 string
327 default "src/arch/x86/memlayout.ld"
328
Robert Zieba3f01cd12022-04-14 10:36:15 -0600329config DEBUG_HW_BREAKPOINTS
330 bool
331 default y
332 help
333 Enable support for hardware data and instruction breakpoints through
334 the x86 debug registers
335
336config DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
337 bool
338 default y
339 depends on DEBUG_HW_BREAKPOINTS && IDT_IN_EVERY_STAGE
340
341config DEBUG_NULL_DEREF_BREAKPOINTS
342 bool
343 default y
344 depends on DEBUG_HW_BREAKPOINTS
345 help
346 Enable support for catching null dereferences and instruction execution
347
348config DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES
349 bool
350 default y
351 depends on DEBUG_NULL_DEREF_BREAKPOINTS && DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
352
353config DEBUG_NULL_DEREF_HALT
354 bool
355 default n
356 depends on DEBUG_NULL_DEREF_BREAKPOINTS
357 help
358 When enabled null dereferences and instruction fetches will halt execution.
359 Otherwise an error will be printed.
360
Bill XIEf0215b42021-03-20 21:06:11 +0800361# Some EC need an "EC firmware pointer" (a data structure hinting the address
362# of its firmware blobs) being put at a fixed position. Its space
363# (__section__(".ecfw_ptr")) should be reserved if it lies in the range of a
364# stage. Different EC may have different format and/or value for it. The actual
365# address of EC firmware pointer should be provided in the Kconfig of the EC
366# requiring it, and its value could be filled by linking a read-only global
367# data object to the section above.
368
369config ECFW_PTR_ADDR
370 hex
371 help
372 Address of reserved space for EC firmware pointer, which should not
373 overlap other data such as reset vector or FIT pointer if present.
374
375config ECFW_PTR_SIZE
376 int
377 help
378 Size of reserved space for EC firmware pointer
379
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100380endif