blob: ec7482c4e1a71443dbdf3292568d2017def3e376 [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
5 depends on !LEGACY_SMP_INIT
Raul E Rangel99c84782021-10-08 13:10:38 -06006 select CPU_INFO_V2
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
Kyösti Mälkki41a2c732021-05-29 21:23:18 +030030config LEGACY_SMP_INIT
31 bool
32
Subrata Banik64c04e02022-05-25 01:25:55 +053033config DEFAULT_X2APIC
34 def_bool n
35 help
36 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC.
37
38config DEFAULT_X2APIC_RUNTIME
39 def_bool n
40 help
41 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC_RUNTIME.
42
Subrata Banik55d300c2022-07-12 11:06:15 +000043config DEFAULT_X2APIC_LATE_WORKAROUND
44 def_bool n
45 help
46 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC_LATE_WORKAROUND.
47
Kyösti Mälkki176c8872021-05-29 20:33:22 +030048choice LAPIC_ACCESS_MODE
49 prompt "APIC operation mode"
Subrata Banik64c04e02022-05-25 01:25:55 +053050 default X2APIC_ONLY if DEFAULT_X2APIC
51 default X2APIC_RUNTIME if DEFAULT_X2APIC_RUNTIME
Subrata Banik55d300c2022-07-12 11:06:15 +000052 default X2APIC_LATE_WORKAROUND if DEFAULT_X2APIC_LATE_WORKAROUND
Kyösti Mälkki176c8872021-05-29 20:33:22 +030053 default XAPIC_ONLY
54
55config XAPIC_ONLY
56 prompt "Set XAPIC mode"
57 bool
58
59config X2APIC_ONLY
60 prompt "Set X2APIC mode"
61 bool
62 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030063
64config X2APIC_RUNTIME
65 prompt "Support both XAPIC and X2APIC"
66 bool
67 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030068
Subrata Banik2125a172022-07-12 10:55:21 +000069config X2APIC_LATE_WORKAROUND
70 prompt "Use XAPIC for AP bringup, then change to X2APIC"
71 bool
Subrata Banikfb287992022-07-24 11:19:04 +053072 depends on PARALLEL_MP && MAX_CPUS < 256
Subrata Banik2125a172022-07-12 10:55:21 +000073 help
74 Choose this option if the platform supports dynamic switching between
75 XAPIC to X2APIC. The initial Application Processors (APs) are configured
76 in XAPIC mode at reset and later enable X2APIC as a CPU feature.
77 All access mechanisms between XAPIC (mmio) and X2APIC (msr) switches
78 at runtime when this option is enabled.
79
Kyösti Mälkki176c8872021-05-29 20:33:22 +030080endchoice
81
Patrick Georgi0e9a9252009-10-06 20:48:07 +000082config UDELAY_LAPIC
83 bool
84 default n
85
Aaron Durbinfd8291c2013-04-29 17:18:49 -050086config LAPIC_MONOTONIC_TIMER
87 def_bool n
88 depends on UDELAY_LAPIC
Aaron Durbinfd8291c2013-04-29 17:18:49 -050089 help
Elyes HAOUASd6e96862016-08-21 10:12:15 +020090 Expose monotonic time using the local APIC.
Aaron Durbinfd8291c2013-04-29 17:18:49 -050091
Patrick Georgie135ac52012-11-20 11:53:47 +010092config UDELAY_LAPIC_FIXED_FSB
93 int
94
Ronald G. Minnich669c4a92009-08-29 03:00:51 +000095config UDELAY_TSC
96 bool
97 default n
98
Kyösti Mälkki0d6ddf82019-10-31 14:52:20 +020099config UNKNOWN_TSC_RATE
100 bool
101 default y if LAPIC_MONOTONIC_TIMER
Aaron Durbin8e73b5d2013-05-01 15:27:09 -0500102
Aaron Durbine8501642013-04-29 22:22:55 -0500103config TSC_MONOTONIC_TIMER
104 def_bool n
105 depends on UDELAY_TSC
Aaron Durbine8501642013-04-29 22:22:55 -0500106 help
107 Expose monotonic time using the TSC.
108
Stefan Reinauer0db68202012-08-07 14:44:51 -0700109config TSC_SYNC_LFENCE
110 bool
111 default n
112 help
113 The CPU driver should select this if the CPU needs
114 to execute an lfence instruction in order to synchronize
115 rdtsc. This is true for all modern AMD CPUs.
116
117config TSC_SYNC_MFENCE
118 bool
119 default n
120 help
121 The CPU driver should select this if the CPU needs
122 to execute an mfence instruction in order to synchronize
123 rdtsc. This is true for all modern Intel CPUs.
124
Arthur Heymans47be2d92019-10-12 17:32:09 +0200125config SETUP_XIP_CACHE
126 bool
Arthur Heymans47be2d92019-10-12 17:32:09 +0200127 depends on !NO_XIP_EARLY_STAGES
128 help
129 Select this option to set up an MTRR to cache XIP stages loaded
130 from the bootblock. This is useful on platforms lacking a
131 non-eviction mode and therefore need to be careful to avoid
132 eviction.
133
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000134config LOGICAL_CPUS
135 bool
136 default y
137
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300138config HAVE_SMI_HANDLER
139 bool
140 default n
141 depends on (SMM_ASEG || SMM_TSEG)
142
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300143config NO_SMM
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300144 bool
145 default n
146
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300147config SMM_ASEG
Duncan Laurie8bb77232012-01-09 22:11:25 -0800148 bool
149 default n
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300150 depends on !NO_SMM
151
152config SMM_TSEG
153 bool
154 default y
155 depends on !(NO_SMM || SMM_ASEG)
156
Kyösti Mälkki894f6f82022-01-29 14:05:58 +0200157config SMM_LEGACY_ASEG
158 bool
159 default y if HAVE_SMI_HANDLER && SMM_ASEG && LEGACY_SMP_INIT
160 help
161 SMM support without PARALLEL_MP, to be deprecated.
162
Arthur Heymansb4ba2892021-10-28 16:48:36 +0200163if HAVE_SMI_HANDLER && !SMM_LEGACY_ASEG
Aaron Durbin50a34642013-01-03 17:38:47 -0600164
Raul E Rangeld3b83932018-06-12 10:43:09 -0600165config SMM_MODULE_STACK_SIZE
166 hex
Patrick Rudolphed8d7772021-06-12 06:21:27 +0200167 default 0x800 if ARCH_RAMSTAGE_X86_64
Raul E Rangeld3b83932018-06-12 10:43:09 -0600168 default 0x400
Raul E Rangeld3b83932018-06-12 10:43:09 -0600169 help
170 This option determines the size of the stack within the SMM handler
171 modules.
172
Marshall Dawson46fc68472018-10-25 13:01:55 -0600173config SMM_STUB_STACK_SIZE
174 hex
175 default 0x400
Marshall Dawson46fc68472018-10-25 13:01:55 -0600176 help
177 This option determines the size of the stack within the SMM handler
178 modules.
179
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300180endif
181
Patrick Georgice2564a2015-09-05 20:21:24 +0200182config SMM_LAPIC_REMAP_MITIGATION
183 bool
Arthur Heymans912a2622019-11-28 09:48:26 +0100184 default y if NORTHBRIDGE_INTEL_I945 || NORTHBRIDGE_INTEL_GM45 \
185 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_PINEVIEW \
186 || NORTHBRIDGE_INTEL_E7505 || NORTHBRIDGE_INTEL_IRONLAKE
Patrick Georgice2564a2015-09-05 20:21:24 +0200187 default n
188
Aaron Durbin57686f82013-03-20 15:50:59 -0500189config X86_AMD_FIXED_MTRRS
190 bool
191 default n
192 help
193 This option informs the MTRR code to use the RdMem and WrMem fields
194 in the fixed MTRR MSRs.
Aaron Durbine0785c02013-10-21 12:15:29 -0500195
Subrata Banik9f91ced2021-07-28 15:38:32 +0530196config X86_INIT_NEED_1_SIPI
Marshall Dawson98f43a12019-08-05 16:18:56 -0600197 bool
198 default n
199 help
200 This option limits the number of SIPI signals sent during during the
201 common AP setup. Intel documentation specifies an INIT SIPI SIPI
Subrata Banik9f91ced2021-07-28 15:38:32 +0530202 sequence, however this doesn't work on some AMD and Intel platforms.
203 These newer AMD and Intel platforms don't need the 10ms wait between
204 INIT and SIPI, so skip that too to save some time.
Marshall Dawson98f43a12019-08-05 16:18:56 -0600205
Lee Leahyae738ac2016-07-24 08:03:37 -0700206config SOC_SETS_MSRS
207 bool
208 default n
209 help
210 The SoC requires different access methods for reading and writing
211 the MSRs. Use SoC specific routines to handle the MSR access.
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600212
213config RESERVE_MTRRS_FOR_OS
214 bool
215 default n
216 help
217 This option allows a platform to reserve 2 MTRRs for the OS usage.
218 The Intel SDM documents that the the first 6 MTRRs are intended for
219 the system BIOS and the last 2 are to be reserved for OS usage.
220 However, modern OSes use PAT to control cacheability instead of
221 using MTRRs.
Raul E Rangelb2346a52021-09-22 14:56:51 -0600222
223config CPU_INFO_V2
224 bool
225 depends on PARALLEL_MP
226 help
227 Enables the new method of locating struct cpu_info. This new method
228 uses the %gs segment to locate the cpu_info pointer. The old method
229 relied on the stack being CONFIG_STACK_SIZE aligned.
Arthur Heymans67f29e82022-04-17 10:37:13 +0200230
231endif # ARCH_X86