blob: 6af3fa8b694f56c48013bc8fc4c320d4465262cf [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
36
Stefan Reinauer68671202015-03-15 04:34:03 +010037# stage selectors for x64
38
39config ARCH_BOOTBLOCK_X86_64
40 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010041
42config ARCH_VERSTAGE_X86_64
43 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010044
45config ARCH_ROMSTAGE_X86_64
46 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010047
Patrick Georgi29eeece2018-10-31 14:24:47 +010048config ARCH_POSTCAR_X86_64
49 bool
50 default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
51
Stefan Reinauer68671202015-03-15 04:34:03 +010052config ARCH_RAMSTAGE_X86_64
53 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010054
Angel Pons2db779072020-09-25 10:14:45 +020055config ARCH_ALL_STAGES_X86_64
56 bool
57 select ARCH_BOOTBLOCK_X86_64
58 select ARCH_VERSTAGE_X86_64
59 select ARCH_ROMSTAGE_X86_64
60 select ARCH_RAMSTAGE_X86_64
61
Angel Pons6f5a6582021-06-22 15:18:07 +020062config ARCH_ALL_STAGES_X86
63 bool
64 default y
65
Angel Pons16fe5e12021-06-22 15:41:59 +020066config HAVE_EXP_X86_64_SUPPORT
67 bool
68 help
69 Enable experimental support to build and run coreboot in 64-bit mode.
70 When selecting this option for a new platform, it is highly advisable
71 to provide a config file for Jenkins to build-test the 64-bit option.
72
73config USE_EXP_X86_64_SUPPORT
74 bool "[EXPERIMENTAL] Run coreboot in long (64-bit) mode"
75 depends on HAVE_EXP_X86_64_SUPPORT
76 select ARCH_ALL_STAGES_X86_64
77 help
78 When set, most of coreboot runs in long (64-bit) mode instead of the
79 usual protected flat (32-bit) mode. 64-bit CPUs and OSes can be used
80 irrespective of whether coreboot runs in 32-bit or 64-bit mode. This
81 is an experimental option: do not enable unless one wants to test it
82 and has the means to recover a system when coreboot fails to boot.
83
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020084config ARCH_X86_64_PGTBL_LOC
85 hex "x86_64 page table location in CBFS"
86 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010087 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020088 help
89 The position where to place pagetables. Needs to be known at
90 compile time. Must not overlap other files in CBFS.
91
Martin Roth0cd9ff82016-02-01 17:33:37 -070092config USE_MARCH_586
93 def_bool n
94 help
95 Allow a platform or processor to select to be compiled using
96 the '-march=i586' option instead of the typical '-march=i686'
97
Uwe Hermann168b11b2009-10-07 16:15:40 +000098# This is an SMP option. It relates to starting up APs.
99# It is usually set in mainboard/*/Kconfig.
100# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +0200101config AP_IN_SIPI_WAIT
102 bool
103 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -0700104 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +0000105
Martin Roth8418fd42019-04-22 16:26:23 -0600106config RESET_VECTOR_IN_RAM
107 bool
108 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200109 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -0600110 help
Felix Heldca928c62020-04-04 01:47:37 +0200111 Select this option if the x86 processor's reset vector is in
112 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -0600113
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300114# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
115# can boot AP CPUs to enable their shared caches.
116config SIPI_VECTOR_IN_ROM
117 bool
118 default n
119 depends on ARCH_X86
120
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700121# Set the rambase for systems that still need it, only 5 chipsets as of
122# Sep 2018. This value was 0x100000, chosen to match the entry point
123# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
124# for as long as we need it; with luck, that won't be much longer.
125# In the long term, both RAMBASE and RAMTOP should be removed.
126# This value leaves more than 1 MiB which is required for fam10
127# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000128config RAMBASE
129 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700130 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000131
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300132config RAMTOP
133 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700134 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300135 depends on ARCH_X86
136
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700137# Traditionally BIOS region on SPI flash boot media was memory mapped right below
138# 4G and it was the last region in the IFD. This way translation between CPU
139# address space to flash address was trivial. However some IFDs on newer SoCs
Raul E Rangele92a9822021-06-24 16:54:27 -0600140# have BIOS region sandwiched between descriptor and other regions. Turning on
141# X86_CUSTOM_BOOTMEDIA disables X86_TOP4G_BOOTMEDIA_MAP which allows the
142# soc code to provide custom mmap_boot.c.
143config X86_CUSTOM_BOOTMEDIA
144 bool
145
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700146config X86_TOP4G_BOOTMEDIA_MAP
147 bool
Raul E Rangele92a9822021-06-24 16:54:27 -0600148 depends on !X86_CUSTOM_BOOTMEDIA
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700149 default y
150
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200151# This is something you almost certainly don't want to mess with.
152# How many SIPIs do we send when starting up APs and cores?
153# The answer in 2000 or so was '2'. Nowadays, on many systems,
154# it is 1. Set a safe default here, and you can override it
155# on reasonable platforms.
156config NUM_IPI_STARTS
157 int
158 default 2
159
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530160config PRERAM_CBMEM_CONSOLE_SIZE
161 hex
162 default 0xc00
163 help
164 Increase this value if preram cbmem console is getting truncated
165
Julius Wernerbaf27db2019-10-02 17:28:56 -0700166config CBFS_MCACHE_SIZE
167 hex
168 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700169 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700170 help
Julius Werner40acfe72021-05-12 15:59:58 -0700171 Increase this value if you see CBFS mcache overflow warnings. Do NOT
172 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700173
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000174config PC80_SYSTEM
175 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700176 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000177
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700178config BOOTBLOCK_DEBUG_SPINLOOP
179 bool
180 default n
181 help
182 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
183 for a JTAG debugger to break into the execution sequence.
184
Patrick Georgia865b172011-01-14 07:40:24 +0000185config HAVE_CMOS_DEFAULT
186 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700187 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000188
189config CMOS_DEFAULT_FILE
190 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200191 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000192 depends on HAVE_CMOS_DEFAULT
193
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300194config HPET_ADDRESS_OVERRIDE
195 def_bool n
196
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200197config HPET_ADDRESS
198 hex
199 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
200
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600201config C_ENV_BOOTBLOCK_SIZE
202 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300203 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
204 help
205 This is only the default maximum of bootblock size for linking
206 purposes. Platforms may provide different limit and need to
207 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800208
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200209config FIXED_BOOTBLOCK_SIZE
210 bool
211
Andrey Petrovccd300b2016-02-28 22:04:51 -0800212# Default address romstage is to be linked at
213config ROMSTAGE_ADDR
214 hex
215 default 0x2000000
216
217# Default address verstage is to be linked at
218config VERSTAGE_ADDR
219 hex
220 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500221
222# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200223# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500224config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300225 def_bool y
226 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200227 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700228
229config VERSTAGE_DEBUG_SPINLOOP
230 bool
231 default n
232 help
233 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
234 for a JTAG debugger to break into the execution sequence.
235
236config ROMSTAGE_DEBUG_SPINLOOP
237 bool
238 default n
239 help
240 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
241 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700242
243choice
244 prompt "Bootblock behaviour"
245 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200246 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700247
248config BOOTBLOCK_SIMPLE
249 bool "Always load fallback"
250
251config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200252 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700253 bool "Switch to normal if CMOS says so"
254
255endchoice
256
Martin Roth408fda72016-12-15 16:04:55 -0700257config SKIP_MAX_REBOOT_CNT_CLEAR
258 bool "Do not clear reboot count after successful boot"
259 depends on BOOTBLOCK_NORMAL
260 help
261 Do not clear the reboot count immediately after successful boot.
262 Set to allow the payload to control normal/fallback image recovery.
263 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100264 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600265
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700266config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100267 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600268 depends on HAVE_ACPI_TABLES
269 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700270 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700271
272config COLLECT_TIMESTAMPS_NO_TSC
273 bool
274 default n
275 depends on COLLECT_TIMESTAMPS
276 help
277 Use a non-TSC platform-dependent source for timestamps.
278
279config COLLECT_TIMESTAMPS_TSC
280 bool
281 default y if !COLLECT_TIMESTAMPS_NO_TSC
282 default n
283 depends on COLLECT_TIMESTAMPS
284 help
285 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600286
287config PAGING_IN_CACHE_AS_RAM
288 bool
289 default n
290 depends on ARCH_X86
291 help
292 Chipsets scan select this option to preallocate area in cache-as-ram
293 for storing paging data structures. PAE paging is currently the
294 only thing being supported.
295
296config NUM_CAR_PAGE_TABLE_PAGES
297 int
298 default 5
299 depends on PAGING_IN_CACHE_AS_RAM
300 help
301 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600302
303# Provide the interrupt handlers to every stage. Not all
304# stages may take advantage.
305config IDT_IN_EVERY_STAGE
306 bool
307 default n
308 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200309
310config HAVE_CF9_RESET
311 bool
312
313config HAVE_CF9_RESET_PREPARE
314 bool
315 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300316
317config PIRQ_ROUTE
318 bool
319 default n
320
321config MAX_PIRQ_LINKS
322 int
323 default 4
324 depends on PIRQ_ROUTE
325 help
326 This variable specifies the number of PIRQ interrupt links which are
327 routable. On most chipsets, this is 4, INTA through INTD. Some
328 chipsets offer more than four links, commonly up to INTH. They may
329 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
330 table specifies links greater than 4, pirq_route_irqs will not
331 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100332
Duncan Laurief02bf352020-03-17 18:32:54 -0700333config MAX_ACPI_TABLE_SIZE_KB
334 int
335 default 144
336 help
337 Set the maximum size of all ACPI tables in KiB.
338
Furquan Shaikh46514c22020-06-11 11:59:07 -0700339config MEMLAYOUT_LD_FILE
340 string
341 default "src/arch/x86/memlayout.ld"
342
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100343endif