blob: a488b55d0a9cbd7d87831055b5d80508f18105fd [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
Stefan Reinauer68671202015-03-15 04:34:03 +01009# stage selectors for x86
10
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070011config ARCH_BOOTBLOCK_X86_32
Gabe Black5fbfc912013-07-07 13:52:37 -070012 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070013 select ARCH_X86
14
Stefan Reinauer77b16552015-01-14 19:51:47 +010015config ARCH_VERSTAGE_X86_32
16 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010017 select ARCH_X86
Stefan Reinauer77b16552015-01-14 19:51:47 +010018
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070019config ARCH_ROMSTAGE_X86_32
20 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010021 select ARCH_X86
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
Arthur Heymansb86e96a2019-02-10 17:00:56 +010029 select ARCH_X86
Gabe Black5fbfc912013-07-07 13:52:37 -070030
Angel Ponsa32df262020-09-25 10:20:11 +020031config ARCH_ALL_STAGES_X86_32
32 bool
33 select ARCH_BOOTBLOCK_X86_32
34 select ARCH_VERSTAGE_X86_32
35 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
Stefan Reinauer68671202015-03-15 04:34:03 +010042 select ARCH_X86
43
44config ARCH_VERSTAGE_X86_64
45 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010046 select ARCH_X86
Stefan Reinauer68671202015-03-15 04:34:03 +010047
48config ARCH_ROMSTAGE_X86_64
49 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010050 select ARCH_X86
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
55
Stefan Reinauer68671202015-03-15 04:34:03 +010056config ARCH_RAMSTAGE_X86_64
57 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010058 select ARCH_X86
59
Angel Pons2db779072020-09-25 10:14:45 +020060config ARCH_ALL_STAGES_X86_64
61 bool
62 select ARCH_BOOTBLOCK_X86_64
63 select ARCH_VERSTAGE_X86_64
64 select ARCH_ROMSTAGE_X86_64
65 select ARCH_RAMSTAGE_X86_64
66
Arthur Heymansb86e96a2019-02-10 17:00:56 +010067if ARCH_X86
Stefan Reinauer68671202015-03-15 04:34:03 +010068
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020069config ARCH_X86_64_PGTBL_LOC
70 hex "x86_64 page table location in CBFS"
71 depends on ARCH_BOOTBLOCK_X86_64
Patrick Rudolph19a60a42019-11-30 09:40:52 +010072 default 0xfffe9000
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020073 help
74 The position where to place pagetables. Needs to be known at
75 compile time. Must not overlap other files in CBFS.
76
Martin Roth0cd9ff82016-02-01 17:33:37 -070077config USE_MARCH_586
78 def_bool n
79 help
80 Allow a platform or processor to select to be compiled using
81 the '-march=i586' option instead of the typical '-march=i686'
82
Uwe Hermann168b11b2009-10-07 16:15:40 +000083# This is an SMP option. It relates to starting up APs.
84# It is usually set in mainboard/*/Kconfig.
85# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020086config AP_IN_SIPI_WAIT
87 bool
88 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -070089 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +000090
Martin Roth8418fd42019-04-22 16:26:23 -060091config RESET_VECTOR_IN_RAM
92 bool
93 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +020094 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -060095 help
Felix Heldca928c62020-04-04 01:47:37 +020096 Select this option if the x86 processor's reset vector is in
97 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -060098
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +030099# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
100# can boot AP CPUs to enable their shared caches.
101config SIPI_VECTOR_IN_ROM
102 bool
103 default n
104 depends on ARCH_X86
105
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700106# Set the rambase for systems that still need it, only 5 chipsets as of
107# Sep 2018. This value was 0x100000, chosen to match the entry point
108# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
109# for as long as we need it; with luck, that won't be much longer.
110# In the long term, both RAMBASE and RAMTOP should be removed.
111# This value leaves more than 1 MiB which is required for fam10
112# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000113config RAMBASE
114 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700115 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000116
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300117config RAMTOP
118 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700119 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300120 depends on ARCH_X86
121
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700122# Traditionally BIOS region on SPI flash boot media was memory mapped right below
123# 4G and it was the last region in the IFD. This way translation between CPU
124# address space to flash address was trivial. However some IFDs on newer SoCs
125# have BIOS region sandwiched between descriptor and other regions. Turning off
126# this option enables soc code to provide custom mmap_boot.c which can be used to
127# implement complex translation.
128config X86_TOP4G_BOOTMEDIA_MAP
129 bool
130 default y
131
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200132# This is something you almost certainly don't want to mess with.
133# How many SIPIs do we send when starting up APs and cores?
134# The answer in 2000 or so was '2'. Nowadays, on many systems,
135# it is 1. Set a safe default here, and you can override it
136# on reasonable platforms.
137config NUM_IPI_STARTS
138 int
139 default 2
140
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530141config PRERAM_CBMEM_CONSOLE_SIZE
142 hex
143 default 0xc00
144 help
145 Increase this value if preram cbmem console is getting truncated
146
Julius Wernerbaf27db2019-10-02 17:28:56 -0700147config CBFS_MCACHE_SIZE
148 hex
149 depends on !NO_CBFS_MCACHE
Julius Werner40acfe72021-05-12 15:59:58 -0700150 default 0x4000
Julius Wernerbaf27db2019-10-02 17:28:56 -0700151 help
Julius Werner40acfe72021-05-12 15:59:58 -0700152 Increase this value if you see CBFS mcache overflow warnings. Do NOT
153 change this value for vboot RW updates!
Julius Wernerbaf27db2019-10-02 17:28:56 -0700154
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000155config PC80_SYSTEM
156 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700157 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000158
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700159config BOOTBLOCK_DEBUG_SPINLOOP
160 bool
161 default n
162 help
163 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
164 for a JTAG debugger to break into the execution sequence.
165
Patrick Georgia865b172011-01-14 07:40:24 +0000166config HAVE_CMOS_DEFAULT
167 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700168 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000169
170config CMOS_DEFAULT_FILE
171 string
Patrick Georgib8fba862020-06-17 21:06:53 +0200172 default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000173 depends on HAVE_CMOS_DEFAULT
174
Patrick Georgid4d5e4d2012-03-16 19:28:15 +0100175config IOAPIC_INTERRUPTS_ON_FSB
176 bool
177 default y if !IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
178
179config IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
180 bool
181 default n
182
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300183config HPET_ADDRESS_OVERRIDE
184 def_bool n
185
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200186config HPET_ADDRESS
187 hex
188 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
189
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600190config C_ENV_BOOTBLOCK_SIZE
191 hex
Kyösti Mälkkie76ce872020-05-25 08:52:07 +0300192 default 0x40000 if !FIXED_BOOTBLOCK_SIZE
193 help
194 This is only the default maximum of bootblock size for linking
195 purposes. Platforms may provide different limit and need to
196 specify this when FIXED_BOOTBLOCK_SIZE is selected.
Andrey Petrovccd300b2016-02-28 22:04:51 -0800197
Kyösti Mälkki49dbbe92019-12-21 10:17:56 +0200198config FIXED_BOOTBLOCK_SIZE
199 bool
200
Andrey Petrovccd300b2016-02-28 22:04:51 -0800201# Default address romstage is to be linked at
202config ROMSTAGE_ADDR
203 hex
204 default 0x2000000
205
206# Default address verstage is to be linked at
207config VERSTAGE_ADDR
208 hex
209 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500210
211# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200212# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500213config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300214 def_bool y
215 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200216 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700217
218config VERSTAGE_DEBUG_SPINLOOP
219 bool
220 default n
221 help
222 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
223 for a JTAG debugger to break into the execution sequence.
224
225config ROMSTAGE_DEBUG_SPINLOOP
226 bool
227 default n
228 help
229 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
230 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700231
232choice
233 prompt "Bootblock behaviour"
234 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200235 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700236
237config BOOTBLOCK_SIMPLE
238 bool "Always load fallback"
239
240config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200241 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700242 bool "Switch to normal if CMOS says so"
243
244endchoice
245
Martin Roth408fda72016-12-15 16:04:55 -0700246config SKIP_MAX_REBOOT_CNT_CLEAR
247 bool "Do not clear reboot count after successful boot"
248 depends on BOOTBLOCK_NORMAL
249 help
250 Do not clear the reboot count immediately after successful boot.
251 Set to allow the payload to control normal/fallback image recovery.
252 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100253 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600254
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700255config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100256 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600257 depends on HAVE_ACPI_TABLES
258 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700259 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700260
261config COLLECT_TIMESTAMPS_NO_TSC
262 bool
263 default n
264 depends on COLLECT_TIMESTAMPS
265 help
266 Use a non-TSC platform-dependent source for timestamps.
267
268config COLLECT_TIMESTAMPS_TSC
269 bool
270 default y if !COLLECT_TIMESTAMPS_NO_TSC
271 default n
272 depends on COLLECT_TIMESTAMPS
273 help
274 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600275
276config PAGING_IN_CACHE_AS_RAM
277 bool
278 default n
279 depends on ARCH_X86
280 help
281 Chipsets scan select this option to preallocate area in cache-as-ram
282 for storing paging data structures. PAE paging is currently the
283 only thing being supported.
284
285config NUM_CAR_PAGE_TABLE_PAGES
286 int
287 default 5
288 depends on PAGING_IN_CACHE_AS_RAM
289 help
290 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600291
292# Provide the interrupt handlers to every stage. Not all
293# stages may take advantage.
294config IDT_IN_EVERY_STAGE
295 bool
296 default n
297 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200298
299config HAVE_CF9_RESET
300 bool
301
302config HAVE_CF9_RESET_PREPARE
303 bool
304 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300305
306config PIRQ_ROUTE
307 bool
308 default n
309
310config MAX_PIRQ_LINKS
311 int
312 default 4
313 depends on PIRQ_ROUTE
314 help
315 This variable specifies the number of PIRQ interrupt links which are
316 routable. On most chipsets, this is 4, INTA through INTD. Some
317 chipsets offer more than four links, commonly up to INTH. They may
318 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
319 table specifies links greater than 4, pirq_route_irqs will not
320 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100321
Duncan Laurief02bf352020-03-17 18:32:54 -0700322config MAX_ACPI_TABLE_SIZE_KB
323 int
324 default 144
325 help
326 Set the maximum size of all ACPI tables in KiB.
327
Furquan Shaikh46514c22020-06-11 11:59:07 -0700328config MEMLAYOUT_LD_FILE
329 string
330 default "src/arch/x86/memlayout.ld"
331
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100332endif