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>
This commit is contained in:
Arthur Heymans 2024-02-02 19:35:13 +01:00 committed by Martin L Roth
parent ee83be4d75
commit d293b20b84
18 changed files with 25 additions and 34 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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