From 3748fca5955bc975ea426cf9bd9fd8e9278a9752 Mon Sep 17 00:00:00 2001 From: Felix Held Date: Tue, 12 Sep 2023 14:48:38 +0200 Subject: arch/x86/Kconfig: introduce RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since also some AMD CPUs have reserved physical address bits that can't be used as normal address bits, introduce the RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT Kconfig option which gets selected by CPU_INTEL_COMMON, and use the new common option to configure if the specific SoC/CPU code implements get_reserved_phys_addr_bits or if the default of this returning 0 is used instead. Signed-off-by: Felix Held Change-Id: I0059e63a160e60ddee280635bba72d363deca7f7 Reviewed-on: https://review.coreboot.org/c/coreboot/+/78073 Tested-by: build bot (Jenkins) Reviewed-by: Marshall Dawson Reviewed-by: Jérémy Compostella Reviewed-by: Matt DeVillier --- src/arch/x86/Kconfig | 10 ++++++++++ src/arch/x86/include/arch/cpu.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src/arch') diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 8676fad863..c97fecb3e4 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -92,6 +92,16 @@ config ARCH_X86_64_PGTBL_LOC The position where to place pagetables. Needs to be known at compile time. Must not overlap other files in CBFS. +config RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT + bool + help + On some systems, the upper physical address bits are reserved and + used as a tag which is typically related to a memory encryption + feature. When selecting this option, the SoC code needs to implement + get_reserved_phys_addr_bits so that the common code knows how many of + the most significant physical address bits are reserved and can't be + used as address bits. + # This is an SMP option. It relates to starting up APs. # It is usually set in mainboard/*/Kconfig. # TODO: Improve description. diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h index b24cd23a96..2c98d1e98f 100644 --- a/src/arch/x86/include/arch/cpu.h +++ b/src/arch/x86/include/arch/cpu.h @@ -316,7 +316,7 @@ size_t get_cache_size(const struct cpu_cache_info *info); */ bool fill_cpu_cache_info(uint8_t level, struct cpu_cache_info *info); -#if CONFIG(CPU_INTEL_COMMON) +#if CONFIG(RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT) unsigned int get_reserved_phys_addr_bits(void); #else /* Default implementation */ -- cgit v1.2.3