blob: 0a207e19b0e77f6a8dc16c1602f6a20a7a067c77 [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
Stefan Reinauera48ca842015-04-04 01:58:28 +02007
Stefan Reinauer68671202015-03-15 04:34:03 +01008# stage selectors for x86
9
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070010config ARCH_BOOTBLOCK_X86_32
Gabe Black5fbfc912013-07-07 13:52:37 -070011 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070012 select ARCH_X86
13
Stefan Reinauer77b16552015-01-14 19:51:47 +010014config ARCH_VERSTAGE_X86_32
15 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010016 select ARCH_X86
Stefan Reinauer77b16552015-01-14 19:51:47 +010017
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070018config ARCH_ROMSTAGE_X86_32
19 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010020 select ARCH_X86
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
Arthur Heymansb86e96a2019-02-10 17:00:56 +010028 select ARCH_X86
Gabe Black5fbfc912013-07-07 13:52:37 -070029
Stefan Reinauer68671202015-03-15 04:34:03 +010030# stage selectors for x64
31
32config ARCH_BOOTBLOCK_X86_64
33 bool
Stefan Reinauer68671202015-03-15 04:34:03 +010034 select ARCH_X86
35
36config ARCH_VERSTAGE_X86_64
37 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010038 select ARCH_X86
Stefan Reinauer68671202015-03-15 04:34:03 +010039
40config ARCH_ROMSTAGE_X86_64
41 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010042 select ARCH_X86
Stefan Reinauer68671202015-03-15 04:34:03 +010043
Patrick Georgi29eeece2018-10-31 14:24:47 +010044config ARCH_POSTCAR_X86_64
45 bool
46 default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
47
Stefan Reinauer68671202015-03-15 04:34:03 +010048config ARCH_RAMSTAGE_X86_64
49 bool
Arthur Heymansb86e96a2019-02-10 17:00:56 +010050 select ARCH_X86
51
52if ARCH_X86
Stefan Reinauer68671202015-03-15 04:34:03 +010053
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020054config ARCH_X86_64_PGTBL_LOC
55 hex "x86_64 page table location in CBFS"
56 depends on ARCH_BOOTBLOCK_X86_64
57 default 0xfffea000
58 help
59 The position where to place pagetables. Needs to be known at
60 compile time. Must not overlap other files in CBFS.
61
Martin Roth0cd9ff82016-02-01 17:33:37 -070062config USE_MARCH_586
63 def_bool n
64 help
65 Allow a platform or processor to select to be compiled using
66 the '-march=i586' option instead of the typical '-march=i686'
67
Uwe Hermann168b11b2009-10-07 16:15:40 +000068# This is an SMP option. It relates to starting up APs.
69# It is usually set in mainboard/*/Kconfig.
70# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020071config AP_IN_SIPI_WAIT
72 bool
73 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -070074 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +000075
Marshall Dawson67910db2019-11-01 17:30:05 -060076config X86_RESET_VECTOR
77 hex
78 depends on ARCH_X86
79 default 0xfffffff0
80 help
81 Specify the location of the x86 reset vector. In traditional devices
82 this must match the architectural reset vector to produce a bootable
83 image. Nontraditional designs may use this to position the reset
84 vector into its desired location.
85
Martin Roth8418fd42019-04-22 16:26:23 -060086config RESET_VECTOR_IN_RAM
87 bool
88 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +020089 select NO_XIP_EARLY_STAGES
Martin Roth8418fd42019-04-22 16:26:23 -060090 help
Felix Heldca928c62020-04-04 01:47:37 +020091 Select this option if the x86 processor's reset vector is in
92 preinitialized DRAM instead of the traditional 0xfffffff0 location.
Martin Roth8418fd42019-04-22 16:26:23 -060093
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +030094# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
95# can boot AP CPUs to enable their shared caches.
96config SIPI_VECTOR_IN_ROM
97 bool
98 default n
99 depends on ARCH_X86
100
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700101# Set the rambase for systems that still need it, only 5 chipsets as of
102# Sep 2018. This value was 0x100000, chosen to match the entry point
103# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
104# for as long as we need it; with luck, that won't be much longer.
105# In the long term, both RAMBASE and RAMTOP should be removed.
106# This value leaves more than 1 MiB which is required for fam10
107# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000108config RAMBASE
109 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700110 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000111
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300112config RAMTOP
113 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700114 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300115 depends on ARCH_X86
116
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700117# Traditionally BIOS region on SPI flash boot media was memory mapped right below
118# 4G and it was the last region in the IFD. This way translation between CPU
119# address space to flash address was trivial. However some IFDs on newer SoCs
120# have BIOS region sandwiched between descriptor and other regions. Turning off
121# this option enables soc code to provide custom mmap_boot.c which can be used to
122# implement complex translation.
123config X86_TOP4G_BOOTMEDIA_MAP
124 bool
125 default y
126
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200127# This is something you almost certainly don't want to mess with.
128# How many SIPIs do we send when starting up APs and cores?
129# The answer in 2000 or so was '2'. Nowadays, on many systems,
130# it is 1. Set a safe default here, and you can override it
131# on reasonable platforms.
132config NUM_IPI_STARTS
133 int
134 default 2
135
Kyösti Mälkkia7dd6452017-04-19 07:37:38 +0300136config CBMEM_TOP_BACKUP
137 def_bool n
138 help
139 Platform implements non-volatile storage to cache cbmem_top()
140 over stage transitions and optionally also over S3 suspend.
141
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530142config PRERAM_CBMEM_CONSOLE_SIZE
143 hex
144 default 0xc00
145 help
146 Increase this value if preram cbmem console is getting truncated
147
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000148config PC80_SYSTEM
149 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700150 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000151
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700152config BOOTBLOCK_DEBUG_SPINLOOP
153 bool
154 default n
155 help
156 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
157 for a JTAG debugger to break into the execution sequence.
158
Patrick Georgia865b172011-01-14 07:40:24 +0000159config HAVE_CMOS_DEFAULT
160 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700161 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000162
163config CMOS_DEFAULT_FILE
164 string
Denis 'GNUtoo' Carikli29a43552013-05-28 13:46:12 +0200165 default "src/mainboard/$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000166 depends on HAVE_CMOS_DEFAULT
167
Patrick Georgid4d5e4d2012-03-16 19:28:15 +0100168config IOAPIC_INTERRUPTS_ON_FSB
169 bool
170 default y if !IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
171
172config IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
173 bool
174 default n
175
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300176config HPET_ADDRESS_OVERRIDE
177 def_bool n
178
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200179config HPET_ADDRESS
180 hex
181 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
182
Stefan Reinauer84833442012-11-13 15:04:12 -0800183config ID_SECTION_OFFSET
184 hex
185 default 0x80
Patrick Georgic32a52c2015-06-22 21:10:34 +0200186
Arthur Heymansc05b1a62019-11-22 21:01:30 +0100187# 64KiB default bootblock size
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600188config C_ENV_BOOTBLOCK_SIZE
189 hex
190 default 0x10000
Andrey Petrovccd300b2016-02-28 22:04:51 -0800191
192# Default address romstage is to be linked at
193config ROMSTAGE_ADDR
194 hex
195 default 0x2000000
196
197# Default address verstage is to be linked at
198config VERSTAGE_ADDR
199 hex
200 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500201
202# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200203# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500204config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300205 def_bool y
206 depends on ARCH_X86
Felix Heldca928c62020-04-04 01:47:37 +0200207 depends on !RESET_VECTOR_IN_RAM
Lee Leahyd131ea32016-06-08 13:40:08 -0700208
209config VERSTAGE_DEBUG_SPINLOOP
210 bool
211 default n
212 help
213 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
214 for a JTAG debugger to break into the execution sequence.
215
216config ROMSTAGE_DEBUG_SPINLOOP
217 bool
218 default n
219 help
220 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
221 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700222
223choice
224 prompt "Bootblock behaviour"
225 default BOOTBLOCK_SIMPLE
Kyösti Mälkkib8d575c2019-12-16 16:00:49 +0200226 depends on !VBOOT
Martin Roth408fda72016-12-15 16:04:55 -0700227
228config BOOTBLOCK_SIMPLE
229 bool "Always load fallback"
230
231config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200232 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700233 bool "Switch to normal if CMOS says so"
234
235endchoice
236
Martin Roth408fda72016-12-15 16:04:55 -0700237config SKIP_MAX_REBOOT_CNT_CLEAR
238 bool "Do not clear reboot count after successful boot"
239 depends on BOOTBLOCK_NORMAL
240 help
241 Do not clear the reboot count immediately after successful boot.
242 Set to allow the payload to control normal/fallback image recovery.
243 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100244 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600245
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700246config ACPI_BERT
Nico Huber9df72e02018-11-24 18:25:50 +0100247 bool
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600248 depends on HAVE_ACPI_TABLES
249 help
Furquan Shaikhbf4b7b02020-04-30 18:08:16 -0700250 Build an ACPI Boot Error Record Table.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700251
252config COLLECT_TIMESTAMPS_NO_TSC
253 bool
254 default n
255 depends on COLLECT_TIMESTAMPS
256 help
257 Use a non-TSC platform-dependent source for timestamps.
258
259config COLLECT_TIMESTAMPS_TSC
260 bool
261 default y if !COLLECT_TIMESTAMPS_NO_TSC
262 default n
263 depends on COLLECT_TIMESTAMPS
264 help
265 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600266
267config PAGING_IN_CACHE_AS_RAM
268 bool
269 default n
270 depends on ARCH_X86
271 help
272 Chipsets scan select this option to preallocate area in cache-as-ram
273 for storing paging data structures. PAE paging is currently the
274 only thing being supported.
275
276config NUM_CAR_PAGE_TABLE_PAGES
277 int
278 default 5
279 depends on PAGING_IN_CACHE_AS_RAM
280 help
281 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600282
283# Provide the interrupt handlers to every stage. Not all
284# stages may take advantage.
285config IDT_IN_EVERY_STAGE
286 bool
287 default n
288 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200289
290config HAVE_CF9_RESET
291 bool
292
293config HAVE_CF9_RESET_PREPARE
294 bool
295 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300296
297config PIRQ_ROUTE
298 bool
299 default n
300
301config MAX_PIRQ_LINKS
302 int
303 default 4
304 depends on PIRQ_ROUTE
305 help
306 This variable specifies the number of PIRQ interrupt links which are
307 routable. On most chipsets, this is 4, INTA through INTD. Some
308 chipsets offer more than four links, commonly up to INTH. They may
309 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
310 table specifies links greater than 4, pirq_route_irqs will not
311 function properly, unless this variable is correctly set.
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100312
Duncan Laurief02bf352020-03-17 18:32:54 -0700313config MAX_ACPI_TABLE_SIZE_KB
314 int
315 default 144
316 help
317 Set the maximum size of all ACPI tables in KiB.
318
Arthur Heymansb86e96a2019-02-10 17:00:56 +0100319endif