blob: 417989d7641cd45a542393b6e9ccd51107b5a606 [file] [log] [blame]
Martin Roth19081102024-02-16 10:31:30 -07001## SPDX-License-Identifier: GPL-2.0-only
2
Arthur Heymans67f29e82022-04-17 10:37:13 +02003if ARCH_X86
4
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -07005config PARALLEL_MP
Kyösti Mälkki41a2c732021-05-29 21:23:18 +03006 def_bool y
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -07007 help
8 This option uses common MP infrastructure for bringing up APs
9 in parallel. It additionally provides a more flexible mechanism
10 for sequencing the steps of bringing up the APs.
Arthur Heymans48fbf2f2021-11-26 14:50:42 +010011 The code also works for just initialising the BSP in case there
12 are no APs.
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -070013
Aaron Durbinb21e3622016-12-07 00:32:19 -060014config PARALLEL_MP_AP_WORK
15 def_bool n
16 depends on PARALLEL_MP
17 help
18 Allow APs to do other work after initialization instead of going
19 to sleep.
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -070020
Arthur Heymans56776a12022-05-19 11:31:10 +020021config X86_SMM_SKIP_RELOCATION_HANDLER
22 bool
23 default n
24 depends on PARALLEL_MP && HAVE_SMI_HANDLER
25 help
26 Skip SMM relocation using a relocation handler running in SMM
27 with a stub at 0x30000. This is useful on platforms that have
28 an alternative way to set SMBASE.
29
Subrata Banik64c04e02022-05-25 01:25:55 +053030config DEFAULT_X2APIC
31 def_bool n
32 help
Martin Roth53b19292023-05-10 13:28:42 -060033 Allow SoC code to set LAPIC access mode to X2APIC.
Subrata Banik64c04e02022-05-25 01:25:55 +053034
35config DEFAULT_X2APIC_RUNTIME
36 def_bool n
37 help
Martin Roth53b19292023-05-10 13:28:42 -060038 Allow SoC code to set LAPIC access mode to X2APIC_RUNTIME.
Subrata Banik64c04e02022-05-25 01:25:55 +053039
Subrata Banik55d300c2022-07-12 11:06:15 +000040config DEFAULT_X2APIC_LATE_WORKAROUND
41 def_bool n
42 help
Martin Roth53b19292023-05-10 13:28:42 -060043 Allow SoC code to set LAPIC access mode to X2APIC_LATE_WORKAROUND.
Subrata Banik55d300c2022-07-12 11:06:15 +000044
Martin Roth53b19292023-05-10 13:28:42 -060045choice
Kyösti Mälkki176c8872021-05-29 20:33:22 +030046 prompt "APIC operation mode"
Subrata Banik64c04e02022-05-25 01:25:55 +053047 default X2APIC_ONLY if DEFAULT_X2APIC
48 default X2APIC_RUNTIME if DEFAULT_X2APIC_RUNTIME
Subrata Banik55d300c2022-07-12 11:06:15 +000049 default X2APIC_LATE_WORKAROUND if DEFAULT_X2APIC_LATE_WORKAROUND
Kyösti Mälkki176c8872021-05-29 20:33:22 +030050 default XAPIC_ONLY
51
52config XAPIC_ONLY
53 prompt "Set XAPIC mode"
54 bool
Kyösti Mälkkia52b93b2023-06-30 18:44:26 +030055 help
56 coreboot and SMM runtime only use XAPIC mode.
57 FIXME: DMAR should have X2APIC optout bit set.
Kyösti Mälkki176c8872021-05-29 20:33:22 +030058
59config X2APIC_ONLY
60 prompt "Set X2APIC mode"
61 bool
62 depends on PARALLEL_MP
Kyösti Mälkkia52b93b2023-06-30 18:44:26 +030063 help
64 coreboot and SMM runtime only use X2APIC mode.
65 Note: OS switches back to XAPIC mode if VT-d is disabled.
66 FIXME: S3 resume (and SMM runtime) will break if OS makes the switch.
Kyösti Mälkki176c8872021-05-29 20:33:22 +030067
68config X2APIC_RUNTIME
69 prompt "Support both XAPIC and X2APIC"
70 bool
71 depends on PARALLEL_MP
Kyösti Mälkkia52b93b2023-06-30 18:44:26 +030072 help
73 The switch to X2APIC mode happens early in ramstage. SMM runtime can
74 support either mode in case the OS switches back to XAPIC.
Kyösti Mälkki176c8872021-05-29 20:33:22 +030075
Subrata Banik2125a172022-07-12 10:55:21 +000076config X2APIC_LATE_WORKAROUND
77 prompt "Use XAPIC for AP bringup, then change to X2APIC"
78 bool
Subrata Banikfb287992022-07-24 11:19:04 +053079 depends on PARALLEL_MP && MAX_CPUS < 256
Subrata Banik2125a172022-07-12 10:55:21 +000080 help
81 Choose this option if the platform supports dynamic switching between
82 XAPIC to X2APIC. The initial Application Processors (APs) are configured
83 in XAPIC mode at reset and later enable X2APIC as a CPU feature.
84 All access mechanisms between XAPIC (mmio) and X2APIC (msr) switches
85 at runtime when this option is enabled.
86
Kyösti Mälkki176c8872021-05-29 20:33:22 +030087endchoice
88
Patrick Georgi0e9a9252009-10-06 20:48:07 +000089config UDELAY_LAPIC
90 bool
91 default n
92
Aaron Durbinfd8291c2013-04-29 17:18:49 -050093config LAPIC_MONOTONIC_TIMER
94 def_bool n
95 depends on UDELAY_LAPIC
Aaron Durbinfd8291c2013-04-29 17:18:49 -050096 help
Elyes HAOUASd6e96862016-08-21 10:12:15 +020097 Expose monotonic time using the local APIC.
Aaron Durbinfd8291c2013-04-29 17:18:49 -050098
Patrick Georgie135ac52012-11-20 11:53:47 +010099config UDELAY_LAPIC_FIXED_FSB
100 int
101
Ronald G. Minnich669c4a92009-08-29 03:00:51 +0000102config UDELAY_TSC
103 bool
104 default n
105
Kyösti Mälkki0d6ddf82019-10-31 14:52:20 +0200106config UNKNOWN_TSC_RATE
107 bool
108 default y if LAPIC_MONOTONIC_TIMER
Aaron Durbin8e73b5d2013-05-01 15:27:09 -0500109
Aaron Durbine8501642013-04-29 22:22:55 -0500110config TSC_MONOTONIC_TIMER
111 def_bool n
112 depends on UDELAY_TSC
Aaron Durbine8501642013-04-29 22:22:55 -0500113 help
114 Expose monotonic time using the TSC.
115
Stefan Reinauer0db68202012-08-07 14:44:51 -0700116config TSC_SYNC_LFENCE
117 bool
118 default n
119 help
120 The CPU driver should select this if the CPU needs
121 to execute an lfence instruction in order to synchronize
122 rdtsc. This is true for all modern AMD CPUs.
123
124config TSC_SYNC_MFENCE
125 bool
126 default n
127 help
128 The CPU driver should select this if the CPU needs
129 to execute an mfence instruction in order to synchronize
130 rdtsc. This is true for all modern Intel CPUs.
131
Arthur Heymans47be2d92019-10-12 17:32:09 +0200132config SETUP_XIP_CACHE
133 bool
Arthur Heymans47be2d92019-10-12 17:32:09 +0200134 depends on !NO_XIP_EARLY_STAGES
135 help
136 Select this option to set up an MTRR to cache XIP stages loaded
137 from the bootblock. This is useful on platforms lacking a
138 non-eviction mode and therefore need to be careful to avoid
139 eviction.
140
Arthur Heymans3134a812019-11-25 12:20:01 +0100141config X86_CLFLUSH_CAR
142 bool
143 help
144 Select this on platforms that allow CLFLUSH while operating in CAR.
145
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300146config HAVE_SMI_HANDLER
147 bool
148 default n
149 depends on (SMM_ASEG || SMM_TSEG)
150
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300151config NO_SMM
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300152 bool
153 default n
154
Julius Wernerc770ad62024-06-03 17:39:01 -0700155config NEED_SMALL_2MB_PAGE_TABLES
Ashish Kumar Mishraecbc2432024-01-16 16:23:03 +0530156 bool
157 default n
158 help
Julius Wernerc770ad62024-06-03 17:39:01 -0700159 Select this option from boards/SoCs that do not support the Page1GB
160 CPUID feature (CPUID.80000001H:EDX.bit26).
Ashish Kumar Mishraecbc2432024-01-16 16:23:03 +0530161
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300162config SMM_ASEG
Duncan Laurie8bb77232012-01-09 22:11:25 -0800163 bool
164 default n
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300165 depends on !NO_SMM
166
167config SMM_TSEG
168 bool
169 default y
170 depends on !(NO_SMM || SMM_ASEG)
171
Arthur Heymans66b28882022-11-01 23:45:59 +0100172if HAVE_SMI_HANDLER
Aaron Durbin50a34642013-01-03 17:38:47 -0600173
Raul E Rangeld3b83932018-06-12 10:43:09 -0600174config SMM_MODULE_STACK_SIZE
175 hex
Patrick Rudolphed8d7772021-06-12 06:21:27 +0200176 default 0x800 if ARCH_RAMSTAGE_X86_64
Raul E Rangeld3b83932018-06-12 10:43:09 -0600177 default 0x400
Raul E Rangeld3b83932018-06-12 10:43:09 -0600178 help
179 This option determines the size of the stack within the SMM handler
180 modules.
181
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300182endif
183
Patrick Georgice2564a2015-09-05 20:21:24 +0200184config SMM_LAPIC_REMAP_MITIGATION
185 bool
Arthur Heymans912a2622019-11-28 09:48:26 +0100186 default y if NORTHBRIDGE_INTEL_I945 || NORTHBRIDGE_INTEL_GM45 \
187 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_PINEVIEW \
Kyösti Mälkki7b73e8522022-11-08 04:43:41 +0000188 || NORTHBRIDGE_INTEL_E7505 || NORTHBRIDGE_INTEL_IRONLAKE
Patrick Georgice2564a2015-09-05 20:21:24 +0200189 default n
190
Robert Ziebaac8c3782022-09-07 16:25:15 -0600191config SMM_PCI_RESOURCE_STORE
192 bool
193 default n
194 help
195 This option enables support for storing PCI resources in SMRAM so
196 SMM can tell if they've been altered.
197
198config SMM_PCI_RESOURCE_STORE_NUM_SLOTS
199 int
200 default 8
201 help
202 Number of slots available to store PCI BARs in SMRAM
203
Aaron Durbin57686f82013-03-20 15:50:59 -0500204config X86_AMD_FIXED_MTRRS
205 bool
206 default n
207 help
208 This option informs the MTRR code to use the RdMem and WrMem fields
209 in the fixed MTRR MSRs.
Aaron Durbine0785c02013-10-21 12:15:29 -0500210
Subrata Banik9f91ced2021-07-28 15:38:32 +0530211config X86_INIT_NEED_1_SIPI
Marshall Dawson98f43a12019-08-05 16:18:56 -0600212 bool
213 default n
214 help
Alexander Goncharov893c3ae82023-02-04 15:20:37 +0400215 This option limits the number of SIPI signals sent during the
Marshall Dawson98f43a12019-08-05 16:18:56 -0600216 common AP setup. Intel documentation specifies an INIT SIPI SIPI
Subrata Banik9f91ced2021-07-28 15:38:32 +0530217 sequence, however this doesn't work on some AMD and Intel platforms.
218 These newer AMD and Intel platforms don't need the 10ms wait between
219 INIT and SIPI, so skip that too to save some time.
Marshall Dawson98f43a12019-08-05 16:18:56 -0600220
Lee Leahyae738ac2016-07-24 08:03:37 -0700221config SOC_SETS_MSRS
222 bool
223 default n
224 help
225 The SoC requires different access methods for reading and writing
226 the MSRs. Use SoC specific routines to handle the MSR access.
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600227
228config RESERVE_MTRRS_FOR_OS
229 bool
230 default n
231 help
232 This option allows a platform to reserve 2 MTRRs for the OS usage.
Alexander Goncharov893c3ae82023-02-04 15:20:37 +0400233 The Intel SDM documents that the first 6 MTRRs are intended for
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600234 the system BIOS and the last 2 are to be reserved for OS usage.
235 However, modern OSes use PAT to control cacheability instead of
236 using MTRRs.
Raul E Rangelb2346a52021-09-22 14:56:51 -0600237
Arthur Heymans4d75dbd2022-11-01 23:57:24 +0100238config AP_STACK_SIZE
239 hex
240 default 0x800
241 help
242 This is the amount of stack each AP needs. The BSP stack size can be
243 larger and is set with STACK_SIZE.
244
Johnny Lin107e7aa2021-01-14 17:49:08 +0800245config RUNTIME_CONFIGURABLE_SMM_LOGLEVEL
246 bool
247 default n
248 depends on DEBUG_SMI && CONSOLE_OVERRIDE_LOGLEVEL
249 help
250 This enables setting the SMM console log level at runtime for more
251 flexibility to use different log levels for each stage. Another reason
252 is that reading the log level from non-volatile memory such as flash
253 VPD or CMOS is not very ideal to be done in SMM, with this option the
254 value can be passed via the member variable in struct smm_runtime and
255 be referenced directly in SMM.
256
Arthur Heymans67f29e82022-04-17 10:37:13 +0200257endif # ARCH_X86