diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2021-05-29 20:33:22 +0300 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-06-09 05:19:58 +0000 |
commit | 176c8877ce8820ecc4f74748c83ab993b938eac6 (patch) | |
tree | 46a82e28b03ec2563ea9ac76f919da970700cb3e /src/cpu | |
parent | 4cf65e9cc37f6f1e0467d57a680fcbdeb1a8614d (diff) |
cpu/x86/lapic: Add Kconfig choice LAPIC_ACCESS_MODE
Allows compile-time optimisation on platforms that do not wish
to enable runtime checking of X2APIC.
Legacy lapic_cpu_init() is incompatible so there is dependency
on PARALLEL_MP. Also stop_this_cpu() is incompatible, so there
is dependency on !AP_IN_SIPI_WAIT.
Since the code actually lacks enablement of X2APIC (apparently
assuming the blob has done it) and the other small flaws pointed
out in earlier reviews, X2APIC_RUNTIME is not selected per
default on any platform yet.
Change-Id: I8269f9639ee3e89a2c2b4178d266ba2dac46db3f
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55073
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/x86/Kconfig | 22 | ||||
-rw-r--r-- | src/cpu/x86/lapic/lapic.c | 4 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig index 7aba5c4658..d7057ad861 100644 --- a/src/cpu/x86/Kconfig +++ b/src/cpu/x86/Kconfig @@ -17,6 +17,28 @@ config PARALLEL_MP_AP_WORK config LEGACY_SMP_INIT bool +choice LAPIC_ACCESS_MODE + prompt "APIC operation mode" + default XAPIC_ONLY + +config XAPIC_ONLY + prompt "Set XAPIC mode" + bool + +config X2APIC_ONLY + prompt "Set X2APIC mode" + bool + depends on PARALLEL_MP + depends on !AP_IN_SIPI_WAIT + +config X2APIC_RUNTIME + prompt "Support both XAPIC and X2APIC" + bool + depends on PARALLEL_MP + depends on !AP_IN_SIPI_WAIT + +endchoice + config UDELAY_LAPIC bool default n diff --git a/src/cpu/x86/lapic/lapic.c b/src/cpu/x86/lapic/lapic.c index a5b4cd5047..09dd00397e 100644 --- a/src/cpu/x86/lapic/lapic.c +++ b/src/cpu/x86/lapic/lapic.c @@ -3,6 +3,10 @@ #include <cpu/x86/lapic.h> #include <console/console.h> +#if !CONFIG(XAPIC_ONLY) +#error "BUG: lapic_write_around() needs to be fixed for X2APIC." +#endif + void lapic_virtual_wire_mode_init(void) { /* this is so interrupts work. This is very limited scope -- |