blob: 2a42a1c7c71ca8abf189c2758637525ece8f1600 [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
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020066config ARCH_X86_64_PGTBL_LOC
67 hex "x86_64 page table location in CBFS"
68 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010069 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020070 help
71 The position where to place pagetables. Needs to be known at
72 compile time. Must not overlap other files in CBFS.
73
Martin Roth0cd9ff82016-02-01 17:33:37 -070074config USE_MARCH_586
75 def_bool n
76 help
77 Allow a platform or processor to select to be compiled using
78 the '-march=i586' option instead of the typical '-march=i686'
79
Uwe Hermann168b11b2009-10-07 16:15:40 +000080# This is an SMP option. It relates to starting up APs.
81# It is usually set in mainboard/*/Kconfig.
82# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020083config AP_IN_SIPI_WAIT
84 bool
85 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -070086 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +000087
Martin Roth8418fd42019-04-22 16:26:23 -060088config RESET_VECTOR_IN_RAM
89 bool
90 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +020091 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -060092 help
Felix Heldca928c62020-04-04 01:47:37 +020093 Select this option if the x86 processor's reset vector is in
94 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -060095
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +030096# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
97# can boot AP CPUs to enable their shared caches.
98config SIPI_VECTOR_IN_ROM
99 bool
100 default n
101 depends on ARCH_X86
102
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700103# Set the rambase for systems that still need it, only 5 chipsets as of
104# Sep 2018. This value was 0x100000, chosen to match the entry point
105# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
106# for as long as we need it; with luck, that won't be much longer.
107# In the long term, both RAMBASE and RAMTOP should be removed.
108# This value leaves more than 1 MiB which is required for fam10
109# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000110config RAMBASE
111 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700112 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000113
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300114config RAMTOP
115 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700116 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300117 depends on ARCH_X86
118
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700119# Traditionally BIOS region on SPI flash boot media was memory mapped right below
120# 4G and it was the last region in the IFD. This way translation between CPU
121# address space to flash address was trivial. However some IFDs on newer SoCs
122# have BIOS region sandwiched between descriptor and other regions. Turning off
123# this option enables soc code to provide custom mmap_boot.c which can be used to
124# implement complex translation.
125config X86_TOP4G_BOOTMEDIA_MAP
126 bool
127 default y
128
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200129# This is something you almost certainly don't want to mess with.
130# How many SIPIs do we send when starting up APs and cores?
131# The answer in 2000 or so was '2'. Nowadays, on many systems,
132# it is 1. Set a safe default here, and you can override it
133# on reasonable platforms.
134config NUM_IPI_STARTS
135 int
136 default 2
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
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300172config HPET_ADDRESS_OVERRIDE
173 def_bool n
174
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200175config HPET_ADDRESS
176 hex
177 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
178
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600179config C_ENV_BOOTBLOCK_SIZE
180 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300181 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
182 help
183 This is only the default maximum of bootblock size for linking
184 purposes. Platforms may provide different limit and need to
185 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800186
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200187config FIXED_BOOTBLOCK_SIZE
188 bool
189
Andrey Petrovccd300b2016-02-28 22:04:51 -0800190# Default address romstage is to be linked at
191config ROMSTAGE_ADDR
192 hex
193 default 0x2000000
194
195# Default address verstage is to be linked at
196config VERSTAGE_ADDR
197 hex
198 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500199
200# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200201# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500202config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300203 def_bool y
204 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200205 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700206
207config VERSTAGE_DEBUG_SPINLOOP
208 bool
209 default n
210 help
211 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
212 for a JTAG debugger to break into the execution sequence.
213
214config ROMSTAGE_DEBUG_SPINLOOP
215 bool
216 default n
217 help
218 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
219 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700220
221choice
222 prompt "Bootblock behaviour"
223 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200224 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700225
226config BOOTBLOCK_SIMPLE
227 bool "Always load fallback"
228
229config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200230 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700231 bool "Switch to normal if CMOS says so"
232
233endchoice
234
Martin Roth408fda72016-12-15 16:04:55 -0700235config SKIP_MAX_REBOOT_CNT_CLEAR
236 bool "Do not clear reboot count after successful boot"
237 depends on BOOTBLOCK_NORMAL
238 help
239 Do not clear the reboot count immediately after successful boot.
240 Set to allow the payload to control normal/fallback image recovery.
241 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100242 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600243
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700244config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100245 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600246 depends on HAVE_ACPI_TABLES
247 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700248 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700249
250config COLLECT_TIMESTAMPS_NO_TSC
251 bool
252 default n
253 depends on COLLECT_TIMESTAMPS
254 help
255 Use a non-TSC platform-dependent source for timestamps.
256
257config COLLECT_TIMESTAMPS_TSC
258 bool
259 default y if !COLLECT_TIMESTAMPS_NO_TSC
260 default n
261 depends on COLLECT_TIMESTAMPS
262 help
263 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600264
265config PAGING_IN_CACHE_AS_RAM
266 bool
267 default n
268 depends on ARCH_X86
269 help
270 Chipsets scan select this option to preallocate area in cache-as-ram
271 for storing paging data structures. PAE paging is currently the
272 only thing being supported.
273
274config NUM_CAR_PAGE_TABLE_PAGES
275 int
276 default 5
277 depends on PAGING_IN_CACHE_AS_RAM
278 help
279 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600280
281# Provide the interrupt handlers to every stage. Not all
282# stages may take advantage.
283config IDT_IN_EVERY_STAGE
284 bool
285 default n
286 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200287
288config HAVE_CF9_RESET
289 bool
290
291config HAVE_CF9_RESET_PREPARE
292 bool
293 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300294
295config PIRQ_ROUTE
296 bool
297 default n
298
299config MAX_PIRQ_LINKS
300 int
301 default 4
302 depends on PIRQ_ROUTE
303 help
304 This variable specifies the number of PIRQ interrupt links which are
305 routable. On most chipsets, this is 4, INTA through INTD. Some
306 chipsets offer more than four links, commonly up to INTH. They may
307 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
308 table specifies links greater than 4, pirq_route_irqs will not
309 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100310
Duncan Laurief02bf352020-03-17 18:32:54 -0700311config MAX_ACPI_TABLE_SIZE_KB
312 int
313 default 144
314 help
315 Set the maximum size of all ACPI tables in KiB.
316
Furquan Shaikh46514c22020-06-11 11:59:07 -0700317config MEMLAYOUT_LD_FILE
318 string
319 default "src/arch/x86/memlayout.ld"
320
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100321endif