This enables very aggressive DCE passes on single-vendor builds in later patches, as it will allow most vendor checks to become statically chosen branches. A lot of statics go away and a lot more inlining will be allowed.
A prerequisite for such optimisation is to expand Kconfig to have the full set of vendors. Adds Hygon, Centaur, Shanghai and the unknown-vendor path. Have Hygon select AMD, and Centaur|Shanghai select Intel. Not a functional change. Signed-off-by: Alejandro Vallejo <[email protected]> --- rfc -> v1: * s/depends on/select/ * s/UNKNOWN_CPU/UNKNOWN_CPU_VENDOR/ * Removed "if unsure, say Y" --- xen/arch/x86/Kconfig.cpu | 43 +++++++++++++++++++++++++++++++++++++++ xen/arch/x86/cpu/Makefile | 6 +++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/Kconfig.cpu b/xen/arch/x86/Kconfig.cpu index 5fb18db1aa..f895cfe97a 100644 --- a/xen/arch/x86/Kconfig.cpu +++ b/xen/arch/x86/Kconfig.cpu @@ -19,4 +19,47 @@ config INTEL May be turned off in builds targetting other vendors. Otherwise, must be enabled for Xen to work suitably on Intel platforms. +config HYGON + bool "Support Hygon CPUs" + select AMD + default y + help + Detection, tunings and quirks for Hygon platforms. + + May be turned off in builds targetting other vendors. Otherwise, + must be enabled for Xen to work suitably on Hygon platforms. + + +config CENTAUR + bool "Support Centaur CPUs" + select INTEL + default y + help + Detection, tunings and quirks for Centaur platforms. + + May be turned off in builds targetting other vendors. Otherwise, + must be enabled for Xen to work suitably on Centaur platforms. + +config SHANGHAI + bool "Support Shanghai CPUs" + select INTEL + default y + help + Detection, tunings and quirks for Shanghai platforms. + + May be turned off in builds targetting other vendors. Otherwise, + must be enabled for Xen to work suitably on Shanghai platforms. + +config UNKNOWN_CPU_VENDOR + bool "Support unknown CPU vendors" + default y + help + This option prevents a panic on boot when the host CPU vendor isn't + supported by going into a legacy compatibility mode and not applying + any relevant tunings or quirks. + + Not selecting this options while selecting multiple vendors doesn't have + any major effect on code size, but selecting a single vendor with this + option cleared produces a much smaller build. + endmenu diff --git a/xen/arch/x86/cpu/Makefile b/xen/arch/x86/cpu/Makefile index 7cfe28b7ec..84b060aa41 100644 --- a/xen/arch/x86/cpu/Makefile +++ b/xen/arch/x86/cpu/Makefile @@ -3,13 +3,13 @@ obj-y += microcode/ obj-y += mtrr/ obj-y += amd.o -obj-y += centaur.o +obj-$(CONFIG_CENTAUR) += centaur.o obj-y += common.o -obj-y += hygon.o obj-y += intel.o +obj-$(CONFIG_HYGON) += hygon.o obj-y += intel_cacheinfo.o obj-$(CONFIG_INTEL) += mwait-idle.o -obj-y += shanghai.o +obj-$(CONFIG_SHANGHAI) += shanghai.o obj-y += vpmu.o obj-$(CONFIG_AMD) += vpmu_amd.o obj-$(CONFIG_INTEL) += vpmu_intel.o -- 2.43.0
