|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2.5 2/2] x86/Kconfig: Introduce CONFIG_{AMD,INTEL} and conditionalise ucode
On Fri, 27 Oct 2023, Andrew Cooper wrote:
> 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@xxxxxxxxxx>
I read the discussion here:
https://marc.info/?l=xen-devel&m=169865507432363
https://lore.kernel.org/xen-devel/ZT9yNrdoCKZs3_uY@macbook/
I think we want two top-level simple CONFIG_AMD and CONFIG_INTEL
options. Do we also want finer granular sub-options such as
CONFIG_AMD_CPU and CONFIG_INTEL_CPU, which would be controlled by the
top-level options CONFIG_AMD and CONFIG_INTEL? I think we could go
either way. CONFIG_{AMD,INTEL} could be sufficient, but also having
them control CONFIG_{AMD,INTEL}_CPU and CONFIG_{AMD,INTEL}_IOMMU is
fine too.
We already have CONFIG_{AMD,INTEL}_IOMMU. At the time I wondered if we
could have just used CONFIG_{AMD,INTEL} for evertything. But given we
have CONFIG_{AMD,INTEL}_IOMMU, I can see why the reviewers suggested to
use CONFIG_{AMD,INTEL}_CPU.
I would have introduced CONFIG_{AMD,INTEL} only, given that it is not
possible to have an AMD CPU with an INTEL IOMMU and vice versa.
Anyway, I don't really have a strong opinion either way but we need this
patch to move forward one way or another so:
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
(I would also ck different versions of this patch.)
> ---
> CC: Jan Beulich <JBeulich@xxxxxxxx>
> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> CC: Wei Liu <wl@xxxxxxx>
> CC: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx>
> CC: Stefano Stabellini <stefano.stabellini@xxxxxxx>
> CC: Xenia Ragiadakou <xenia.ragiadakou@xxxxxxx>
>
> 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
> v2.5:
> * Fix indentation
> * Rename with _CPU suffixes as requested
> ---
> 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..b68c41977a3b
> --- /dev/null
> +++ b/xen/arch/x86/Kconfig.cpu
> @@ -0,0 +1,22 @@
> +menu "Supported CPU vendors"
> + visible if EXPERT
> +
> +config AMD_CPU
> + 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_CPU
> + 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..194ddc239ee3 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_CPU) += amd.o
> obj-y += core.o
> -obj-y += intel.o
> +obj-$(CONFIG_INTEL_CPU) += intel.o
> diff --git a/xen/arch/x86/cpu/microcode/private.h
> b/xen/arch/x86/cpu/microcode/private.h
> index b58611e908aa..bb329933ac89 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_CPU
> void ucode_probe_amd(struct microcode_ops *ops);
> +#else
> +static inline void ucode_probe_amd(struct microcode_ops *ops) {}
> +#endif
> +
> +#ifdef CONFIG_INTEL_CPU
> 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
>
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |