diff options
author | Arthur Heymans <arthur@aheymans.xyz> | 2024-02-02 19:35:13 +0100 |
---|---|---|
committer | Martin L Roth <gaumless@gmail.com> | 2024-03-28 15:23:21 +0000 |
commit | d293b20b840037211d9b43ded17901354e5204ad (patch) | |
tree | 5d2c5964d70342c6f47a6ec6ee5b34a865170681 | |
parent | ee83be4d753ae128b53dd306b380c4a6dfd739e5 (diff) |
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>
-rw-r--r-- | Documentation/arch/x86/index.md | 13 | ||||
-rw-r--r-- | configs/config.emulation_qemu_x86_i440fx_x86_64 | 2 | ||||
-rw-r--r-- | configs/config.foxconn_g41m | 2 | ||||
-rw-r--r-- | configs/config.google_vilboz.x86_64 | 2 | ||||
-rw-r--r-- | configs/config.hp_compaq_8200_elite_sff_pc.x86_64 | 2 | ||||
-rw-r--r-- | configs/config.lenovo_t400_vboot_and_debug | 2 | ||||
-rw-r--r-- | configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi | 2 | ||||
-rw-r--r-- | configs/config.prodrive_hermes.x86_64 | 2 | ||||
-rw-r--r-- | src/arch/x86/Kconfig | 12 | ||||
-rw-r--r-- | src/cpu/intel/model_2065x/Kconfig | 2 | ||||
-rw-r--r-- | src/cpu/intel/model_206ax/Kconfig | 2 | ||||
-rw-r--r-- | src/cpu/qemu-x86/Kconfig | 2 | ||||
-rw-r--r-- | src/northbridge/intel/gm45/Kconfig | 2 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/Kconfig | 2 | ||||
-rw-r--r-- | src/soc/amd/genoa_poc/Kconfig | 4 | ||||
-rw-r--r-- | src/soc/amd/picasso/Kconfig | 2 | ||||
-rw-r--r-- | src/soc/intel/cannonlake/Kconfig | 2 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/spr/Kconfig | 2 |
18 files changed, 25 insertions, 34 deletions
diff --git a/Documentation/arch/x86/index.md b/Documentation/arch/x86/index.md index 3ddff519ea..f2597ac9ce 100644 --- a/Documentation/arch/x86/index.md +++ b/Documentation/arch/x86/index.md @@ -9,9 +9,7 @@ x86 PAE support <pae.md> ``` ## 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 @@ In order to add support for x86_64 the following assumptions were made: * 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 @@ QEMU Q35 <../../mainboard/emulation/qemu-q35.md> 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 @@ QEMU Q35 <../../mainboard/emulation/qemu-q35.md> * 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 712364677a..2f6bf78490 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 f5deea5edb..acb0768bac 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 74036aea4a..ddb2edacd9 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 9bb5e386a3..d15f162908 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 f79d77357c..6738e43c59 100644 --- a/configs/config.lenovo_t400_vboot_and_debug +++ b/configs/config.lenovo_t400_vboot_and_debug @@ -12,5 +12,5 @@ CONFIG_DEBUG_BOOT_STATE=y 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 63becd7583..148c77da23 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_MALLOC=y 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 506f4945a8..6763aa6f5c 100644 --- a/configs/config.prodrive_hermes.x86_64 +++ b/configs/config.prodrive_hermes.x86_64 @@ -14,4 +14,4 @@ CONFIG_MAINBOARD_SERIAL_NUMBER="N/A" 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 3f97644567..d2ae320810 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -65,23 +65,21 @@ config ARCH_ALL_STAGES_X86_64 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 15a160a7a2..2b9c4b2d79 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 bdca12cddc..cf1664044a 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 0fa999e1ac..b5ff6f09a5 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 2a266b9771..4fe20ee966 100644 --- a/src/northbridge/intel/gm45/Kconfig +++ b/src/northbridge/intel/gm45/Kconfig @@ -7,7 +7,7 @@ config NORTHBRIDGE_INTEL_GM45 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 248852e2e9..4bc12af3c9 100644 --- a/src/northbridge/intel/x4x/Kconfig +++ b/src/northbridge/intel/x4x/Kconfig @@ -7,7 +7,7 @@ config NORTHBRIDGE_INTEL_X4X 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 05590f5cba..f4bd7d6418 100644 --- a/src/soc/amd/genoa_poc/Kconfig +++ b/src/soc/amd/genoa_poc/Kconfig @@ -11,7 +11,7 @@ config SOC_SPECIFIC_OPTIONS 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 @@ config SOC_SPECIFIC_OPTIONS 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 864643fd4a..d6c3fbd3e9 100644 --- a/src/soc/amd/picasso/Kconfig +++ b/src/soc/amd/picasso/Kconfig @@ -77,7 +77,7 @@ config SOC_AMD_PICASSO 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 ab2efc375d..7548e46b36 100644 --- a/src/soc/intel/cannonlake/Kconfig +++ b/src/soc/intel/cannonlake/Kconfig @@ -79,7 +79,7 @@ config SOC_INTEL_CANNONLAKE_BASE 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 23d2f8b6d7..2e0ad01e00 100644 --- a/src/soc/intel/xeon_sp/spr/Kconfig +++ b/src/soc/intel/xeon_sp/spr/Kconfig @@ -16,7 +16,7 @@ config SOC_INTEL_SAPPHIRERAPIDS_SP 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 |