arch/x86/Kconfig: introduce RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT

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 <felix-coreboot@felixheld.de>
Change-Id: I0059e63a160e60ddee280635bba72d363deca7f7
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78073
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com>
Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
This commit is contained in:
Felix Held 2023-09-12 14:48:38 +02:00
parent ff4d6be9f9
commit 3748fca595
3 changed files with 12 additions and 1 deletions

View File

@ -92,6 +92,16 @@ config ARCH_X86_64_PGTBL_LOC
The position where to place pagetables. Needs to be known at The position where to place pagetables. Needs to be known at
compile time. Must not overlap other files in CBFS. 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. # This is an SMP option. It relates to starting up APs.
# It is usually set in mainboard/*/Kconfig. # It is usually set in mainboard/*/Kconfig.
# TODO: Improve description. # TODO: Improve description.

View File

@ -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); 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); unsigned int get_reserved_phys_addr_bits(void);
#else #else
/* Default implementation */ /* Default implementation */

View File

@ -1,5 +1,6 @@
config CPU_INTEL_COMMON config CPU_INTEL_COMMON
bool bool
select RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT
if CPU_INTEL_COMMON if CPU_INTEL_COMMON