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:
parent
ee83be4d75
commit
d293b20b84
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user