cpu/x86/smm: Add SMM_LEGACY_ASEG

Followup will allow use of PARALLEL_MP with SMM_ASEG so
some guards need to be adjusted.

Change-Id: If032ce2be4749559db0d46ab5ae422afa7666785
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61480
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/src/cpu/amd/agesa/family15tn/Makefile.inc b/src/cpu/amd/agesa/family15tn/Makefile.inc
index a591447..ca51196 100644
--- a/src/cpu/amd/agesa/family15tn/Makefile.inc
+++ b/src/cpu/amd/agesa/family15tn/Makefile.inc
@@ -9,4 +9,4 @@
 smm-y += udelay.c
 
 subdirs-y += ../../mtrr
-subdirs-y += ../../smm
+subdirs-$(CONFIG_SMM_LEGACY_ASEG) += ../../smm
diff --git a/src/cpu/amd/smm/Makefile.inc b/src/cpu/amd/smm/Makefile.inc
index a645122..97a6694 100644
--- a/src/cpu/amd/smm/Makefile.inc
+++ b/src/cpu/amd/smm/Makefile.inc
@@ -1,2 +1,2 @@
 
-ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smm_init.c
+ramstage-y += smm_init.c
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index d021564..86f31e0 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -114,6 +114,12 @@
 	default y
 	depends on !(NO_SMM || SMM_ASEG)
 
+config SMM_LEGACY_ASEG
+	bool
+	default y if HAVE_SMI_HANDLER && SMM_ASEG && LEGACY_SMP_INIT
+	help
+	  SMM support without PARALLEL_MP, to be deprecated.
+
 if SMM_TSEG
 
 config SMM_MODULE_HEAP_SIZE
diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c
index 5f2b27b..7780be2 100644
--- a/src/cpu/x86/lapic/lapic_cpu_init.c
+++ b/src/cpu/x86/lapic/lapic_cpu_init.c
@@ -391,7 +391,8 @@
 	if (is_smp_boot())
 		copy_secondary_start_to_lowest_1M();
 
-	smm_init();
+	if (CONFIG(SMM_LEGACY_ASEG))
+		smm_init();
 
 	/* Initialize the bootstrap processor */
 	cpu_initialize(0);
@@ -403,7 +404,8 @@
 	if (is_smp_boot())
 		wait_other_cpus_stop(cpu_bus);
 
-	smm_init_completion();
+	if (CONFIG(SMM_LEGACY_ASEG))
+		smm_init_completion();
 
 	if (is_smp_boot())
 		recover_lowest_1M();
diff --git a/src/include/cpu/x86/smi_deprecated.h b/src/include/cpu/x86/smi_deprecated.h
index 6213915..262aa0b 100644
--- a/src/include/cpu/x86/smi_deprecated.h
+++ b/src/include/cpu/x86/smi_deprecated.h
@@ -3,16 +3,8 @@
 #ifndef __X86_SMI_DEPRECATED_H__
 #define __X86_SMI_DEPRECATED_H__
 
-#include <stdint.h>
-
-#if CONFIG(PARALLEL_MP) || !CONFIG(HAVE_SMI_HANDLER)
-/* Empty stubs for platforms without SMI handlers. */
-static inline void smm_init(void) { }
-static inline void smm_init_completion(void) { }
-#else
 void smm_init(void);
 void smm_init_completion(void);
-#endif
 
 /* Entry from smmhandler.S. */
 void smi_handler(void);
diff --git a/src/southbridge/intel/i82801dx/Makefile.inc b/src/southbridge/intel/i82801dx/Makefile.inc
index 030f7b4..ff10091 100644
--- a/src/southbridge/intel/i82801dx/Makefile.inc
+++ b/src/southbridge/intel/i82801dx/Makefile.inc
@@ -11,10 +11,8 @@
 ramstage-y += usb.c
 ramstage-y += usb2.c
 
-ifeq ($(CONFIG_SMM_ASEG),y)
-ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c
-ramstage-$(CONFIG_HAVE_SMI_HANDLER) += ../../../cpu/x86/smm/smmrelocate.S
-endif
+ramstage-$(CONFIG_SMM_LEGACY_ASEG) += smi.c
+ramstage-$(CONFIG_SMM_LEGACY_ASEG) += ../../../cpu/x86/smm/smmrelocate.S
 
 smm-y += smihandler.c
 
diff --git a/src/southbridge/intel/i82801dx/lpc.c b/src/southbridge/intel/i82801dx/lpc.c
index bb38e1a..972ca76 100644
--- a/src/southbridge/intel/i82801dx/lpc.c
+++ b/src/southbridge/intel/i82801dx/lpc.c
@@ -279,7 +279,7 @@
 	/* Don't allow evil boot loaders, kernels, or
 	 * userspace applications to deceive us:
 	 */
-	if (CONFIG(HAVE_SMI_HANDLER) && !CONFIG(PARALLEL_MP))
+	if (CONFIG(SMM_LEGACY_ASEG))
 		aseg_smm_lock();
 }
 
diff --git a/src/southbridge/intel/i82801ix/Makefile.inc b/src/southbridge/intel/i82801ix/Makefile.inc
index dada885..d376622 100644
--- a/src/southbridge/intel/i82801ix/Makefile.inc
+++ b/src/southbridge/intel/i82801ix/Makefile.inc
@@ -28,10 +28,8 @@
 ramstage-y += madt.c
 endif
 
-ifeq ($(CONFIG_SMM_ASEG),y)
-ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c
-ramstage-$(CONFIG_HAVE_SMI_HANDLER) += ../../../cpu/x86/smm/smmrelocate.S
-endif
+ramstage-$(CONFIG_SMM_LEGACY_ASEG) += smi.c
+ramstage-$(CONFIG_SMM_LEGACY_ASEG) += ../../../cpu/x86/smm/smmrelocate.S
 
 CPPFLAGS_common += -I$(src)/southbridge/intel/i82801ix/include
 
diff --git a/src/southbridge/intel/i82801ix/lpc.c b/src/southbridge/intel/i82801ix/lpc.c
index 21f1faa..0132ac5 100644
--- a/src/southbridge/intel/i82801ix/lpc.c
+++ b/src/southbridge/intel/i82801ix/lpc.c
@@ -378,7 +378,7 @@
 	/* Don't allow evil boot loaders, kernels, or
 	 * userspace applications to deceive us:
 	 */
-	if (CONFIG(HAVE_SMI_HANDLER) && !CONFIG(PARALLEL_MP))
+	if (CONFIG(SMM_LEGACY_ASEG))
 		aseg_smm_lock();
 }
 
diff --git a/src/southbridge/intel/i82801ix/smihandler.c b/src/southbridge/intel/i82801ix/smihandler.c
index 0483447..e02b396 100644
--- a/src/southbridge/intel/i82801ix/smihandler.c
+++ b/src/southbridge/intel/i82801ix/smihandler.c
@@ -9,7 +9,7 @@
 
 #include <soc/nvs.h>
 
-#if !CONFIG(SMM_TSEG)
+#if CONFIG(SMM_LEGACY_ASEG)
 /* For qemu/x86-q35 to build properly. */
 struct global_nvs *gnvs;
 #endif