blob: 8d2295b7ad4b59c8070f12b8d247c2ed1ad723bd [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
Martin Roth0cd9ff82016-02-01 17:33:37 -070095config USE_MARCH_586
96 def_bool n
97 help
98 Allow a platform or processor to select to be compiled using
99 the '-march=i586' option instead of the typical '-march=i686'
100
Uwe Hermann168b11b2009-10-07 16:15:40 +0000101# This is an SMP option. It relates to starting up APs.
102# It is usually set in mainboard/*/Kconfig.
103# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +0200104config AP_IN_SIPI_WAIT
105 bool
106 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -0700107 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +0000108
Martin Roth8418fd42019-04-22 16:26:23 -0600109config RESET_VECTOR_IN_RAM
110 bool
111 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200112 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -0600113 help
Felix Heldca928c62020-04-04 01:47:37 +0200114 Select this option if the x86 processor's reset vector is in
115 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -0600116
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300117# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
118# can boot AP CPUs to enable their shared caches.
119config SIPI_VECTOR_IN_ROM
120 bool
121 default n
122 depends on ARCH_X86
123
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700124# Traditionally BIOS region on SPI flash boot media was memory mapped right below
125# 4G and it was the last region in the IFD. This way translation between CPU
126# address space to flash address was trivial. However some IFDs on newer SoCs
Raul E Rangele92a9822021-06-24 16:54:27 -0600127# have BIOS region sandwiched between descriptor and other regions. Turning on
128# X86_CUSTOM_BOOTMEDIA disables X86_TOP4G_BOOTMEDIA_MAP which allows the
129# soc code to provide custom mmap_boot.c.
130config X86_CUSTOM_BOOTMEDIA
131 bool
132
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700133config X86_TOP4G_BOOTMEDIA_MAP
134 bool
Raul E Rangele92a9822021-06-24 16:54:27 -0600135 depends on !X86_CUSTOM_BOOTMEDIA
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700136 default y
137
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530138config PRERAM_CBMEM_CONSOLE_SIZE
139 hex
140 default 0xc00
141 help
142 Increase this value if preram cbmem console is getting truncated
143
Julius Wernerbaf27db2019-10-02 17:28:56 -0700144config CBFS_MCACHE_SIZE
145 hex
146 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700147 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700148 help
Julius Werner40acfe72021-05-12 15:59:58 -0700149 Increase this value if you see CBFS mcache overflow warnings. Do NOT
150 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700151
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000152config PC80_SYSTEM
153 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700154 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000155
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700156config BOOTBLOCK_DEBUG_SPINLOOP
157 bool
158 default n
159 help
160 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
161 for a JTAG debugger to break into the execution sequence.
162
Patrick Georgia865b172011-01-14 07:40:24 +0000163config HAVE_CMOS_DEFAULT
164 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700165 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000166
167config CMOS_DEFAULT_FILE
168 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200169 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000170 depends on HAVE_CMOS_DEFAULT
171
Felix Held4e037272022-02-23 16:35:58 +0100172config HPET_MIN_TICKS
173 hex
174
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600175config C_ENV_BOOTBLOCK_SIZE
176 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300177 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
178 help
179 This is only the default maximum of bootblock size for linking
180 purposes. Platforms may provide different limit and need to
181 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800182
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200183config FIXED_BOOTBLOCK_SIZE
184 bool
185
Andrey Petrovccd300b2016-02-28 22:04:51 -0800186# Default address romstage is to be linked at
187config ROMSTAGE_ADDR
188 hex
189 default 0x2000000
190
191# Default address verstage is to be linked at
192config VERSTAGE_ADDR
193 hex
194 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500195
196# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200197# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500198config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300199 def_bool y
200 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200201 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700202
203config VERSTAGE_DEBUG_SPINLOOP
204 bool
205 default n
206 help
207 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
208 for a JTAG debugger to break into the execution sequence.
209
210config ROMSTAGE_DEBUG_SPINLOOP
211 bool
212 default n
213 help
214 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
215 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700216
217choice
218 prompt "Bootblock behaviour"
219 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200220 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700221
222config BOOTBLOCK_SIMPLE
223 bool "Always load fallback"
224
225config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200226 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700227 bool "Switch to normal if CMOS says so"
228
229endchoice
230
Martin Roth408fda72016-12-15 16:04:55 -0700231config SKIP_MAX_REBOOT_CNT_CLEAR
232 bool "Do not clear reboot count after successful boot"
233 depends on BOOTBLOCK_NORMAL
234 help
235 Do not clear the reboot count immediately after successful boot.
236 Set to allow the payload to control normal/fallback image recovery.
237 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100238 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600239
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700240config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100241 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600242 depends on HAVE_ACPI_TABLES
243 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700244 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700245
246config COLLECT_TIMESTAMPS_NO_TSC
247 bool
248 default n
249 depends on COLLECT_TIMESTAMPS
250 help
251 Use a non-TSC platform-dependent source for timestamps.
252
253config COLLECT_TIMESTAMPS_TSC
254 bool
255 default y if !COLLECT_TIMESTAMPS_NO_TSC
256 default n
257 depends on COLLECT_TIMESTAMPS
258 help
259 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600260
261config PAGING_IN_CACHE_AS_RAM
262 bool
263 default n
264 depends on ARCH_X86
265 help
266 Chipsets scan select this option to preallocate area in cache-as-ram
267 for storing paging data structures. PAE paging is currently the
268 only thing being supported.
269
270config NUM_CAR_PAGE_TABLE_PAGES
271 int
272 default 5
273 depends on PAGING_IN_CACHE_AS_RAM
274 help
275 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600276
277# Provide the interrupt handlers to every stage. Not all
278# stages may take advantage.
279config IDT_IN_EVERY_STAGE
280 bool
281 default n
282 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200283
284config HAVE_CF9_RESET
285 bool
286
287config HAVE_CF9_RESET_PREPARE
288 bool
289 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300290
291config PIRQ_ROUTE
292 bool
293 default n
294
295config MAX_PIRQ_LINKS
296 int
297 default 4
298 depends on PIRQ_ROUTE
299 help
300 This variable specifies the number of PIRQ interrupt links which are
301 routable. On most chipsets, this is 4, INTA through INTD. Some
302 chipsets offer more than four links, commonly up to INTH. They may
303 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
304 table specifies links greater than 4, pirq_route_irqs will not
305 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100306
Duncan Laurief02bf352020-03-17 18:32:54 -0700307config MAX_ACPI_TABLE_SIZE_KB
308 int
309 default 144
310 help
311 Set the maximum size of all ACPI tables in KiB.
312
Furquan Shaikh46514c22020-06-11 11:59:07 -0700313config MEMLAYOUT_LD_FILE
314 string
315 default "src/arch/x86/memlayout.ld"
316
Robert Zieba3f01cd12022-04-14 10:36:15 -0600317config DEBUG_HW_BREAKPOINTS
318 bool
319 default y
320 help
321 Enable support for hardware data and instruction breakpoints through
322 the x86 debug registers
323
324config DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
325 bool
326 default y
327 depends on DEBUG_HW_BREAKPOINTS && IDT_IN_EVERY_STAGE
328
329config DEBUG_NULL_DEREF_BREAKPOINTS
330 bool
331 default y
332 depends on DEBUG_HW_BREAKPOINTS
333 help
334 Enable support for catching null dereferences and instruction execution
335
336config DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES
337 bool
338 default y
339 depends on DEBUG_NULL_DEREF_BREAKPOINTS && DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
340
341config DEBUG_NULL_DEREF_HALT
342 bool
343 default n
344 depends on DEBUG_NULL_DEREF_BREAKPOINTS
345 help
346 When enabled null dereferences and instruction fetches will halt execution.
347 Otherwise an error will be printed.
348
Bill XIEf0215b42021-03-20 21:06:11 +0800349# Some EC need an "EC firmware pointer" (a data structure hinting the address
350# of its firmware blobs) being put at a fixed position. Its space
351# (__section__(".ecfw_ptr")) should be reserved if it lies in the range of a
352# stage. Different EC may have different format and/or value for it. The actual
353# address of EC firmware pointer should be provided in the Kconfig of the EC
354# requiring it, and its value could be filled by linking a read-only global
355# data object to the section above.
356
357config ECFW_PTR_ADDR
358 hex
359 help
360 Address of reserved space for EC firmware pointer, which should not
361 overlap other data such as reset vector or FIT pointer if present.
362
363config ECFW_PTR_SIZE
364 int
365 help
366 Size of reserved space for EC firmware pointer
367
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100368endif