summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2024-02-02 19:35:13 +0100
committerMartin L Roth <gaumless@gmail.com>2024-03-28 15:23:21 +0000
commitd293b20b840037211d9b43ded17901354e5204ad (patch)
tree5d2c5964d70342c6f47a6ec6ee5b34a865170681
parentee83be4d753ae128b53dd306b380c4a6dfd739e5 (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.md13
-rw-r--r--configs/config.emulation_qemu_x86_i440fx_x86_642
-rw-r--r--configs/config.foxconn_g41m2
-rw-r--r--configs/config.google_vilboz.x86_642
-rw-r--r--configs/config.hp_compaq_8200_elite_sff_pc.x86_642
-rw-r--r--configs/config.lenovo_t400_vboot_and_debug2
-rw-r--r--configs/config.lenovo_x201_all_debug_option_table_bt_on_wifi2
-rw-r--r--configs/config.prodrive_hermes.x86_642
-rw-r--r--src/arch/x86/Kconfig12
-rw-r--r--src/cpu/intel/model_2065x/Kconfig2
-rw-r--r--src/cpu/intel/model_206ax/Kconfig2
-rw-r--r--src/cpu/qemu-x86/Kconfig2
-rw-r--r--src/northbridge/intel/gm45/Kconfig2
-rw-r--r--src/northbridge/intel/x4x/Kconfig2
-rw-r--r--src/soc/amd/genoa_poc/Kconfig4
-rw-r--r--src/soc/amd/picasso/Kconfig2
-rw-r--r--src/soc/intel/cannonlake/Kconfig2
-rw-r--r--src/soc/intel/xeon_sp/spr/Kconfig2
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