blob: e27aec246333a5d9bc58fa590bb8c3cdde2f0f3e [file] [log] [blame]
Stefan Reinauer425b61e2015-03-15 04:29:35 +01001##
2## This file is part of the coreboot project.
3##
Stefan Reinauer425b61e2015-03-15 04:29:35 +01004## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; version 2 of the License.
7##
8## This program is distributed in the hope that it will be useful,
9## but WITHOUT ANY WARRANTY; without even the implied warranty of
10## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11## GNU General Public License for more details.
12##
13
Stefan Reinauera48ca842015-04-04 01:58:28 +020014config ARCH_X86
15 bool
16 default n
17 select PCI
Kyösti Mälkkiec151f02018-06-03 22:48:51 +030018 select RELOCATABLE_MODULES
Stefan Reinauera48ca842015-04-04 01:58:28 +020019
Stefan Reinauer68671202015-03-15 04:34:03 +010020# stage selectors for x86
21
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070022config ARCH_BOOTBLOCK_X86_32
Gabe Black5fbfc912013-07-07 13:52:37 -070023 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070024 default n
25 select ARCH_X86
Arthur Heymansc05b1a62019-11-22 21:01:30 +010026 select BOOTBLOCK_CUSTOM if ROMCC_BOOTBLOCK
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070027
Stefan Reinauer77b16552015-01-14 19:51:47 +010028config ARCH_VERSTAGE_X86_32
29 bool
30 default n
31
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070032config ARCH_ROMSTAGE_X86_32
33 bool
34 default n
35
Patrick Georgi29eeece2018-10-31 14:24:47 +010036config ARCH_POSTCAR_X86_32
37 bool
38 default ARCH_ROMSTAGE_X86_32 && POSTCAR_STAGE
39
Furquan Shaikh99ac98f2014-04-23 10:18:48 -070040config ARCH_RAMSTAGE_X86_32
41 bool
42 default n
Gabe Black5fbfc912013-07-07 13:52:37 -070043
Stefan Reinauer68671202015-03-15 04:34:03 +010044# stage selectors for x64
45
46config ARCH_BOOTBLOCK_X86_64
47 bool
48 default n
49 select ARCH_X86
Arthur Heymansc05b1a62019-11-22 21:01:30 +010050 select BOOTBLOCK_CUSTOM if ROMCC_BOOTBLOCK
Stefan Reinauer68671202015-03-15 04:34:03 +010051
52config ARCH_VERSTAGE_X86_64
53 bool
54 default n
55
56config ARCH_ROMSTAGE_X86_64
57 bool
58 default n
59
Patrick Georgi29eeece2018-10-31 14:24:47 +010060config ARCH_POSTCAR_X86_64
61 bool
62 default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
63
Stefan Reinauer68671202015-03-15 04:34:03 +010064config ARCH_RAMSTAGE_X86_64
65 bool
66 default n
67
Patrick Rudolphb1ef7252019-09-28 17:44:01 +020068config ARCH_X86_64_PGTBL_LOC
69 hex "x86_64 page table location in CBFS"
70 depends on ARCH_BOOTBLOCK_X86_64
71 default 0xfffea000
72 help
73 The position where to place pagetables. Needs to be known at
74 compile time. Must not overlap other files in CBFS.
75
Martin Roth0cd9ff82016-02-01 17:33:37 -070076config USE_MARCH_586
77 def_bool n
78 help
79 Allow a platform or processor to select to be compiled using
80 the '-march=i586' option instead of the typical '-march=i686'
81
Uwe Hermann168b11b2009-10-07 16:15:40 +000082# This is an SMP option. It relates to starting up APs.
83# It is usually set in mainboard/*/Kconfig.
84# TODO: Improve description.
Sven Schnelle51676b12012-07-29 19:18:03 +020085config AP_IN_SIPI_WAIT
86 bool
87 default n
Stefan Reinauer2a6f3902012-10-15 13:38:09 -070088 depends on ARCH_X86 && SMP
Ronald G. Minnich6ed39d92009-08-29 02:59:35 +000089
Marshall Dawson67910db2019-11-01 17:30:05 -060090config X86_RESET_VECTOR
91 hex
92 depends on ARCH_X86
93 default 0xfffffff0
94 help
95 Specify the location of the x86 reset vector. In traditional devices
96 this must match the architectural reset vector to produce a bootable
97 image. Nontraditional designs may use this to position the reset
98 vector into its desired location.
99
Martin Roth8418fd42019-04-22 16:26:23 -0600100config RESET_VECTOR_IN_RAM
101 bool
102 depends on ARCH_X86
103 help
104 Select this option if the x86 soc implements custom code to handle the
105 reset vector in RAM instead of the traditional 0xfffffff0 location.
106
Kyösti Mälkkif8c7c232012-04-06 04:03:50 +0300107# Aligns 16bit entry code in bootblock so that hyper-threading CPUs
108# can boot AP CPUs to enable their shared caches.
109config SIPI_VECTOR_IN_ROM
110 bool
111 default n
112 depends on ARCH_X86
113
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700114# Set the rambase for systems that still need it, only 5 chipsets as of
115# Sep 2018. This value was 0x100000, chosen to match the entry point
116# of Linux 2.2 in 1999. The new value, 14 MiB, makes a lot more sense
117# for as long as we need it; with luck, that won't be much longer.
118# In the long term, both RAMBASE and RAMTOP should be removed.
119# This value leaves more than 1 MiB which is required for fam10
120# and broadwell_de.
Patrick Georgi0588d192009-08-12 15:00:51 +0000121config RAMBASE
122 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700123 default 0xe00000
Patrick Georgi0588d192009-08-12 15:00:51 +0000124
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300125config RAMTOP
126 hex
Ronald G. Minnich83bd46e2018-09-16 09:59:54 -0700127 default 0x1000000
Kyösti Mälkkibec853e2016-06-15 02:25:00 +0300128 depends on ARCH_X86
129
Alexandru Gagniuc6a622312015-10-27 10:27:30 -0700130# Traditionally BIOS region on SPI flash boot media was memory mapped right below
131# 4G and it was the last region in the IFD. This way translation between CPU
132# address space to flash address was trivial. However some IFDs on newer SoCs
133# have BIOS region sandwiched between descriptor and other regions. Turning off
134# this option enables soc code to provide custom mmap_boot.c which can be used to
135# implement complex translation.
136config X86_TOP4G_BOOTMEDIA_MAP
137 bool
138 default y
139
Ronald G. Minnichb5e777c2013-07-22 20:17:18 +0200140# This is something you almost certainly don't want to mess with.
141# How many SIPIs do we send when starting up APs and cores?
142# The answer in 2000 or so was '2'. Nowadays, on many systems,
143# it is 1. Set a safe default here, and you can override it
144# on reasonable platforms.
145config NUM_IPI_STARTS
146 int
147 default 2
148
Kyösti Mälkkia7dd6452017-04-19 07:37:38 +0300149config CBMEM_TOP_BACKUP
150 def_bool n
151 help
152 Platform implements non-volatile storage to cache cbmem_top()
153 over stage transitions and optionally also over S3 suspend.
154
Naresh G Solanki04bb4802016-12-13 21:16:46 +0530155config PRERAM_CBMEM_CONSOLE_SIZE
156 hex
157 default 0xc00
158 help
159 Increase this value if preram cbmem console is getting truncated
160
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000161config PC80_SYSTEM
162 bool
Furquan Shaikh99ac98f2014-04-23 10:18:48 -0700163 default y if ARCH_X86
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000164
Lee Leahyfdc8c8b2016-06-07 08:45:17 -0700165config BOOTBLOCK_DEBUG_SPINLOOP
166 bool
167 default n
168 help
169 Add a spin (JMP .) in bootblock_crt0.S during early bootblock to wait
170 for a JTAG debugger to break into the execution sequence.
171
Kyösti Mälkki48e21ec2012-11-14 08:08:50 +0200172config BOOTBLOCK_MAINBOARD_INIT
173 string
174
Patrick Georgi1bb68282009-12-31 12:56:53 +0000175config BOOTBLOCK_NORTHBRIDGE_INIT
176 string
177
Lee Leahy5f31f492015-02-09 21:09:49 -0800178config BOOTBLOCK_RESETS
179 string
180
Patrick Georgia865b172011-01-14 07:40:24 +0000181config HAVE_CMOS_DEFAULT
182 def_bool n
Martin Rothf76303e2016-11-16 15:45:22 -0700183 depends on HAVE_OPTION_TABLE
Patrick Georgia865b172011-01-14 07:40:24 +0000184
185config CMOS_DEFAULT_FILE
186 string
Denis 'GNUtoo' Carikli29a43552013-05-28 13:46:12 +0200187 default "src/mainboard/$(MAINBOARDDIR)/cmos.default"
Patrick Georgia865b172011-01-14 07:40:24 +0000188 depends on HAVE_CMOS_DEFAULT
189
Patrick Georgi1bb68282009-12-31 12:56:53 +0000190config BOOTBLOCK_SOUTHBRIDGE_INIT
191 string
Stefan Reinauer1b342262011-01-05 02:27:53 +0000192
Patrick Georgid4d5e4d2012-03-16 19:28:15 +0100193config IOAPIC_INTERRUPTS_ON_FSB
194 bool
195 default y if !IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
196
197config IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS
198 bool
199 default n
200
Kyösti Mälkkib433d262018-05-24 09:56:11 +0300201config HPET_ADDRESS_OVERRIDE
202 def_bool n
203
Patrick Georgi9aeb6942012-10-05 21:54:38 +0200204config HPET_ADDRESS
205 hex
206 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
207
Stefan Reinauer84833442012-11-13 15:04:12 -0800208config ID_SECTION_OFFSET
209 hex
210 default 0x80
Patrick Georgic32a52c2015-06-22 21:10:34 +0200211
Arthur Heymansc05b1a62019-11-22 21:01:30 +0100212# 64KiB default bootblock size
Aaron Durbin65ac3d82016-02-11 14:36:19 -0600213config C_ENV_BOOTBLOCK_SIZE
214 hex
215 default 0x10000
Andrey Petrovccd300b2016-02-28 22:04:51 -0800216
217# Default address romstage is to be linked at
218config ROMSTAGE_ADDR
219 hex
220 default 0x2000000
221
222# Default address verstage is to be linked at
223config VERSTAGE_ADDR
224 hex
225 default 0x2000000
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500226
227# Use the post CAR infrastructure for tearing down cache-as-ram
Elyes HAOUAS777ea892016-07-29 07:40:41 +0200228# from a program loaded in RAM and subsequently loading ramstage.
Aaron Durbin7f8afe02016-03-18 12:21:23 -0500229config POSTCAR_STAGE
Kyösti Mälkki0f5e01a2019-08-09 07:11:07 +0300230 def_bool y
231 depends on ARCH_X86
Lee Leahyd131ea32016-06-08 13:40:08 -0700232
233config VERSTAGE_DEBUG_SPINLOOP
234 bool
235 default n
236 help
237 Add a spin (JMP .) in assembly_entry.S during early verstage to wait
238 for a JTAG debugger to break into the execution sequence.
239
240config ROMSTAGE_DEBUG_SPINLOOP
241 bool
242 default n
243 help
244 Add a spin (JMP .) in assembly_entry.S during early romstage to wait
245 for a JTAG debugger to break into the execution sequence.
Martin Roth408fda72016-12-15 16:04:55 -0700246
Arthur Heymans2f5abf02019-06-09 14:01:43 +0200247# Selecting a cbfs prefix from the bootblock is only implemented with romcc
Martin Roth408fda72016-12-15 16:04:55 -0700248choice
249 prompt "Bootblock behaviour"
250 default BOOTBLOCK_SIMPLE
Arthur Heymansc05b1a62019-11-22 21:01:30 +0100251 depends on ROMCC_BOOTBLOCK
Martin Roth408fda72016-12-15 16:04:55 -0700252
253config BOOTBLOCK_SIMPLE
254 bool "Always load fallback"
255
256config BOOTBLOCK_NORMAL
Arthur Heymans6f751542019-06-08 11:28:52 +0200257 select CONFIGURABLE_CBFS_PREFIX
Martin Roth408fda72016-12-15 16:04:55 -0700258 bool "Switch to normal if CMOS says so"
259
260endchoice
261
262config BOOTBLOCK_SOURCE
263 string
264 default "bootblock_simple.c" if BOOTBLOCK_SIMPLE
265 default "bootblock_normal.c" if BOOTBLOCK_NORMAL
266
267config SKIP_MAX_REBOOT_CNT_CLEAR
268 bool "Do not clear reboot count after successful boot"
269 depends on BOOTBLOCK_NORMAL
270 help
271 Do not clear the reboot count immediately after successful boot.
272 Set to allow the payload to control normal/fallback image recovery.
273 Note that it is the responsibility of the payload to reset the
Paul Menzelb9499022019-01-08 16:21:31 +0100274 normal boot bit to 1 after each successful boot.
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600275
Nico Huber9df72e02018-11-24 18:25:50 +0100276config ACPI_NO_PCAT_8259
277 bool
278 help
279 Selected by platforms that don't expose a PC/AT 8259 PIC pair.
280
281config ACPI_HAVE_PCAT_8259
282 def_bool y if !ACPI_NO_PCAT_8259
283
Marc Jones7a2d4ea2017-08-25 18:54:23 -0600284config ACPI_CPU_STRING
285 string
286 default "\\_PR.CP%02d"
287 depends on HAVE_ACPI_TABLES
288 help
289 Sets the ACPI name string in the processor scope as written by
290 the acpigen function. Default is \_PR.CPxx. Note that you need
291 the \ escape character in the string.
Aaron Durbinf49ddb62018-01-24 17:35:58 -0700292
293config COLLECT_TIMESTAMPS_NO_TSC
294 bool
295 default n
296 depends on COLLECT_TIMESTAMPS
297 help
298 Use a non-TSC platform-dependent source for timestamps.
299
300config COLLECT_TIMESTAMPS_TSC
301 bool
302 default y if !COLLECT_TIMESTAMPS_NO_TSC
303 default n
304 depends on COLLECT_TIMESTAMPS
305 help
306 Use the TSC as the timestamp source.
Aaron Durbin0f35af8f2018-04-18 01:00:27 -0600307
308config PAGING_IN_CACHE_AS_RAM
309 bool
310 default n
311 depends on ARCH_X86
312 help
313 Chipsets scan select this option to preallocate area in cache-as-ram
314 for storing paging data structures. PAE paging is currently the
315 only thing being supported.
316
317config NUM_CAR_PAGE_TABLE_PAGES
318 int
319 default 5
320 depends on PAGING_IN_CACHE_AS_RAM
321 help
322 The number of 4KiB pages that should be pre-allocated for page tables.
Aaron Durbin4b032e42018-04-20 01:39:30 -0600323
324# Provide the interrupt handlers to every stage. Not all
325# stages may take advantage.
326config IDT_IN_EVERY_STAGE
327 bool
328 default n
329 depends on ARCH_X86
Nico Huber33fcaf92018-10-10 22:44:20 +0200330
331config HAVE_CF9_RESET
332 bool
333
334config HAVE_CF9_RESET_PREPARE
335 bool
336 depends on HAVE_CF9_RESET
Kyösti Mälkkib72b5d92019-07-04 21:08:17 +0300337
338config PIRQ_ROUTE
339 bool
340 default n
341
342config MAX_PIRQ_LINKS
343 int
344 default 4
345 depends on PIRQ_ROUTE
346 help
347 This variable specifies the number of PIRQ interrupt links which are
348 routable. On most chipsets, this is 4, INTA through INTD. Some
349 chipsets offer more than four links, commonly up to INTH. They may
350 also have a separate link for ATA or IOAPIC interrupts. When the PIRQ
351 table specifies links greater than 4, pirq_route_irqs will not
352 function properly, unless this variable is correctly set.