blob: 13ff65d67b5ecda1f1254142906d493912ed2647 [file] [log] [blame]
Stefan Reinauer9d5e36e2015-04-27 13:40:16 -07001config PARALLEL_MP
Kyösti Mälkki41a2c732021-05-29 21:23:18 +03002 def_bool y
3 depends on !LEGACY_SMP_INIT
Raul E Rangel99c84782021-10-08 13:10:38 -06004 select CPU_INFO_V2
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
Kyösti Mälkki41a2c732021-05-29 21:23:18 +030019config LEGACY_SMP_INIT
20 bool
21
Kyösti Mälkki176c8872021-05-29 20:33:22 +030022choice LAPIC_ACCESS_MODE
23 prompt "APIC operation mode"
24 default XAPIC_ONLY
25
26config XAPIC_ONLY
27 prompt "Set XAPIC mode"
28 bool
29
30config X2APIC_ONLY
31 prompt "Set X2APIC mode"
32 bool
33 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030034
35config X2APIC_RUNTIME
36 prompt "Support both XAPIC and X2APIC"
37 bool
38 depends on PARALLEL_MP
Kyösti Mälkki176c8872021-05-29 20:33:22 +030039
40endchoice
41
Patrick Georgi0e9a9252009-10-06 20:48:07 +000042config UDELAY_LAPIC
43 bool
44 default n
45
Aaron Durbinfd8291c2013-04-29 17:18:49 -050046config LAPIC_MONOTONIC_TIMER
47 def_bool n
48 depends on UDELAY_LAPIC
Aaron Durbinfd8291c2013-04-29 17:18:49 -050049 help
Elyes HAOUASd6e96862016-08-21 10:12:15 +020050 Expose monotonic time using the local APIC.
Aaron Durbinfd8291c2013-04-29 17:18:49 -050051
Patrick Georgie135ac52012-11-20 11:53:47 +010052config UDELAY_LAPIC_FIXED_FSB
53 int
54
Ronald G. Minnich669c4a92009-08-29 03:00:51 +000055config UDELAY_TSC
56 bool
57 default n
58
Kyösti Mälkki0d6ddf82019-10-31 14:52:20 +020059config UNKNOWN_TSC_RATE
60 bool
61 default y if LAPIC_MONOTONIC_TIMER
Aaron Durbin8e73b5d2013-05-01 15:27:09 -050062
Aaron Durbine8501642013-04-29 22:22:55 -050063config TSC_MONOTONIC_TIMER
64 def_bool n
65 depends on UDELAY_TSC
Aaron Durbine8501642013-04-29 22:22:55 -050066 help
67 Expose monotonic time using the TSC.
68
Stefan Reinauer0db68202012-08-07 14:44:51 -070069config TSC_SYNC_LFENCE
70 bool
71 default n
72 help
73 The CPU driver should select this if the CPU needs
74 to execute an lfence instruction in order to synchronize
75 rdtsc. This is true for all modern AMD CPUs.
76
77config TSC_SYNC_MFENCE
78 bool
79 default n
80 help
81 The CPU driver should select this if the CPU needs
82 to execute an mfence instruction in order to synchronize
83 rdtsc. This is true for all modern Intel CPUs.
84
Arthur Heymans47be2d92019-10-12 17:32:09 +020085config SETUP_XIP_CACHE
86 bool
Arthur Heymans47be2d92019-10-12 17:32:09 +020087 depends on !NO_XIP_EARLY_STAGES
88 help
89 Select this option to set up an MTRR to cache XIP stages loaded
90 from the bootblock. This is useful on platforms lacking a
91 non-eviction mode and therefore need to be careful to avoid
92 eviction.
93
Stefan Reinauer8aedcbc2010-12-16 23:37:17 +000094config LOGICAL_CPUS
95 bool
96 default y
97
Kyösti Mälkki4d372c72019-07-08 13:48:57 +030098config HAVE_SMI_HANDLER
99 bool
100 default n
101 depends on (SMM_ASEG || SMM_TSEG)
102
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300103config NO_SMM
Kyösti Mälkki4d372c72019-07-08 13:48:57 +0300104 bool
105 default n
106
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300107config SMM_ASEG
Duncan Laurie8bb77232012-01-09 22:11:25 -0800108 bool
109 default n
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300110 depends on !NO_SMM
111
112config SMM_TSEG
113 bool
114 default y
115 depends on !(NO_SMM || SMM_ASEG)
116
117if SMM_TSEG
Aaron Durbin50a34642013-01-03 17:38:47 -0600118
119config SMM_MODULE_HEAP_SIZE
120 hex
121 default 0x4000
Aaron Durbin50a34642013-01-03 17:38:47 -0600122 help
123 This option determines the size of the heap within the SMM handler
124 modules.
Aaron Durbin57686f82013-03-20 15:50:59 -0500125
Raul E Rangeld3b83932018-06-12 10:43:09 -0600126config SMM_MODULE_STACK_SIZE
127 hex
Patrick Rudolphed8d7772021-06-12 06:21:27 +0200128 default 0x800 if ARCH_RAMSTAGE_X86_64
Raul E Rangeld3b83932018-06-12 10:43:09 -0600129 default 0x400
Raul E Rangeld3b83932018-06-12 10:43:09 -0600130 help
131 This option determines the size of the stack within the SMM handler
132 modules.
133
Marshall Dawson46fc68472018-10-25 13:01:55 -0600134config SMM_STUB_STACK_SIZE
135 hex
136 default 0x400
Marshall Dawson46fc68472018-10-25 13:01:55 -0600137 help
138 This option determines the size of the stack within the SMM handler
139 modules.
140
Kyösti Mälkki8abf66e2019-07-08 09:56:00 +0300141endif
142
Patrick Georgice2564a2015-09-05 20:21:24 +0200143config SMM_LAPIC_REMAP_MITIGATION
144 bool
145 default y if NORTHBRIDGE_INTEL_I945
146 default y if NORTHBRIDGE_INTEL_GM45
Angel Pons95de2312020-02-17 13:08:53 +0100147 default y if NORTHBRIDGE_INTEL_IRONLAKE
Patrick Georgice2564a2015-09-05 20:21:24 +0200148 default n
149
Damien Zammit149c4c52015-11-28 21:27:05 +1100150config SERIALIZED_SMM_INITIALIZATION
151 bool
152 default n
153 help
154 On some CPUs, there is a race condition in SMM.
155 This can occur when both hyperthreads change SMM state
156 variables in parallel without coordination.
157 Setting this option serializes the SMM initialization
158 to avoid an ugly hang in the boot process at the cost
159 of a slightly longer boot time.
160
Aaron Durbin57686f82013-03-20 15:50:59 -0500161config X86_AMD_FIXED_MTRRS
162 bool
163 default n
164 help
165 This option informs the MTRR code to use the RdMem and WrMem fields
166 in the fixed MTRR MSRs.
Aaron Durbine0785c02013-10-21 12:15:29 -0500167
Subrata Banik9f91ced2021-07-28 15:38:32 +0530168config X86_INIT_NEED_1_SIPI
Marshall Dawson98f43a12019-08-05 16:18:56 -0600169 bool
170 default n
171 help
172 This option limits the number of SIPI signals sent during during the
173 common AP setup. Intel documentation specifies an INIT SIPI SIPI
Subrata Banik9f91ced2021-07-28 15:38:32 +0530174 sequence, however this doesn't work on some AMD and Intel platforms.
175 These newer AMD and Intel platforms don't need the 10ms wait between
176 INIT and SIPI, so skip that too to save some time.
Marshall Dawson98f43a12019-08-05 16:18:56 -0600177
Lee Leahyae738ac2016-07-24 08:03:37 -0700178config SOC_SETS_MSRS
179 bool
180 default n
181 help
182 The SoC requires different access methods for reading and writing
183 the MSRs. Use SoC specific routines to handle the MSR access.
Tim Wawrzynczak6fcc46d2021-04-19 13:47:36 -0600184
185config RESERVE_MTRRS_FOR_OS
186 bool
187 default n
188 help
189 This option allows a platform to reserve 2 MTRRs for the OS usage.
190 The Intel SDM documents that the the first 6 MTRRs are intended for
191 the system BIOS and the last 2 are to be reserved for OS usage.
192 However, modern OSes use PAT to control cacheability instead of
193 using MTRRs.
Raul E Rangelb2346a52021-09-22 14:56:51 -0600194
195config CPU_INFO_V2
196 bool
197 depends on PARALLEL_MP
198 help
199 Enables the new method of locating struct cpu_info. This new method
200 uses the %gs segment to locate the cpu_info pointer. The old method
201 relied on the stack being CONFIG_STACK_SIZE aligned.