blob: 1003376deecc9557d666e372fd7167737c02feac [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
31 select ARCH_BOOTBLOCK_X86_32
32 select ARCH_VERSTAGE_X86_32
33 select ARCH_ROMSTAGE_X86_32
34 select ARCH_RAMSTAGE_X86_32
35
Stefan Reinauer68671202015-03-15 04:34:03 +010036# stage selectors for x64
37
38config ARCH_BOOTBLOCK_X86_64
39 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010040
41config ARCH_VERSTAGE_X86_64
42 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010043
44config ARCH_ROMSTAGE_X86_64
45 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010046
Patrick Georgi29eeece2018-10-31 14:24:47 +010047config ARCH_POSTCAR_X86_64
48 bool
49 default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
50
Stefan Reinauer68671202015-03-15 04:34:03 +010051config ARCH_RAMSTAGE_X86_64
52 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010053
Angel Pons2db779072020-09-25 10:14:45 +020054config ARCH_ALL_STAGES_X86_64
55 bool
56 select ARCH_BOOTBLOCK_X86_64
57 select ARCH_VERSTAGE_X86_64
58 select ARCH_ROMSTAGE_X86_64
59 select ARCH_RAMSTAGE_X86_64
60
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020061config ARCH_X86_64_PGTBL_LOC
62 hex "x86_64 page table location in CBFS"
63 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010064 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020065 help
66 The position where to place pagetables. Needs to be known at
67 compile time. Must not overlap other files in CBFS.
68
Martin Roth0cd9ff82016-02-01 17:33:37 -070069config USE_MARCH_586
70 def_bool n
71 help
72 Allow a platform or processor to select to be compiled using
73 the '-march=i586' option instead of the typical '-march=i686'
74
Uwe Hermann168b11b2009-10-07 16:15:40 +000075# This is an SMP option. It relates to starting up APs.
76# It is usually set in mainboard/*/Kconfig.
77# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020078config AP_IN_SIPI_WAIT
79 bool
80 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -070081 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +000082
Martin Roth8418fd42019-04-22 16:26:23 -060083config RESET_VECTOR_IN_RAM
84 bool
85 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +020086 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -060087 help
Felix Heldca928c62020-04-04 01:47:37 +020088 Select this option if the x86 processor's reset vector is in
89 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -060090
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +030091# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
92# can boot AP CPUs to enable their shared caches.
93config SIPI_VECTOR_IN_ROM
94 bool
95 default n
96 depends on ARCH_X86
97
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -070098# Set the rambase for systems that still need it, only 5 chipsets as of
99# Sep 2018. This value was 0x100000, chosen to match the entry point
100# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
101# for as long as we need it; with luck, that won't be much longer.
102# In the long term, both RAMBASE and RAMTOP should be removed.
103# This value leaves more than 1 MiB which is required for fam10
104# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000105config RAMBASE
106 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700107 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000108
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300109config RAMTOP
110 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700111 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300112 depends on ARCH_X86
113
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700114# Traditionally BIOS region on SPI flash boot media was memory mapped right below
115# 4G and it was the last region in the IFD. This way translation between CPU
116# address space to flash address was trivial. However some IFDs on newer SoCs
117# have BIOS region sandwiched between descriptor and other regions. Turning off
118# this option enables soc code to provide custom mmap_boot.c which can be used to
119# implement complex translation.
120config X86_TOP4G_BOOTMEDIA_MAP
121 bool
122 default y
123
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200124# This is something you almost certainly don't want to mess with.
125# How many SIPIs do we send when starting up APs and cores?
126# The answer in 2000 or so was '2'. Nowadays, on many systems,
127# it is 1. Set a safe default here, and you can override it
128# on reasonable platforms.
129config NUM_IPI_STARTS
130 int
131 default 2
132
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530133config PRERAM_CBMEM_CONSOLE_SIZE
134 hex
135 default 0xc00
136 help
137 Increase this value if preram cbmem console is getting truncated
138
Julius Wernerbaf27db2019-10-02 17:28:56 -0700139config CBFS_MCACHE_SIZE
140 hex
141 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700142 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700143 help
Julius Werner40acfe72021-05-12 15:59:58 -0700144 Increase this value if you see CBFS mcache overflow warnings. Do NOT
145 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700146
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000147config PC80_SYSTEM
148 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700149 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000150
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700151config BOOTBLOCK_DEBUG_SPINLOOP
152 bool
153 default n
154 help
155 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
156 for a JTAG debugger to break into the execution sequence.
157
Patrick Georgia865b172011-01-14 07:40:24 +0000158config HAVE_CMOS_DEFAULT
159 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700160 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000161
162config CMOS_DEFAULT_FILE
163 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200164 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000165 depends on HAVE_CMOS_DEFAULT
166
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300167config HPET_ADDRESS_OVERRIDE
168 def_bool n
169
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200170config HPET_ADDRESS
171 hex
172 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
173
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600174config C_ENV_BOOTBLOCK_SIZE
175 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300176 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
177 help
178 This is only the default maximum of bootblock size for linking
179 purposes. Platforms may provide different limit and need to
180 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800181
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200182config FIXED_BOOTBLOCK_SIZE
183 bool
184
Andrey Petrovccd300b2016-02-28 22:04:51 -0800185# Default address romstage is to be linked at
186config ROMSTAGE_ADDR
187 hex
188 default 0x2000000
189
190# Default address verstage is to be linked at
191config VERSTAGE_ADDR
192 hex
193 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500194
195# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200196# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500197config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300198 def_bool y
199 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200200 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700201
202config VERSTAGE_DEBUG_SPINLOOP
203 bool
204 default n
205 help
206 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
207 for a JTAG debugger to break into the execution sequence.
208
209config ROMSTAGE_DEBUG_SPINLOOP
210 bool
211 default n
212 help
213 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
214 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700215
216choice
217 prompt "Bootblock behaviour"
218 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200219 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700220
221config BOOTBLOCK_SIMPLE
222 bool "Always load fallback"
223
224config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200225 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700226 bool "Switch to normal if CMOS says so"
227
228endchoice
229
Martin Roth408fda72016-12-15 16:04:55 -0700230config SKIP_MAX_REBOOT_CNT_CLEAR
231 bool "Do not clear reboot count after successful boot"
232 depends on BOOTBLOCK_NORMAL
233 help
234 Do not clear the reboot count immediately after successful boot.
235 Set to allow the payload to control normal/fallback image recovery.
236 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100237 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600238
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700239config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100240 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600241 depends on HAVE_ACPI_TABLES
242 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700243 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700244
245config COLLECT_TIMESTAMPS_NO_TSC
246 bool
247 default n
248 depends on COLLECT_TIMESTAMPS
249 help
250 Use a non-TSC platform-dependent source for timestamps.
251
252config COLLECT_TIMESTAMPS_TSC
253 bool
254 default y if !COLLECT_TIMESTAMPS_NO_TSC
255 default n
256 depends on COLLECT_TIMESTAMPS
257 help
258 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600259
260config PAGING_IN_CACHE_AS_RAM
261 bool
262 default n
263 depends on ARCH_X86
264 help
265 Chipsets scan select this option to preallocate area in cache-as-ram
266 for storing paging data structures. PAE paging is currently the
267 only thing being supported.
268
269config NUM_CAR_PAGE_TABLE_PAGES
270 int
271 default 5
272 depends on PAGING_IN_CACHE_AS_RAM
273 help
274 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600275
276# Provide the interrupt handlers to every stage. Not all
277# stages may take advantage.
278config IDT_IN_EVERY_STAGE
279 bool
280 default n
281 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200282
283config HAVE_CF9_RESET
284 bool
285
286config HAVE_CF9_RESET_PREPARE
287 bool
288 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300289
290config PIRQ_ROUTE
291 bool
292 default n
293
294config MAX_PIRQ_LINKS
295 int
296 default 4
297 depends on PIRQ_ROUTE
298 help
299 This variable specifies the number of PIRQ interrupt links which are
300 routable. On most chipsets, this is 4, INTA through INTD. Some
301 chipsets offer more than four links, commonly up to INTH. They may
302 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
303 table specifies links greater than 4, pirq_route_irqs will not
304 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100305
Duncan Laurief02bf352020-03-17 18:32:54 -0700306config MAX_ACPI_TABLE_SIZE_KB
307 int
308 default 144
309 help
310 Set the maximum size of all ACPI tables in KiB.
311
Furquan Shaikh46514c22020-06-11 11:59:07 -0700312config MEMLAYOUT_LD_FILE
313 string
314 default "src/arch/x86/memlayout.ld"
315
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100316endif