We eventually want to be able to build a stripped down Xen for a single
platform. Make a start with CONFIG_{AMD,INTEL} (hidden behind EXPERT, but
available to randconfig), and adjust the microcode logic.
No practical change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>
CC: Stefano Stabellini <stefano.stabellini@amd.com>
CC: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
I've intentionally ignored the other vendors for now. They can be put into
Kconfig by whomever figures out the actual dependencies between their init
routines.
v2:
* Tweak text
---
xen/arch/x86/Kconfig | 2 ++
xen/arch/x86/Kconfig.cpu | 22 ++++++++++++++++++++++
xen/arch/x86/cpu/microcode/Makefile | 4 ++--
xen/arch/x86/cpu/microcode/private.h | 9 +++++++++
4 files changed, 35 insertions(+), 2 deletions(-)
create mode 100644 xen/arch/x86/Kconfig.cpu
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index eac77573bd75..d9eacdd7e0fa 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -49,6 +49,8 @@ config HAS_CC_CET_IBT
menu "Architecture Features"
+source "arch/x86/Kconfig.cpu"
+
source "arch/Kconfig"
config PV
diff --git a/xen/arch/x86/Kconfig.cpu b/xen/arch/x86/Kconfig.cpu
new file mode 100644
index 000000000000..3c5d88fdfd16
--- /dev/null
+++ b/xen/arch/x86/Kconfig.cpu
@@ -0,0 +1,22 @@
+menu "Supported CPU vendors"
+ visible if EXPERT
+
+config AMD
+ bool "AMD"
+ default y
+ help
+ Detection, tunings and quirks for AMD platforms.
+
+ May be turned off in builds targetting other vendors. Otherwise,
+ must be enabled for Xen to work suitably on AMD platforms.
+
+config INTEL
+ bool "Intel"
+ default y
+ help
+ Detection, tunings and quirks for Intel platforms.
+
+ May be turned off in builds targetting other vendors. Otherwise,
+ must be enabled for Xen to work suitably on Intel platforms.
+
+endmenu
diff --git a/xen/arch/x86/cpu/microcode/Makefile b/xen/arch/x86/cpu/microcode/Makefile
index aae235245b06..30d600544f45 100644
--- a/xen/arch/x86/cpu/microcode/Makefile
+++ b/xen/arch/x86/cpu/microcode/Makefile
@@ -1,3 +1,3 @@
-obj-y += amd.o
+obj-$(CONFIG_AMD) += amd.o
obj-y += core.o
-obj-y += intel.o
+obj-$(CONFIG_INTEL) += intel.o
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index b58611e908aa..da556fe5060a 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -70,7 +70,16 @@ struct microcode_ops {
* support available) and (not) ops->apply_microcode (i.e. read only).
* Otherwise, all hooks must be filled in.
*/
+#ifdef CONFIG_AMD
void ucode_probe_amd(struct microcode_ops *ops);
+#else
+static inline void ucode_probe_amd(struct microcode_ops *ops) {}
+#endif
+
+#ifdef CONFIG_INTEL
void ucode_probe_intel(struct microcode_ops *ops);
+#else
+static inline void ucode_probe_intel(struct microcode_ops *ops) {}
+#endif
#endif /* ASM_X86_MICROCODE_PRIVATE_H */
--
2.30.2
platform. Make a start with CONFIG_{AMD,INTEL} (hidden behind EXPERT, but
available to randconfig), and adjust the microcode logic.
No practical change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>
CC: Stefano Stabellini <stefano.stabellini@amd.com>
CC: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
I've intentionally ignored the other vendors for now. They can be put into
Kconfig by whomever figures out the actual dependencies between their init
routines.
v2:
* Tweak text
---
xen/arch/x86/Kconfig | 2 ++
xen/arch/x86/Kconfig.cpu | 22 ++++++++++++++++++++++
xen/arch/x86/cpu/microcode/Makefile | 4 ++--
xen/arch/x86/cpu/microcode/private.h | 9 +++++++++
4 files changed, 35 insertions(+), 2 deletions(-)
create mode 100644 xen/arch/x86/Kconfig.cpu
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index eac77573bd75..d9eacdd7e0fa 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -49,6 +49,8 @@ config HAS_CC_CET_IBT
menu "Architecture Features"
+source "arch/x86/Kconfig.cpu"
+
source "arch/Kconfig"
config PV
diff --git a/xen/arch/x86/Kconfig.cpu b/xen/arch/x86/Kconfig.cpu
new file mode 100644
index 000000000000..3c5d88fdfd16
--- /dev/null
+++ b/xen/arch/x86/Kconfig.cpu
@@ -0,0 +1,22 @@
+menu "Supported CPU vendors"
+ visible if EXPERT
+
+config AMD
+ bool "AMD"
+ default y
+ help
+ Detection, tunings and quirks for AMD platforms.
+
+ May be turned off in builds targetting other vendors. Otherwise,
+ must be enabled for Xen to work suitably on AMD platforms.
+
+config INTEL
+ bool "Intel"
+ default y
+ help
+ Detection, tunings and quirks for Intel platforms.
+
+ May be turned off in builds targetting other vendors. Otherwise,
+ must be enabled for Xen to work suitably on Intel platforms.
+
+endmenu
diff --git a/xen/arch/x86/cpu/microcode/Makefile b/xen/arch/x86/cpu/microcode/Makefile
index aae235245b06..30d600544f45 100644
--- a/xen/arch/x86/cpu/microcode/Makefile
+++ b/xen/arch/x86/cpu/microcode/Makefile
@@ -1,3 +1,3 @@
-obj-y += amd.o
+obj-$(CONFIG_AMD) += amd.o
obj-y += core.o
-obj-y += intel.o
+obj-$(CONFIG_INTEL) += intel.o
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index b58611e908aa..da556fe5060a 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -70,7 +70,16 @@ struct microcode_ops {
* support available) and (not) ops->apply_microcode (i.e. read only).
* Otherwise, all hooks must be filled in.
*/
+#ifdef CONFIG_AMD
void ucode_probe_amd(struct microcode_ops *ops);
+#else
+static inline void ucode_probe_amd(struct microcode_ops *ops) {}
+#endif
+
+#ifdef CONFIG_INTEL
void ucode_probe_intel(struct microcode_ops *ops);
+#else
+static inline void ucode_probe_intel(struct microcode_ops *ops) {}
+#endif
#endif /* ASM_X86_MICROCODE_PRIVATE_H */
--
2.30.2