blob: 8d76638ff91dcb51fed8311ef244f4afd60465ce [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
Kyösti Mälkki41a2c732021-05-29 21:23:18 +030021config LEGACY_SMP_INIT
22 bool
23
Subrata Banik64c04e02022-05-25 01:25:55 +053024config DEFAULT_X2APIC
25 def_bool n
26 help
27 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC.
28
29config DEFAULT_X2APIC_RUNTIME
30 def_bool n
31 help
32 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC_RUNTIME.
33
Subrata Banik55d300c2022-07-12 11:06:15 +000034config DEFAULT_X2APIC_LATE_WORKAROUND
35 def_bool n
36 help
37 Allow SoC code to set LAPIC_ACCESS_MODE to X2APIC_LATE_WORKAROUND.
38
Kyösti Mälkki176c8872021-05-29 20:33:22 +030039choice LAPIC_ACCESS_MODE
40 prompt "APIC operation mode"
Subrata Banik64c04e02022-05-25 01:25:55 +053041 default X2APIC_ONLY if DEFAULT_X2APIC
42 default X2APIC_RUNTIME if DEFAULT_X2APIC_RUNTIME
Subrata Banik55d300c2022-07-12 11:06:15 +000043 default X2APIC_LATE_WORKAROUND if DEFAULT_X2APIC_LATE_WORKAROUND
Kyösti Mälkki176c8872021-05-29 20:33:22 +030044 default XAPIC_ONLY
45
46config XAPIC_ONLY
47 prompt "Set XAPIC mode"
48 bool
49
50config X2APIC_ONLY
51 prompt "Set X2APIC mode"
52 bool
53 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030054
55config X2APIC_RUNTIME
56 prompt "Support both XAPIC and X2APIC"
57 bool
58 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030059
Subrata Banik2125a172022-07-12 10:55:21 +000060config X2APIC_LATE_WORKAROUND
61 prompt "Use XAPIC for AP bringup, then change to X2APIC"
62 bool
Subrata Banikfb287992022-07-24 11:19:04 +053063 depends on PARALLEL_MP && MAX_CPUS < 256
Subrata Banik2125a172022-07-12 10:55:21 +000064 help
65 Choose this option if the platform supports dynamic switching between
66 XAPIC to X2APIC. The initial Application Processors (APs) are configured
67 in XAPIC mode at reset and later enable X2APIC as a CPU feature.
68 All access mechanisms between XAPIC (mmio) and X2APIC (msr) switches
69 at runtime when this option is enabled.
70
Kyösti Mälkki176c8872021-05-29 20:33:22 +030071endchoice
72
Patrick Georgi0e9a9252009-10-06 20:48:07 +000073config UDELAY_LAPIC
74 bool
75 default n
76
Aaron Durbinfd8291c2013-04-29 17:18:49 -050077config LAPIC_MONOTONIC_TIMER
78 def_bool n
79 depends on UDELAY_LAPIC
Aaron Durbinfd8291c2013-04-29 17:18:49 -050080 help
Elyes HAOUASd6e96862016-08-21 10:12:15 +020081 Expose monotonic time using the local APIC.
Aaron Durbinfd8291c2013-04-29 17:18:49 -050082
Patrick Georgie135ac52012-11-20 11:53:47 +010083config UDELAY_LAPIC_FIXED_FSB
84 int
85
Ronald G. Minnich669c4a92009-08-29 03:00:51 +000086config UDELAY_TSC
87 bool
88 default n
89
Kyösti Mälkki0d6ddf82019-10-31 14:52:20 +020090config UNKNOWN_TSC_RATE
91 bool
92 default y if LAPIC_MONOTONIC_TIMER
Aaron Durbin8e73b5d2013-05-01 15:27:09 -050093
Aaron Durbine8501642013-04-29 22:22:55 -050094config TSC_MONOTONIC_TIMER
95 def_bool n
96 depends on UDELAY_TSC
Aaron Durbine8501642013-04-29 22:22:55 -050097 help
98 Expose monotonic time using the TSC.
99
Stefan Reinauer0db68202012-08-07 14:44:51 -0700100config TSC_SYNC_LFENCE
101 bool
102 default n
103 help
104 The CPU driver should select this if the CPU needs
105 to execute an lfence instruction in order to synchronize
106 rdtsc. This is true for all modern AMD CPUs.
107
108config TSC_SYNC_MFENCE
109 bool
110 default n
111 help
112 The CPU driver should select this if the CPU needs
113 to execute an mfence instruction in order to synchronize
114 rdtsc. This is true for all modern Intel CPUs.
115
Arthur Heymans47be2d92019-10-12 17:32:09 +0200116config SETUP_XIP_CACHE
117 bool
Arthur Heymans47be2d92019-10-12 17:32:09 +0200118 depends on !NO_XIP_EARLY_STAGES
119 help
120 Select this option to set up an MTRR to cache XIP stages loaded
121 from the bootblock. This is useful on platforms lacking a
122 non-eviction mode and therefore need to be careful to avoid
123 eviction.
124
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +0000125config LOGICAL_CPUS
126 bool
127 default y
128
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300129config HAVE_SMI_HANDLER
130 bool
131 default n
132 depends on (SMM_ASEG || SMM_TSEG)
133
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300134config NO_SMM
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300135 bool
136 default n
137
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300138config SMM_ASEG
Duncan Laurie8bb77232012-01-09 22:11:25 -0800139 bool
140 default n
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300141 depends on !NO_SMM
142
143config SMM_TSEG
144 bool
145 default y
146 depends on !(NO_SMM || SMM_ASEG)
147
Kyösti Mälkki894f6f82022-01-29 14:05:58 +0200148config SMM_LEGACY_ASEG
149 bool
150 default y if HAVE_SMI_HANDLER && SMM_ASEG && LEGACY_SMP_INIT
151 help
152 SMM support without PARALLEL_MP, to be deprecated.
153
Arthur Heymansb4ba2892021-10-28 16:48:36 +0200154if HAVE_SMI_HANDLER && !SMM_LEGACY_ASEG
Aaron Durbin50a34642013-01-03 17:38:47 -0600155
Raul E Rangeld3b83932018-06-12 10:43:09 -0600156config SMM_MODULE_STACK_SIZE
157 hex
Patrick Rudolphed8d7772021-06-12 06:21:27 +0200158 default 0x800 if ARCH_RAMSTAGE_X86_64
Raul E Rangeld3b83932018-06-12 10:43:09 -0600159 default 0x400
Raul E Rangeld3b83932018-06-12 10:43:09 -0600160 help
161 This option determines the size of the stack within the SMM handler
162 modules.
163
Marshall Dawson46fc68472018-10-25 13:01:55 -0600164config SMM_STUB_STACK_SIZE
165 hex
166 default 0x400
Marshall Dawson46fc68472018-10-25 13:01:55 -0600167 help
168 This option determines the size of the stack within the SMM handler
169 modules.
170
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300171endif
172
Patrick Georgice2564a2015-09-05 20:21:24 +0200173config SMM_LAPIC_REMAP_MITIGATION
174 bool
175 default y if NORTHBRIDGE_INTEL_I945
176 default y if NORTHBRIDGE_INTEL_GM45
Angel Pons95de2312020-02-17 13:08:53 +0100177 default y if NORTHBRIDGE_INTEL_IRONLAKE
Patrick Georgice2564a2015-09-05 20:21:24 +0200178 default n
179
Aaron Durbin57686f82013-03-20 15:50:59 -0500180config X86_AMD_FIXED_MTRRS
181 bool
182 default n
183 help
184 This option informs the MTRR code to use the RdMem and WrMem fields
185 in the fixed MTRR MSRs.
Aaron Durbine0785c02013-10-21 12:15:29 -0500186
Subrata Banik9f91ced2021-07-28 15:38:32 +0530187config X86_INIT_NEED_1_SIPI
Marshall Dawson98f43a12019-08-05 16:18:56 -0600188 bool
189 default n
190 help
191 This option limits the number of SIPI signals sent during during the
192 common AP setup. Intel documentation specifies an INIT SIPI SIPI
Subrata Banik9f91ced2021-07-28 15:38:32 +0530193 sequence, however this doesn't work on some AMD and Intel platforms.
194 These newer AMD and Intel platforms don't need the 10ms wait between
195 INIT and SIPI, so skip that too to save some time.
Marshall Dawson98f43a12019-08-05 16:18:56 -0600196
Lee Leahyae738ac2016-07-24 08:03:37 -0700197config SOC_SETS_MSRS
198 bool
199 default n
200 help
201 The SoC requires different access methods for reading and writing
202 the MSRs. Use SoC specific routines to handle the MSR access.
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600203
204config RESERVE_MTRRS_FOR_OS
205 bool
206 default n
207 help
208 This option allows a platform to reserve 2 MTRRs for the OS usage.
209 The Intel SDM documents that the the first 6 MTRRs are intended for
210 the system BIOS and the last 2 are to be reserved for OS usage.
211 However, modern OSes use PAT to control cacheability instead of
212 using MTRRs.
Raul E Rangelb2346a52021-09-22 14:56:51 -0600213
214config CPU_INFO_V2
215 bool
216 depends on PARALLEL_MP
217 help
218 Enables the new method of locating struct cpu_info. This new method
219 uses the %gs segment to locate the cpu_info pointer. The old method
220 relied on the stack being CONFIG_STACK_SIZE aligned.
Arthur Heymans67f29e82022-04-17 10:37:13 +0200221
222endif # ARCH_X86