blob: 1e1b2ac1579a998be68b8d4d7fe93c77bc8d26d5 [file] [log] [blame]
Arthur Heymans67f29e82022-04-17 10:37:13 +02001if ARCH_X86
2
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -07003config PARALLEL_MP
Kyösti Mälkki41a2c732021-05-29 21:23:18 +03004 def_bool y
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -07005 help
6 This option uses common MP infrastructure for bringing up APs
7 in parallel. It additionally provides a more flexible mechanism
8 for sequencing the steps of bringing up the APs.
Arthur Heymans48fbf2f2021-11-26 14:50:42 +01009 The code also works for just initialising the BSP in case there
10 are no APs.
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -070011
Aaron Durbinb21e3622016-12-07 00:32:19 -060012config PARALLEL_MP_AP_WORK
13 def_bool n
14 depends on PARALLEL_MP
15 help
16 Allow APs to do other work after initialization instead of going
17 to sleep.
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -070018
Arthur Heymans56776a12022-05-19 11:31:10 +020019config X86_SMM_SKIP_RELOCATION_HANDLER
20 bool
21 default n
22 depends on PARALLEL_MP && HAVE_SMI_HANDLER
23 help
24 Skip SMM relocation using a relocation handler running in SMM
25 with a stub at 0x30000. This is useful on platforms that have
26 an alternative way to set SMBASE.
27
Subrata Banik64c04e02022-05-25 01:25:55 +053028config DEFAULT_X2APIC
29 def_bool n
30 help
Martin Roth53b19292023-05-10 13:28:42 -060031 Allow SoC code to set LAPIC access mode to X2APIC.
Subrata Banik64c04e02022-05-25 01:25:55 +053032
33config DEFAULT_X2APIC_RUNTIME
34 def_bool n
35 help
Martin Roth53b19292023-05-10 13:28:42 -060036 Allow SoC code to set LAPIC access mode to X2APIC_RUNTIME.
Subrata Banik64c04e02022-05-25 01:25:55 +053037
Subrata Banik55d300c2022-07-12 11:06:15 +000038config DEFAULT_X2APIC_LATE_WORKAROUND
39 def_bool n
40 help
Martin Roth53b19292023-05-10 13:28:42 -060041 Allow SoC code to set LAPIC access mode to X2APIC_LATE_WORKAROUND.
Subrata Banik55d300c2022-07-12 11:06:15 +000042
Martin Roth53b19292023-05-10 13:28:42 -060043choice
Kyösti Mälkki176c8872021-05-29 20:33:22 +030044 prompt "APIC operation mode"
Subrata Banik64c04e02022-05-25 01:25:55 +053045 default X2APIC_ONLY if DEFAULT_X2APIC
46 default X2APIC_RUNTIME if DEFAULT_X2APIC_RUNTIME
Subrata Banik55d300c2022-07-12 11:06:15 +000047 default X2APIC_LATE_WORKAROUND if DEFAULT_X2APIC_LATE_WORKAROUND
Kyösti Mälkki176c8872021-05-29 20:33:22 +030048 default XAPIC_ONLY
49
50config XAPIC_ONLY
51 prompt "Set XAPIC mode"
52 bool
53
54config X2APIC_ONLY
55 prompt "Set X2APIC mode"
56 bool
57 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030058
59config X2APIC_RUNTIME
60 prompt "Support both XAPIC and X2APIC"
61 bool
62 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030063
Subrata Banik2125a172022-07-12 10:55:21 +000064config X2APIC_LATE_WORKAROUND
65 prompt "Use XAPIC for AP bringup, then change to X2APIC"
66 bool
Subrata Banikfb287992022-07-24 11:19:04 +053067 depends on PARALLEL_MP && MAX_CPUS < 256
Subrata Banik2125a172022-07-12 10:55:21 +000068 help
69 Choose this option if the platform supports dynamic switching between
70 XAPIC to X2APIC. The initial Application Processors (APs) are configured
71 in XAPIC mode at reset and later enable X2APIC as a CPU feature.
72 All access mechanisms between XAPIC (mmio) and X2APIC (msr) switches
73 at runtime when this option is enabled.
74
Kyösti Mälkki176c8872021-05-29 20:33:22 +030075endchoice
76
Patrick Georgi0e9a9252009-10-06 20:48:07 +000077config UDELAY_LAPIC
78 bool
79 default n
80
Aaron Durbinfd8291c2013-04-29 17:18:49 -050081config LAPIC_MONOTONIC_TIMER
82 def_bool n
83 depends on UDELAY_LAPIC
Aaron Durbinfd8291c2013-04-29 17:18:49 -050084 help
Elyes HAOUASd6e96862016-08-21 10:12:15 +020085 Expose monotonic time using the local APIC.
Aaron Durbinfd8291c2013-04-29 17:18:49 -050086
Patrick Georgie135ac52012-11-20 11:53:47 +010087config UDELAY_LAPIC_FIXED_FSB
88 int
89
Ronald G. Minnich669c4a92009-08-29 03:00:51 +000090config UDELAY_TSC
91 bool
92 default n
93
Kyösti Mälkki0d6ddf82019-10-31 14:52:20 +020094config UNKNOWN_TSC_RATE
95 bool
96 default y if LAPIC_MONOTONIC_TIMER
Aaron Durbin8e73b5d2013-05-01 15:27:09 -050097
Aaron Durbine8501642013-04-29 22:22:55 -050098config TSC_MONOTONIC_TIMER
99 def_bool n
100 depends on UDELAY_TSC
Aaron Durbine8501642013-04-29 22:22:55 -0500101 help
102 Expose monotonic time using the TSC.
103
Stefan Reinauer0db68202012-08-07 14:44:51 -0700104config TSC_SYNC_LFENCE
105 bool
106 default n
107 help
108 The CPU driver should select this if the CPU needs
109 to execute an lfence instruction in order to synchronize
110 rdtsc. This is true for all modern AMD CPUs.
111
112config TSC_SYNC_MFENCE
113 bool
114 default n
115 help
116 The CPU driver should select this if the CPU needs
117 to execute an mfence instruction in order to synchronize
118 rdtsc. This is true for all modern Intel CPUs.
119
Arthur Heymans47be2d92019-10-12 17:32:09 +0200120config SETUP_XIP_CACHE
121 bool
Arthur Heymans47be2d92019-10-12 17:32:09 +0200122 depends on !NO_XIP_EARLY_STAGES
123 help
124 Select this option to set up an MTRR to cache XIP stages loaded
125 from the bootblock. This is useful on platforms lacking a
126 non-eviction mode and therefore need to be careful to avoid
127 eviction.
128
Arthur Heymans3134a812019-11-25 12:20:01 +0100129config X86_CLFLUSH_CAR
130 bool
131 help
132 Select this on platforms that allow CLFLUSH while operating in CAR.
133
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300134config HAVE_SMI_HANDLER
135 bool
136 default n
137 depends on (SMM_ASEG || SMM_TSEG)
138
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300139config NO_SMM
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300140 bool
141 default n
142
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300143config SMM_ASEG
Duncan Laurie8bb77232012-01-09 22:11:25 -0800144 bool
145 default n
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300146 depends on !NO_SMM
147
148config SMM_TSEG
149 bool
150 default y
151 depends on !(NO_SMM || SMM_ASEG)
152
Arthur Heymans66b28882022-11-01 23:45:59 +0100153if HAVE_SMI_HANDLER
Aaron Durbin50a34642013-01-03 17:38:47 -0600154
Raul E Rangeld3b83932018-06-12 10:43:09 -0600155config SMM_MODULE_STACK_SIZE
156 hex
Patrick Rudolphed8d7772021-06-12 06:21:27 +0200157 default 0x800 if ARCH_RAMSTAGE_X86_64
Raul E Rangeld3b83932018-06-12 10:43:09 -0600158 default 0x400
Raul E Rangeld3b83932018-06-12 10:43:09 -0600159 help
160 This option determines the size of the stack within the SMM handler
161 modules.
162
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300163endif
164
Patrick Georgice2564a2015-09-05 20:21:24 +0200165config SMM_LAPIC_REMAP_MITIGATION
166 bool
Arthur Heymans912a2622019-11-28 09:48:26 +0100167 default y if NORTHBRIDGE_INTEL_I945 || NORTHBRIDGE_INTEL_GM45 \
168 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_PINEVIEW \
Kyösti Mälkki7b73e8522022-11-08 04:43:41 +0000169 || NORTHBRIDGE_INTEL_E7505 || NORTHBRIDGE_INTEL_IRONLAKE
Patrick Georgice2564a2015-09-05 20:21:24 +0200170 default n
171
Robert Ziebaac8c3782022-09-07 16:25:15 -0600172config SMM_PCI_RESOURCE_STORE
173 bool
174 default n
175 help
176 This option enables support for storing PCI resources in SMRAM so
177 SMM can tell if they've been altered.
178
179config SMM_PCI_RESOURCE_STORE_NUM_SLOTS
180 int
181 default 8
182 help
183 Number of slots available to store PCI BARs in SMRAM
184
Aaron Durbin57686f82013-03-20 15:50:59 -0500185config X86_AMD_FIXED_MTRRS
186 bool
187 default n
188 help
189 This option informs the MTRR code to use the RdMem and WrMem fields
190 in the fixed MTRR MSRs.
Aaron Durbine0785c02013-10-21 12:15:29 -0500191
Subrata Banik9f91ced2021-07-28 15:38:32 +0530192config X86_INIT_NEED_1_SIPI
Marshall Dawson98f43a12019-08-05 16:18:56 -0600193 bool
194 default n
195 help
Alexander Goncharov893c3ae82023-02-04 15:20:37 +0400196 This option limits the number of SIPI signals sent during the
Marshall Dawson98f43a12019-08-05 16:18:56 -0600197 common AP setup. Intel documentation specifies an INIT SIPI SIPI
Subrata Banik9f91ced2021-07-28 15:38:32 +0530198 sequence, however this doesn't work on some AMD and Intel platforms.
199 These newer AMD and Intel platforms don't need the 10ms wait between
200 INIT and SIPI, so skip that too to save some time.
Marshall Dawson98f43a12019-08-05 16:18:56 -0600201
Lee Leahyae738ac2016-07-24 08:03:37 -0700202config SOC_SETS_MSRS
203 bool
204 default n
205 help
206 The SoC requires different access methods for reading and writing
207 the MSRs. Use SoC specific routines to handle the MSR access.
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600208
209config RESERVE_MTRRS_FOR_OS
210 bool
211 default n
212 help
213 This option allows a platform to reserve 2 MTRRs for the OS usage.
Alexander Goncharov893c3ae82023-02-04 15:20:37 +0400214 The Intel SDM documents that the first 6 MTRRs are intended for
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600215 the system BIOS and the last 2 are to be reserved for OS usage.
216 However, modern OSes use PAT to control cacheability instead of
217 using MTRRs.
Raul E Rangelb2346a52021-09-22 14:56:51 -0600218
Arthur Heymans4d75dbd2022-11-01 23:57:24 +0100219config AP_STACK_SIZE
220 hex
221 default 0x800
222 help
223 This is the amount of stack each AP needs. The BSP stack size can be
224 larger and is set with STACK_SIZE.
225
Johnny Lin107e7aa2021-01-14 17:49:08 +0800226config RUNTIME_CONFIGURABLE_SMM_LOGLEVEL
227 bool
228 default n
229 depends on DEBUG_SMI && CONSOLE_OVERRIDE_LOGLEVEL
230 help
231 This enables setting the SMM console log level at runtime for more
232 flexibility to use different log levels for each stage. Another reason
233 is that reading the log level from non-volatile memory such as flash
234 VPD or CMOS is not very ideal to be done in SMM, with this option the
235 value can be passed via the member variable in struct smm_runtime and
236 be referenced directly in SMM.
237
Arthur Heymans67f29e82022-04-17 10:37:13 +0200238endif # ARCH_X86