Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/80338?usp=email )
Change subject: cpu/x86/Kconfig: Mark 64bit support as stable ......................................................................
cpu/x86/Kconfig: Mark 64bit support as stable
With SMM holding page tables itself, we can consider SMM support stable and safe enough for general use.
Also update the respective documentation.
Signed-off-by: Arthur Heymans arthur@aheymans.xyz Change-Id: Ifcf0a1a5097a2d7c064bb709ec0b09ebee13a47d Reviewed-on: https://review.coreboot.org/c/coreboot/+/80338 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Martin L Roth gaumless@gmail.com --- M Documentation/arch/x86/index.md M configs/config.emulation_qemu_x86_i440fx_x86_64 M configs/config.foxconn_g41m M configs/config.google_vilboz.x86_64 M configs/config.hp_compaq_8200_elite_sff_pc.x86_64 M configs/config.lenovo_t400_vboot_and_debug M configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi M configs/config.prodrive_hermes.x86_64 M src/arch/x86/Kconfig M src/cpu/intel/model_2065x/Kconfig M src/cpu/intel/model_206ax/Kconfig M src/cpu/qemu-x86/Kconfig M src/northbridge/intel/gm45/Kconfig M src/northbridge/intel/x4x/Kconfig M src/soc/amd/genoa_poc/Kconfig M src/soc/amd/picasso/Kconfig M src/soc/intel/cannonlake/Kconfig M src/soc/intel/xeon_sp/spr/Kconfig 18 files changed, 25 insertions(+), 34 deletions(-)
Approvals: build bot (Jenkins): Verified Martin L Roth: Looks good to me, approved
diff --git a/Documentation/arch/x86/index.md b/Documentation/arch/x86/index.md index 3ddff51..f2597ac 100644 --- a/Documentation/arch/x86/index.md +++ b/Documentation/arch/x86/index.md @@ -9,9 +9,7 @@ ```
## State of x86_64 support -At the moment there's only experimental x86_64 support. -The `emulation/qemu-i440fx` and `emulation/qemu-q35` boards do support -*ARCH_RAMSTAGE_X86_64* , *ARCH_POSTCAR_X86_64* and *ARCH_ROMSTAGE_X86_64*. +Some SOCs now support 64bit mode. Search for HAVE_X86_64_SUPPORT in Kconfig.
In order to add support for x86_64 the following assumptions were made: * The CPU supports long mode @@ -19,7 +17,6 @@ * All code that is to be run must be below 4GiB in physical memory * The high dword of pointers is always zero * The reference implementation is qemu -* The CPU supports 1GiB hugepages * x86 payloads are loaded below 4GiB in physical memory and are jumped to in *protected mode*
@@ -62,7 +59,6 @@ 1. Fine grained page tables for SMM: * Must not have execute and write permissions for the same page. * Must allow only that TSEG pages can be marked executable - * Must reside in SMRAM 2. Support 64bit PCI BARs above 4GiB 3. Place and run code above 4GiB
@@ -70,13 +66,10 @@ * Fix compilation errors * Test how well CAR works with x86_64 and paging * Improve mode switches -* Test libgfxinit / VGA Option ROMs / FSP
-## Known bugs on real hardware +## Known problems on real hardware
-According to Intel x86_64 mode hasn't been validated in CAR environments. -Until now it could be verified on various Intel platforms and no issues have -been found. +Running VGA rom directly fails. Yabel works fine though.
## Known bugs on KVM enabled qemu
diff --git a/configs/config.emulation_qemu_x86_i440fx_x86_64 b/configs/config.emulation_qemu_x86_i440fx_x86_64 index 7123646..2f6bf78 100644 --- a/configs/config.emulation_qemu_x86_i440fx_x86_64 +++ b/configs/config.emulation_qemu_x86_i440fx_x86_64 @@ -1,3 +1,3 @@ CONFIG_VENDOR_EMULATION=y CONFIG_BOARD_EMULATION_QEMU_X86_I440FX=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/configs/config.foxconn_g41m b/configs/config.foxconn_g41m index f5deea5..acb0768 100644 --- a/configs/config.foxconn_g41m +++ b/configs/config.foxconn_g41m @@ -1,3 +1,3 @@ CONFIG_VENDOR_FOXCONN=y CONFIG_BOARD_FOXCONN_G41M=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/configs/config.google_vilboz.x86_64 b/configs/config.google_vilboz.x86_64 index 74036ae..ddb2eda 100644 --- a/configs/config.google_vilboz.x86_64 +++ b/configs/config.google_vilboz.x86_64 @@ -1,3 +1,3 @@ CONFIG_VENDOR_GOOGLE=y CONFIG_BOARD_GOOGLE_VILBOZ=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/configs/config.hp_compaq_8200_elite_sff_pc.x86_64 b/configs/config.hp_compaq_8200_elite_sff_pc.x86_64 index 9bb5e38..d15f162 100644 --- a/configs/config.hp_compaq_8200_elite_sff_pc.x86_64 +++ b/configs/config.hp_compaq_8200_elite_sff_pc.x86_64 @@ -1,3 +1,3 @@ CONFIG_VENDOR_HP=y CONFIG_BOARD_HP_COMPAQ_8200_ELITE_SFF_PC=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/configs/config.lenovo_t400_vboot_and_debug b/configs/config.lenovo_t400_vboot_and_debug index f79d773..6738e43 100644 --- a/configs/config.lenovo_t400_vboot_and_debug +++ b/configs/config.lenovo_t400_vboot_and_debug @@ -12,5 +12,5 @@ CONFIG_DEBUG_ADA_CODE=y CONFIG_H8_FN_KEY_AS_VBOOT_RECOVERY_SW=y CONFIG_VBOOT=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y CONFIG_ARCH_X86_64_PGTBL_LOC=0xfffe8000 diff --git a/configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi b/configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi index 63becd7..148c77d 100644 --- a/configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi +++ b/configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi @@ -10,4 +10,4 @@ CONFIG_DEBUG_SPI_FLASH=y CONFIG_DEBUG_BOOT_STATE=y CONFIG_DEBUG_ADA_CODE=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/configs/config.prodrive_hermes.x86_64 b/configs/config.prodrive_hermes.x86_64 index 506f494..6763aa6 100644 --- a/configs/config.prodrive_hermes.x86_64 +++ b/configs/config.prodrive_hermes.x86_64 @@ -14,4 +14,4 @@ CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS=y CONFIG_PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS=36 CONFIG_RUN_FSP_GOP=y -CONFIG_USE_EXP_X86_64_SUPPORT=y +CONFIG_USE_X86_64_SUPPORT=y diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 3f97644..d2ae320 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -65,23 +65,21 @@ select ARCH_ROMSTAGE_X86_64 select ARCH_RAMSTAGE_X86_64
-config HAVE_EXP_X86_64_SUPPORT +config HAVE_X86_64_SUPPORT bool help Enable experimental support to build and run coreboot in 64-bit mode. When selecting this option for a new platform, it is highly advisable to provide a config file for Jenkins to build-test the 64-bit option.
-config USE_EXP_X86_64_SUPPORT - bool "[EXPERIMENTAL] Run coreboot in long (64-bit) mode" - depends on HAVE_EXP_X86_64_SUPPORT +config USE_X86_64_SUPPORT + bool "Run coreboot in long (64-bit) mode" + depends on HAVE_X86_64_SUPPORT select ARCH_ALL_STAGES_X86_64 help When set, most of coreboot runs in long (64-bit) mode instead of the usual protected flat (32-bit) mode. 64-bit CPUs and OSes can be used - irrespective of whether coreboot runs in 32-bit or 64-bit mode. This - is an experimental option: do not enable unless one wants to test it - and has the means to recover a system when coreboot fails to boot. + irrespective of whether coreboot runs in 32-bit or 64-bit mode.
config PAGE_TABLES_IN_CBFS bool diff --git a/src/cpu/intel/model_2065x/Kconfig b/src/cpu/intel/model_2065x/Kconfig index 15a160a..2b9c4b2 100644 --- a/src/cpu/intel/model_2065x/Kconfig +++ b/src/cpu/intel/model_2065x/Kconfig @@ -2,7 +2,7 @@
config CPU_INTEL_MODEL_2065X bool - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select ARCH_X86 select SSE2 select UDELAY_TSC diff --git a/src/cpu/intel/model_206ax/Kconfig b/src/cpu/intel/model_206ax/Kconfig index bdca12c..cf16640 100644 --- a/src/cpu/intel/model_206ax/Kconfig +++ b/src/cpu/intel/model_206ax/Kconfig @@ -3,7 +3,7 @@ config CPU_INTEL_MODEL_206AX bool select ARCH_X86 - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select SSE2 select UDELAY_TSC select TSC_MONOTONIC_TIMER diff --git a/src/cpu/qemu-x86/Kconfig b/src/cpu/qemu-x86/Kconfig index 0fa999e..b5ff6f0 100644 --- a/src/cpu/qemu-x86/Kconfig +++ b/src/cpu/qemu-x86/Kconfig @@ -3,7 +3,7 @@ config CPU_QEMU_X86 bool select ARCH_X86 - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select UDELAY_TSC select TSC_MONOTONIC_TIMER select UNKNOWN_TSC_RATE diff --git a/src/northbridge/intel/gm45/Kconfig b/src/northbridge/intel/gm45/Kconfig index 2a266b9..4fe20ee 100644 --- a/src/northbridge/intel/gm45/Kconfig +++ b/src/northbridge/intel/gm45/Kconfig @@ -7,7 +7,7 @@ select INTEL_EDID select INTEL_GMA_ACPI select INTEL_GMA_SSC_ALTERNATE_REF - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select USE_DDR3 select USE_DDR2
diff --git a/src/northbridge/intel/x4x/Kconfig b/src/northbridge/intel/x4x/Kconfig index 248852e..4bc12af 100644 --- a/src/northbridge/intel/x4x/Kconfig +++ b/src/northbridge/intel/x4x/Kconfig @@ -7,7 +7,7 @@ select INTEL_GMA_ACPI select CACHE_MRC_SETTINGS select BOOT_DEVICE_SPI_FLASH_NO_EARLY_WRITES - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select USE_DDR3 select USE_DDR2
diff --git a/src/soc/amd/genoa_poc/Kconfig b/src/soc/amd/genoa_poc/Kconfig index 05590f5..f4bd7d6 100644 --- a/src/soc/amd/genoa_poc/Kconfig +++ b/src/soc/amd/genoa_poc/Kconfig @@ -11,7 +11,7 @@ select ARCH_X86 select DEFAULT_X2APIC select HAVE_ACPI_TABLES - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select HAVE_SMI_HANDLER select RESET_VECTOR_IN_RAM select SOC_AMD_COMMON @@ -50,7 +50,7 @@ select SOC_AMD_OPENSIL_GENOA_POC select X86_CUSTOM_BOOTMEDIA
-config USE_EXP_X86_64_SUPPORT +config USE_X86_64_SUPPORT default y
config CHIPSET_DEVICETREE diff --git a/src/soc/amd/picasso/Kconfig b/src/soc/amd/picasso/Kconfig index 864643f..d6c3fbd 100644 --- a/src/soc/amd/picasso/Kconfig +++ b/src/soc/amd/picasso/Kconfig @@ -77,7 +77,7 @@ select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE select X86_AMD_FIXED_MTRRS select X86_INIT_NEED_1_SIPI - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT help AMD Picasso support
diff --git a/src/soc/intel/cannonlake/Kconfig b/src/soc/intel/cannonlake/Kconfig index ab2efc3..7548e46 100644 --- a/src/soc/intel/cannonlake/Kconfig +++ b/src/soc/intel/cannonlake/Kconfig @@ -79,7 +79,7 @@ config SOC_INTEL_COFFEELAKE bool select SOC_INTEL_CANNONLAKE_BASE - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT select HECI_DISABLE_USING_SMM select INTEL_CAR_NEM
diff --git a/src/soc/intel/xeon_sp/spr/Kconfig b/src/soc/intel/xeon_sp/spr/Kconfig index 23d2f8b6..2e0ad01 100644 --- a/src/soc/intel/xeon_sp/spr/Kconfig +++ b/src/soc/intel/xeon_sp/spr/Kconfig @@ -16,7 +16,7 @@ select FSP_SPEC_VIOLATION_XEON_SP_HEAP_WORKAROUND select UDK_202005_BINDING select SOC_INTEL_HAS_CXL - select HAVE_EXP_X86_64_SUPPORT + select HAVE_X86_64_SUPPORT help Intel Sapphire Rapids-SP support