blob: d2ae320810f90587ae62db8e42c8fe8a013274c4 [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
Elyes Haouasb6efe172024-03-03 17:41:34 +01008 select ARCH_SUPPORTS_CLANG
Stefan Reinauera48ca842015-04-04 01:58:28 +02009
Angel Pons8e035e32021-06-22 12:58:20 +020010if ARCH_X86
11
Stefan Reinauer68671202015-03-15 04:34:03 +010012# stage selectors for x86
13
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070014config ARCH_BOOTBLOCK_X86_32
Gabe Black5fbfc912013-07-07 13:52:37 -070015 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070016
Stefan Reinauer77b16552015-01-14 19:51:47 +010017config ARCH_VERSTAGE_X86_32
18 bool
Stefan Reinauer77b16552015-01-14 19:51:47 +010019
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070020config ARCH_ROMSTAGE_X86_32
21 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070022
Patrick Georgi29eeece2018-10-31 14:24:47 +010023config ARCH_POSTCAR_X86_32
24 bool
25 default ARCH_ROMSTAGE_X86_32 && POSTCAR_STAGE
26
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070027config ARCH_RAMSTAGE_X86_32
28 bool
Gabe Black5fbfc912013-07-07 13:52:37 -070029
Angel Ponsa32df262020-09-25 10:20:11 +020030config ARCH_ALL_STAGES_X86_32
31 bool
Arthur Heymans6e857402022-11-12 16:16:02 +010032 default !ARCH_ALL_STAGES_X86_64
Angel Ponsa32df262020-09-25 10:20:11 +020033 select ARCH_BOOTBLOCK_X86_32
Arthur Heymans6e857402022-11-12 16:16:02 +010034 select ARCH_VERSTAGE_X86_32 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
Angel Ponsa32df262020-09-25 10:20:11 +020035 select ARCH_ROMSTAGE_X86_32
36 select ARCH_RAMSTAGE_X86_32
37
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
67
Arthur Heymansd293b202024-02-02 19:35:13 +010068config HAVE_X86_64_SUPPORT
Angel Pons16fe5e12021-06-22 15:41:59 +020069 bool
70 help
71 Enable experimental support to build and run coreboot in 64-bit mode.
72 When selecting this option for a new platform, it is highly advisable
73 to provide a config file for Jenkins to build-test the 64-bit option.
74
Arthur Heymansd293b202024-02-02 19:35:13 +010075config USE_X86_64_SUPPORT
76 bool "Run coreboot in long (64-bit) mode"
77 depends on HAVE_X86_64_SUPPORT
Angel Pons16fe5e12021-06-22 15:41:59 +020078 select ARCH_ALL_STAGES_X86_64
79 help
80 When set, most of coreboot runs in long (64-bit) mode instead of the
81 usual protected flat (32-bit) mode. 64-bit CPUs and OSes can be used
Arthur Heymansd293b202024-02-02 19:35:13 +010082 irrespective of whether coreboot runs in 32-bit or 64-bit mode.
Angel Pons16fe5e12021-06-22 15:41:59 +020083
Arthur Heymansee83be42024-02-02 18:49:53 +010084config PAGE_TABLES_IN_CBFS
85 bool
86 default n
87
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020088config ARCH_X86_64_PGTBL_LOC
89 hex "x86_64 page table location in CBFS"
Arthur Heymansee83be42024-02-02 18:49:53 +010090 depends on ARCH_BOOTBLOCK_X86_64 && PAGE_TABLES_IN_CBFS
Patrick Rudolph19a60a42019-11-30 09:40:52 +010091 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020092 help
93 The position where to place pagetables. Needs to be known at
94 compile time. Must not overlap other files in CBFS.
95
Felix Held3748fca2023-09-12 14:48:38 +020096config RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT
97 bool
98 help
99 On some systems, the upper physical address bits are reserved and
100 used as a tag which is typically related to a memory encryption
101 feature. When selecting this option, the SoC code needs to implement
102 get_reserved_phys_addr_bits so that the common code knows how many of
103 the most significant physical address bits are reserved and can't be
104 used as address bits.
105
Uwe Hermann168b11b2009-10-07 16:15:40 +0000106# This is an SMP option. It relates to starting up APs.
107# It is usually set in mainboard/*/Kconfig.
108# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +0200109config AP_IN_SIPI_WAIT
110 bool
111 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -0700112 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +0000113
Martin Roth8418fd42019-04-22 16:26:23 -0600114config RESET_VECTOR_IN_RAM
115 bool
116 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200117 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -0600118 help
Felix Heldca928c62020-04-04 01:47:37 +0200119 Select this option if the x86 processor's reset vector is in
120 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -0600121
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300122# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
123# can boot AP CPUs to enable their shared caches.
124config SIPI_VECTOR_IN_ROM
125 bool
126 default n
127 depends on ARCH_X86
128
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700129# Traditionally BIOS region on SPI flash boot media was memory mapped right below
130# 4G and it was the last region in the IFD. This way translation between CPU
131# address space to flash address was trivial. However some IFDs on newer SoCs
Raul E Rangele92a9822021-06-24 16:54:27 -0600132# have BIOS region sandwiched between descriptor and other regions. Turning on
133# X86_CUSTOM_BOOTMEDIA disables X86_TOP4G_BOOTMEDIA_MAP which allows the
134# soc code to provide custom mmap_boot.c.
135config X86_CUSTOM_BOOTMEDIA
136 bool
137
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700138config X86_TOP4G_BOOTMEDIA_MAP
139 bool
Raul E Rangele92a9822021-06-24 16:54:27 -0600140 depends on !X86_CUSTOM_BOOTMEDIA
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700141 default y
142
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530143config PRERAM_CBMEM_CONSOLE_SIZE
144 hex
145 default 0xc00
146 help
147 Increase this value if preram cbmem console is getting truncated
148
Julius Wernerbaf27db2019-10-02 17:28:56 -0700149config CBFS_MCACHE_SIZE
150 hex
151 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700152 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700153 help
Julius Werner40acfe72021-05-12 15:59:58 -0700154 Increase this value if you see CBFS mcache overflow warnings. Do NOT
155 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700156
Jeremy Compostella052fb7c2023-08-18 14:25:22 -0700157config PRERAM_CBFS_CACHE_SIZE
158 hex
159 default 0x4000
160 help
161 Define the size of the Pre-RAM stages CBFS cache. A size of
162 zero disables the CBFS cache feature in pre-memory stages.
163
Jeremy Compostella226f51c2023-10-12 09:40:12 -0700164config POSTRAM_CBFS_CACHE_IN_BSS
165 bool
166 default y if !SOC_AMD_COMMON_BLOCK_NONCAR
167 help
168 Allocate the post-memory CBFS cache scratchpad in the .bss
169 section. CBFS cache will rely on a simple static C buffer
170 while traditionally CBFS cache memory region is reserved in
171 the device memory layout.
172
173config RAMSTAGE_CBFS_CACHE_SIZE
174 hex
175 default 0x4000
176 depends on POSTRAM_CBFS_CACHE_IN_BSS
177 help
178 Define the size of the ramstage CBFS cache. A size of zero
179 disables the CBFS cache feature in ramstage.
180
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000181config PC80_SYSTEM
182 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700183 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000184
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700185config BOOTBLOCK_DEBUG_SPINLOOP
186 bool
187 default n
188 help
189 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
190 for a JTAG debugger to break into the execution sequence.
191
Patrick Georgia865b172011-01-14 07:40:24 +0000192config HAVE_CMOS_DEFAULT
193 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700194 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000195
196config CMOS_DEFAULT_FILE
197 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200198 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000199 depends on HAVE_CMOS_DEFAULT
200
Felix Held4e037272022-02-23 16:35:58 +0100201config HPET_MIN_TICKS
202 hex
203
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600204config C_ENV_BOOTBLOCK_SIZE
205 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300206 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
207 help
208 This is only the default maximum of bootblock size for linking
209 purposes. Platforms may provide different limit and need to
210 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800211
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200212config FIXED_BOOTBLOCK_SIZE
213 bool
214
Andrey Petrovccd300b2016-02-28 22:04:51 -0800215# Default address romstage is to be linked at
216config ROMSTAGE_ADDR
217 hex
218 default 0x2000000
219
220# Default address verstage is to be linked at
221config VERSTAGE_ADDR
222 hex
223 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500224
225# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200226# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500227config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300228 def_bool y
229 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200230 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700231
232config VERSTAGE_DEBUG_SPINLOOP
233 bool
234 default n
235 help
236 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
237 for a JTAG debugger to break into the execution sequence.
238
239config ROMSTAGE_DEBUG_SPINLOOP
240 bool
241 default n
242 help
243 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
244 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700245
246choice
247 prompt "Bootblock behaviour"
248 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200249 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700250
251config BOOTBLOCK_SIMPLE
252 bool "Always load fallback"
253
254config BOOTBLOCK_NORMAL
255 bool "Switch to normal if CMOS says so"
Arthur Heymans9bbfafb2024-02-18 14:02:35 +0100256 select CONFIGURABLE_CBFS_PREFIX
257 select SEPARATE_ROMSTAGE
Martin Roth408fda72016-12-15 16:04:55 -0700258
259endchoice
260
Martin Roth408fda72016-12-15 16:04:55 -0700261config SKIP_MAX_REBOOT_CNT_CLEAR
262 bool "Do not clear reboot count after successful boot"
263 depends on BOOTBLOCK_NORMAL
264 help
265 Do not clear the reboot count immediately after successful boot.
266 Set to allow the payload to control normal/fallback image recovery.
267 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100268 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600269
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700270config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100271 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600272 depends on HAVE_ACPI_TABLES
273 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700274 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700275
276config COLLECT_TIMESTAMPS_NO_TSC
277 bool
278 default n
279 depends on COLLECT_TIMESTAMPS
280 help
281 Use a non-TSC platform-dependent source for timestamps.
282
283config COLLECT_TIMESTAMPS_TSC
284 bool
285 default y if !COLLECT_TIMESTAMPS_NO_TSC
286 default n
287 depends on COLLECT_TIMESTAMPS
288 help
289 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600290
291config PAGING_IN_CACHE_AS_RAM
292 bool
293 default n
294 depends on ARCH_X86
295 help
296 Chipsets scan select this option to preallocate area in cache-as-ram
297 for storing paging data structures. PAE paging is currently the
298 only thing being supported.
299
300config NUM_CAR_PAGE_TABLE_PAGES
301 int
302 default 5
303 depends on PAGING_IN_CACHE_AS_RAM
304 help
305 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600306
307# Provide the interrupt handlers to every stage. Not all
308# stages may take advantage.
309config IDT_IN_EVERY_STAGE
310 bool
311 default n
312 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200313
314config HAVE_CF9_RESET
315 bool
316
317config HAVE_CF9_RESET_PREPARE
318 bool
319 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300320
Felix Held6759ad32023-12-14 20:49:59 +0100321config HAVE_CONFIGURABLE_APMC_SMI_PORT
322 bool
323 help
324 SoCs that have a configurable APMC SMI command port, should select
325 this option and implement pm_acpi_smi_cmd_port() that returns the IO
326 port.
327
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300328config PIRQ_ROUTE
329 bool
330 default n
331
332config MAX_PIRQ_LINKS
333 int
334 default 4
335 depends on PIRQ_ROUTE
336 help
337 This variable specifies the number of PIRQ interrupt links which are
338 routable. On most chipsets, this is 4, INTA through INTD. Some
339 chipsets offer more than four links, commonly up to INTH. They may
340 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
341 table specifies links greater than 4, pirq_route_irqs will not
342 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100343
Furquan Shaikh46514c22020-06-11 11:59:07 -0700344config MEMLAYOUT_LD_FILE
345 string
346 default "src/arch/x86/memlayout.ld"
347
Robert Zieba3f01cd12022-04-14 10:36:15 -0600348config DEBUG_HW_BREAKPOINTS
349 bool
350 default y
351 help
352 Enable support for hardware data and instruction breakpoints through
353 the x86 debug registers
354
355config DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
356 bool
357 default y
358 depends on DEBUG_HW_BREAKPOINTS && IDT_IN_EVERY_STAGE
359
360config DEBUG_NULL_DEREF_BREAKPOINTS
361 bool
362 default y
363 depends on DEBUG_HW_BREAKPOINTS
364 help
365 Enable support for catching null dereferences and instruction execution
366
367config DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES
368 bool
369 default y
370 depends on DEBUG_NULL_DEREF_BREAKPOINTS && DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES
371
372config DEBUG_NULL_DEREF_HALT
373 bool
374 default n
375 depends on DEBUG_NULL_DEREF_BREAKPOINTS
376 help
377 When enabled null dereferences and instruction fetches will halt execution.
378 Otherwise an error will be printed.
379
Bill XIEf0215b42021-03-20 21:06:11 +0800380# Some EC need an "EC firmware pointer" (a data structure hinting the address
381# of its firmware blobs) being put at a fixed position. Its space
382# (__section__(".ecfw_ptr")) should be reserved if it lies in the range of a
383# stage. Different EC may have different format and/or value for it. The actual
384# address of EC firmware pointer should be provided in the Kconfig of the EC
385# requiring it, and its value could be filled by linking a read-only global
386# data object to the section above.
387
388config ECFW_PTR_ADDR
389 hex
390 help
391 Address of reserved space for EC firmware pointer, which should not
392 overlap other data such as reset vector or FIT pointer if present.
393
394config ECFW_PTR_SIZE
395 int
396 help
397 Size of reserved space for EC firmware pointer
398
Eric Laic1ef4f32023-06-12 14:27:54 +0800399config DUMP_SMBIOS_TYPE17
Eric Lai8bbe8502023-06-26 07:56:39 +0800400 bool "Dump part of SMBIOS type17 dimm information"
Eric Laic1ef4f32023-06-12 14:27:54 +0800401 depends on GENERATE_SMBIOS_TABLES
402
Jeremy Compostellaba757a72023-12-20 09:07:04 -0800403config SOC_PHYSICAL_ADDRESS_WIDTH
404 int
405 default 0
406 help
407 On some System-on-Chip the physical address size available
408 at the SoC level may be different than at the CPU
409 level. This configuration can be use to set the physical
410 address width (in bits) of the SoC.
411
412 If not set, both CPU and SoC physical address width are
413 assume to be the same.
414
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100415endif