Building Coreboot for the MSI PRO Z690-A WiFi (DDR5)

Hello good people,

This thread is 30% a build log of my attempt to get Coreboot running on my Z690-A, 30% my experiences messing around with Coreboot in general, 30% a cry for help and 10% a descent into madness.

!!!Warning!!!:
Any time you interact with your firmware you run the risk of bricking the device! I have bricked more motherboards than i can count. None of them are in the landfill because I had a recovery plan! Before you flash anything make sure you have a recovery method and a copy of your stock BIOS! You will brick a board sooner or later. It will happen to you!

TL;DR - I want to do this with the minimal required effort, what should i do?
If you have this motherboard (or the DDR4 version) and want to replace your firmware (UEFI/BIOS) with minimal hassle then use Dasharo. 3MDEB have done a great job porting Coreboot to this platform and an exceptional job creating tools to make this as painless as possible. The easiest method of doing so is to use their tools suite. Download the image from this page (You want the link for the USB bootable DTS image), extract the image and copy it to a removable drive using these commands:

gzip -cdk dts-base-image-<version>.wic.gz | \

sudo dd of=/dev/sdX bs=16M status=progress conv=fdatasync

Reboot and select the drive as your boot device, follow the prompts on screen and you’re off to the races. It even backs up your original firmware to the drive!

Some context:
Coreboot is a free and open source replacement for your motherboard’s firmware, more commonly known as your BIOS or UEFI (for the sake of simplicity i’m going to use the word “BIOS” to refer to all three interchangeably from now on). Basically - it’s responsible for figuring out “what” hardware your computer consists of when you turn it on. The BIOS program organizes this information and prepares to execute a payload which is typically the boot program of your operating system.

Every single motherboard is a different combination of chipset (Formerly north & southbridge), ports, wiring, embedded controller, sensor package, SPI ROM chip and some other things im probably forgetting. The problem is that Coreboot needs to support every single one of these components to work. Porting Coreboot to a new platform is extremely difficult and time consuming. Because of this Coreboot support is a bit of a popularity contest. Platforms (desktops/laptops) that tend to get ported are devices which are already popular in the computer hardware community. Most ThinkPads built before ~2015/2016 support Coreboot or Libreboot. Most desktop platforms that support Coreboot are Sandy/Ivy bridge era devices. Coreboot support on a contemporary, widely available platform is exceedingly rare.

This brings us to the elephant in the room. Despite Coreboot being a FOSS project it still requires binaries. This is a rabbit hole itself, but the short version is that all modern computing platforms require some closed source software to operate. (Intel ME, AMD PSP, VGA blobs, microcode etc.). How far back do we need to go to be rid of the binary menace? The halcyon year 2006! I myself used a Librebooted ThinkPad X60 from this era for some years. In case you are curious this is the top of the line processor that shipped with this system. 2Ghz max frequency, two cores, no hyper-threading on a 32-bit architecture. The X60 is arguably one of the finest pieces of computing hardware ever designed. It is not a viable daily driver in 2023, as much as I would love the contrary to be true.

In my opinion the MSI Z690-A WiFi currently presents the best option for getting more people interesting in Coreboot, getting more people interesting in open source software and keeping the community alive.

The Hardware:

I have assembled a system with the following specification to test Coreboot on. Amusingly the cheapest i3 Alder Lake processor these days is actually quite good value. Apparently Hyper-Threading is a “stock” feature on intel processors now. What a time to be alive!

Processor: intel i3-12100F Processor

Motherboard: MSI Z690-A WiFi (DDR5)

RAM: Crucial 8GB CT8G48C40U5

GPU: Nvidia Quadro P600

Total: Approx $275 USD

I have re-used a drive, power supply and case from a previous build, and have not included them here. Coreboot support for storage media is quite robust, so you shouldn’t have any issues regardless of the storage type/interface you use. The case and PSU are irrelevant for obvious reasons.

The graphics card was chosen as the Dasharo lists a GTX 1060 and GTX 1080Ti as known-working, so this gave me high hopes that other Pascal cards would be supported too.

The CPU compatibility page is currently 404’ing (and not on the WayBack machine), however I pinky swear that an Alder lake i5 with a “f” suffix was listed as compatible (IIRC it was a i5-12400F). This option was a little pricey for me, but given I already have a GPU and iGPU-less CPUs seem to be supported I went with the i3 (This seemingly would come back to bite me later, but we’ll get to that).

AS far as the RAM is concerned I bought the cheapest 8GB stick I could lay my hands on, Dasharo lists a very similar Crucial kit as known-working so I assumed this stick would work as well.

Building & flashing stock Dasharo:

After assembling the hardware the first thing I tested was whether the system could support any version of Coreboot – namely the Dasharo fork by 3mdeb. This was pretty straight forward. I followed the same procedure outlined in the “TL;DR” section, let the DTS installer do all of the heavy lifting and successfully POST’d. Debian seemed pretty stable and everything seemed to be detected correctly.

Building & flashing Coreboot:

As of January 2023 support for the DDR5 version of the Z690-A has been upstreamed to Coreboot. Frustratingly there is not yet any documentation on the Coreboot wiki about building for this board (If i get this working i’ll try and write one). There is also shockingly little information online about anyone actually successfully flashing stock Coreboot to this board. There’s a lot of talk around the board being ported and upstreamed, but for the life of me I’m not able to find the actual config file of someone who has flashed the board successfully!

Typically my plan of attack for flashing a new motherboard is simply to re-use a known-working config that someone else has already tested. The closest I was able to find was this guy on Reddit who posted their config after they were unable to initialize a display after flashing.

In the absence of a working config I set out to compile Coreboot and test a config myself.

Note: At the time of writing the nasm[dot].us website is down, preventing Coreboot from compiling as it is unable to fetch the tar file Coreboot requests during the download. Luckily the download page is backed up on the wayback machine here. Copying this file into the coreboot folder with the other tarballs lets the tool builder script complete successfully (Coreboot checks the hash of this file as well).

Once Coreboot was built I began testing a couple of different builds. Generally what I do in these situations is leave all settings except the mainboard vendor, mainboard model and payload as their defaults. Then build Coreboot Then flash. Test to see the system POSTs before flashing back to stock and testing a different build. Since I do not have a serial interface to read output from and actually test where the boot is failing this is a bit of a trial and error process.

When booting from the default configuration using both SeaBIOS and EDK2 (on separate builds) I get a black screen with no video output. Tweaking some settings I can sometimes get Caps Lock to engage on the keyboard. Only once was I able to Coreinfo to boot with a configuration I do not note down.

This is similar to the issue raised in the aforementioned Reddit thread, however that user was using a CPU with integrated graphics while I am not. I tried their config for the hell of it, but this did not work either.

I also tried tipping the Dasharo config from my known-working Dasharo build using CBFStool. I realize that Dasharo have forked EDK2 and Coreboot, so these configs probably do not map 100%, but it thought it might be worth a shot – sadly this didn’t work either, not that I was really expecting it to.

Note: For the Dasharo config I had to change the motherboard model back to Z690-A WiFi. For whatever reason running dist-clean, then copying out the config, then running “make menuconfig” populates the this field as “H81M-P33”. I also changed the EDK2 repositories back to the default ones found in the Coreboot config (EDK2, Platforms)

What we’ve done so far:

  • Tested and confirmed the system actually works under stock (MSI) firmware

  • Tested that the system works with the firmware flashed by the Dasharo Tools Suite (A Coreboot fork)

  • Tried (unsuccessfully) to flash Coreboot (Git revision 4.20-800-gef4f2cd38e) to the board with stock Z690-A settings and stock SeaBIOS

  • Tried (unsuccessfully) to flash Coreboot (Git revision 4.20-800-gef4f2cd38e) to the board with stock Z690-A settings and stock EDKII

  • Randomly screwing around for a couple of days tweaking Coreboot settings I think are causing the problem and flashing those builds to the board

  • Alternating between flashing only the BIOS region with “–ifd --image bios” and extracting the descriptor/ME blob from the stock image and including them in the build

Current working hypothesis:

I suspect that Coreboot is trying to initialize a non-existent iGPU when booting. The Reddit thread mentions that this users build is trying to load a VGA BIOS/OPPROM despite this setting not being selected in the config. This fix seems to have been merged, yet we are still here.

More likely however is suspect that some setting, somewhere, in one of the dozen pages of configuration is set wrong. I just have no idea how to rectify this with my knowledge of Coreboot.

Dasharo definitely works on my specific configuration of hardware, so I would assume that the same hardware configuration should also be supported by Coreboot itself.

I’ve included my current config file below. If anyone has feedback on where I’m going wrong it would be muchly appreciated!

Current Config

#
# Automatically generated file; DO NOT EDIT.
# coreboot configuration
#

#
# General setup
#
CONFIG_COREBOOT_BUILD=y
CONFIG_LOCALVERSION=""
CONFIG_CBFS_PREFIX="fallback"
CONFIG_COMPILER_GCC=y
# CONFIG_COMPILER_LLVM_CLANG is not set
CONFIG_ARCH_SUPPORTS_CLANG=y
# CONFIG_ANY_TOOLCHAIN is not set
# CONFIG_CCACHE is not set
# CONFIG_IWYU is not set
# CONFIG_FMD_GENPARSER is not set
# CONFIG_UTIL_GENPARSER is not set
CONFIG_OPTION_BACKEND_NONE=y
CONFIG_COMPRESS_RAMSTAGE_LZMA=y
# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set
CONFIG_INCLUDE_CONFIG_FILE=y
CONFIG_COLLECT_TIMESTAMPS=y
# CONFIG_TIMESTAMPS_ON_CONSOLE is not set
CONFIG_USE_BLOBS=y
# CONFIG_USE_AMD_BLOBS is not set
# CONFIG_USE_QC_BLOBS is not set
# CONFIG_COVERAGE is not set
# CONFIG_UBSAN is not set
CONFIG_HAVE_ASAN_IN_RAMSTAGE=y
# CONFIG_ASAN is not set
# CONFIG_NO_STAGE_CACHE is not set
CONFIG_TSEG_STAGE_CACHE=y
# CONFIG_UPDATE_IMAGE is not set
# CONFIG_BOOTSPLASH_IMAGE is not set
# CONFIG_FW_CONFIG is not set

#
# Software Bill Of Materials (SBOM)
#
# CONFIG_SBOM is not set
# end of Software Bill Of Materials (SBOM)
# end of General setup

#
# Mainboard
#

#
# Important: Run 'make distclean' before switching boards
#
# CONFIG_VENDOR_51NB is not set
# CONFIG_VENDOR_ACER is not set
# CONFIG_VENDOR_ADLINK is not set
# CONFIG_VENDOR_AMD is not set
# CONFIG_VENDOR_AOPEN is not set
# CONFIG_VENDOR_APPLE is not set
# CONFIG_VENDOR_ASROCK is not set
# CONFIG_VENDOR_ASUS is not set
# CONFIG_VENDOR_BIOSTAR is not set
# CONFIG_VENDOR_BOSTENTECH is not set
# CONFIG_VENDOR_BYTEDANCE is not set
# CONFIG_VENDOR_CAVIUM is not set
# CONFIG_VENDOR_CLEVO is not set
# CONFIG_VENDOR_COMPULAB is not set
# CONFIG_VENDOR_DELL is not set
# CONFIG_VENDOR_EMULATION is not set
# CONFIG_VENDOR_EXAMPLE is not set
# CONFIG_VENDOR_FACEBOOK is not set
# CONFIG_VENDOR_FOXCONN is not set
# CONFIG_VENDOR_GETAC is not set
# CONFIG_VENDOR_GIGABYTE is not set
# CONFIG_VENDOR_GOOGLE is not set
# CONFIG_VENDOR_HP is not set
# CONFIG_VENDOR_IBASE is not set
# CONFIG_VENDOR_IBM is not set
# CONFIG_VENDOR_INTEL is not set
# CONFIG_VENDOR_INVENTEC is not set
# CONFIG_VENDOR_KONTRON is not set
# CONFIG_VENDOR_LENOVO is not set
# CONFIG_VENDOR_LIBRETREND is not set
CONFIG_VENDOR_MSI=y
# CONFIG_VENDOR_OCP is not set
# CONFIG_VENDOR_OPENCELLULAR is not set
# CONFIG_VENDOR_PACKARDBELL is not set
# CONFIG_VENDOR_PCENGINES is not set
# CONFIG_VENDOR_PINE64 is not set
# CONFIG_VENDOR_PORTWELL is not set
# CONFIG_VENDOR_PRODRIVE is not set
# CONFIG_VENDOR_PROTECTLI is not set
# CONFIG_VENDOR_PURISM is not set
# CONFIG_VENDOR_RAZER is not set
# CONFIG_VENDOR_RODA is not set
# CONFIG_VENDOR_SAMSUNG is not set
# CONFIG_VENDOR_SAPPHIRE is not set
# CONFIG_VENDOR_SIEMENS is not set
# CONFIG_VENDOR_SIFIVE is not set
# CONFIG_VENDOR_STARLABS is not set
# CONFIG_VENDOR_SUPERMICRO is not set
# CONFIG_VENDOR_SYSTEM76 is not set
# CONFIG_VENDOR_TI is not set
# CONFIG_VENDOR_UP is not set
CONFIG_MAINBOARD_FAMILY="Default string"
CONFIG_MAINBOARD_PART_NUMBER="PRO Z690-A WIFI (MS-7D25)"
CONFIG_MAINBOARD_VERSION="2.0"
CONFIG_MAINBOARD_DIR="msi/ms7d25"
CONFIG_DIMM_MAX=4
CONFIG_DIMM_SPD_SIZE=512
CONFIG_FMDFILE=""
# CONFIG_NO_POST is not set
CONFIG_MAINBOARD_VENDOR="Micro-Star International Co., Ltd."
CONFIG_CBFS_SIZE=0x1000000
CONFIG_CONSOLE_SERIAL=y
CONFIG_MAX_CPUS=24
# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set
CONFIG_POST_DEVICE=y
CONFIG_POST_IO=y
CONFIG_UART_FOR_CONSOLE=0
CONFIG_DEVICETREE="devicetree.cb"
# CONFIG_VBOOT is not set
CONFIG_OVERRIDE_DEVICETREE=""
# CONFIG_VGA_BIOS is not set
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Micro-Star International Co., Ltd."
CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt"
# CONFIG_DISABLE_HECI1_AT_PRE_BOOT is not set
CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0x4000
CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0
# CONFIG_CONSOLE_POST is not set
# CONFIG_USE_PM_ACPI_TIMER is not set
CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xc0000000
CONFIG_ECAM_MMCONF_BUS_NUMBER=256
CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld"
CONFIG_DCACHE_RAM_BASE=0xfef00000
CONFIG_DCACHE_RAM_SIZE=0xc0000
CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000
CONFIG_DCACHE_BSP_STACK_SIZE=0x80400
CONFIG_MAX_ACPI_TABLE_SIZE_KB=144
CONFIG_HAVE_INTEL_FIRMWARE=y
CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000
CONFIG_DRIVERS_INTEL_WIFI=y
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x40000
CONFIG_EDK2_BOOT_TIMEOUT=2
CONFIG_CARDBUS_PLUGIN_SUPPORT=y
CONFIG_SPI_FLASH_DONT_INCLUDE_ALL_DRIVERS=y
CONFIG_USE_LEGACY_8254_TIMER=y
CONFIG_GBB_HWID="MSI_MS7D25"
CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="PRO Z690-A WIFI (MS-7D25)"
# CONFIG_HAVE_IFD_BIN is not set
# CONFIG_DEBUG_SMI is not set
CONFIG_PS2K_EISAID="PNP0303"
CONFIG_PS2M_EISAID="PNP0F13"
# CONFIG_BOARD_MSI_H81M_P33 is not set
# CONFIG_BOARD_MSI_MS7707 is not set
# CONFIG_BOARD_MSI_Z690_A_PRO_WIFI_DDR4 is not set
CONFIG_BOARD_MSI_Z690_A_PRO_WIFI_DDR5=y
CONFIG_BOARD_MSI_MS7D25=y
CONFIG_TTYS0_BAUD=115200
CONFIG_POWER_STATE_DEFAULT_ON_AFTER_FAILURE=y
CONFIG_D3COLD_SUPPORT=y
CONFIG_PCIEXP_ASPM=y
CONFIG_PCIEXP_L1_SUB_STATE=y
CONFIG_PCIEXP_CLK_PM=y
CONFIG_DRIVERS_UART_8250IO=y
CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72
CONFIG_HEAP_SIZE=0x10000
CONFIG_EC_GPE_SCI=0x50
CONFIG_EDK2_BOOTSPLASH_FILE="Documentation/coreboot_logo.bmp"
# CONFIG_SOC_INTEL_CSE_SEND_EOP_EARLY is not set
CONFIG_BOARD_ROMSIZE_KB_32768=y
# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set
# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set
CONFIG_COREBOOT_ROMSIZE_KB_32768=y
# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set
CONFIG_COREBOOT_ROMSIZE_KB=32768
CONFIG_ROM_SIZE=0x02000000
CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y
CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y
CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set
# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set
CONFIG_MAINBOARD_POWER_FAILURE_STATE=0
# end of Mainboard

#
# Chipset
#

#
# SoC
#
CONFIG_CHIPSET_DEVICETREE="soc/intel/alderlake/chipset_pch_s.cb"
CONFIG_FSP_M_FILE="$(obj)/Fsp_M.fd"
CONFIG_FSP_S_FILE="$(obj)/Fsp_S.fd"
CONFIG_CBFS_MCACHE_SIZE=0x4000
CONFIG_ROMSTAGE_ADDR=0x2000000
CONFIG_FSP_TEMP_RAM_SIZE=0x20000
CONFIG_VERSTAGE_ADDR=0x2000000
CONFIG_SMM_TSEG_SIZE=0x800000
CONFIG_SMM_RESERVED_SIZE=0x200000
CONFIG_SMM_MODULE_STACK_SIZE=0x800
CONFIG_ACPI_BERT_SIZE=0x0
CONFIG_DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ=133
CONFIG_VBOOT_HASH_BLOCK_SIZE=0x1000
CONFIG_ACPI_CPU_STRING="CP%02X"
CONFIG_STACK_SIZE=0x2000
CONFIG_SOC_INTEL_ALDERLAKE=y
CONFIG_SOC_INTEL_ALDERLAKE_PCH_S=y
CONFIG_CPU_SPECIFIC_OPTIONS=y
CONFIG_ALDERLAKE_CAR_ENHANCED_NEM=y
CONFIG_EXT_BIOS_WIN_BASE=0xf8000000
CONFIG_EXT_BIOS_WIN_SIZE=0x2000000
CONFIG_IFD_CHIPSET="adl"
CONFIG_IED_REGION_SIZE=0x400000
CONFIG_MAX_PCH_ROOT_PORTS=28
CONFIG_MAX_CPU_ROOT_PORTS=3
CONFIG_MAX_TBT_ROOT_PORTS=0
CONFIG_MAX_ROOT_PORTS=28
CONFIG_MAX_PCIE_CLOCK_SRC=18
CONFIG_MAX_PCIE_CLOCK_REQ=18
CONFIG_PCR_BASE_ADDRESS=0xe0000000
CONFIG_CPU_BCLK_MHZ=100
CONFIG_SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR=127
CONFIG_SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR=100
CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_CLOCK_MHZ=120
CONFIG_CPU_XTAL_HZ=38400000
CONFIG_SOC_INTEL_UFS_CLK_FREQ_HZ=19200000
CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX=7
CONFIG_SOC_INTEL_I2C_DEV_MAX=8
# CONFIG_ENABLE_SATA_TEST_MODE is not set
CONFIG_SOC_INTEL_UART_DEV_MAX=7
CONFIG_VBT_DATA_SIZE_KB=9
CONFIG_SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL=0x25a
CONFIG_SOC_INTEL_COMMON_LPSS_UART_CLK_N_VAL=0x7fff
CONFIG_FSP_HEADER_PATH="3rdparty/fsp/AlderLakeFspBinPkg/Client/AlderLakeS/Include/"
CONFIG_FSP_FD_PATH="3rdparty/fsp/AlderLakeFspBinPkg/Client/AlderLakeS/Fsp.fd"
CONFIG_SOC_INTEL_ALDERLAKE_DEBUG_CONSENT=0
CONFIG_DATA_BUS_WIDTH=128
CONFIG_DIMMS_PER_CHANNEL=2
CONFIG_MRC_CHANNEL_WIDTH=16
CONFIG_ACPI_ADL_IPU_ES_SUPPORT=y
CONFIG_ALDERLAKE_ENABLE_SOC_WORKAROUND=y
CONFIG_SI_DESC_REGION="SI_DESC"
CONFIG_SI_DESC_REGION_SZ=4096
# CONFIG_BUILDING_WITH_DEBUG_FSP is not set
CONFIG_INTEL_GMA_BCLV_OFFSET=0xc8258
CONFIG_INTEL_GMA_BCLV_WIDTH=32
CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8254
CONFIG_INTEL_GMA_BCLM_WIDTH=32
CONFIG_FSP_PUBLISH_MBP_HOB=y
# CONFIG_INCLUDE_HSPHY_IN_FMAP is not set
CONFIG_HSPHY_FW_MAX_SIZE=0x8000
CONFIG_MAX_HECI_DEVICES=6
CONFIG_BOOTBLOCK_IN_CBFS=y
CONFIG_HAVE_PAM0_REGISTER=y
CONFIG_PCIEXP_COMMON_CLOCK=y
CONFIG_CPU_INTEL_NUM_FIT_ENTRIES=4
CONFIG_SOC_INTEL_GFX_FRAMEBUFFER_OFFSET=0x0
CONFIG_PCIE_LTR_MAX_SNOOP_LATENCY=0x1003
CONFIG_PCIE_LTR_MAX_NO_SNOOP_LATENCY=0x1003
CONFIG_INTEL_TME=y
CONFIG_SOC_INTEL_COMMON_BLOCK_P2SB=y
CONFIG_FIXED_SMBUS_IO_BASE=0xefa0
CONFIG_CBFS_CACHE_ALIGN=8
CONFIG_SOC_INTEL_COMMON=y

#
# Intel SoC Common Code for IP blocks
#
CONFIG_SOC_INTEL_COMMON_BLOCK=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_GPIO=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_LPIT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_PEP=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_PEP_LPM_REQ=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_CPPC=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_CPU_HYBRID=y
CONFIG_SOC_INTEL_UFS_OCP_TIMER_DISABLE=y
CONFIG_SOC_INTEL_UFS_LTR_DISQUALIFY=y
CONFIG_SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG=y
CONFIG_SOC_INTEL_COMMON_BLOCK_CNVI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_CPU=y
CONFIG_SOC_INTEL_COMMON_BLOCK_CPU_MPINIT=y
CONFIG_USE_FSP_FEATURE_PROGRAM_ON_APS=y
# CONFIG_USE_COREBOOT_MP_INIT is not set
CONFIG_SOC_INTEL_COMMON_BLOCK_CPU_SMMRELOCATE=y
CONFIG_SOC_INTEL_COMMON_BLOCK_CAR=y
CONFIG_INTEL_CAR_NEM_ENHANCED=y
CONFIG_CAR_HAS_SF_MASKS=y
CONFIG_COS_MAPPED_TO_MSB=y
CONFIG_CAR_HAS_L3_PROTECTED_WAYS=y
CONFIG_USE_INTEL_FSP_TO_CALL_COREBOOT_PUBLISH_MP_PPI=y
CONFIG_CPU_SUPPORTS_INTEL_TME=y
# CONFIG_TME_GENERATE_NEW_KEY_ON_WARM_BOOT is not set
# CONFIG_TME_EXCLUDE_CBMEM_ENCRYPTION is not set
CONFIG_CPU_SUPPORTS_PM_TIMER_EMULATION=y
CONFIG_HAVE_HYPERTHREADING=y
CONFIG_FSP_HYPERTHREADING=y
# CONFIG_INTEL_KEYLOCKER is not set
CONFIG_SOC_INTEL_COMMON_BLOCK_CSE=y
CONFIG_SOC_INTEL_COMMON_BLOCK_HECI1_DISABLE_USING_PMC_IPC=y
CONFIG_SOC_INTEL_CSE_SEND_EOP_LATE=y
CONFIG_SOC_INTEL_CSE_FMAP_NAME="SI_ME"
CONFIG_SOC_INTEL_CSE_RW_A_FMAP_NAME="ME_RW_A"
CONFIG_SOC_INTEL_CSE_RW_B_FMAP_NAME="ME_RW_B"
CONFIG_SOC_INTEL_CSE_RW_CBFS_NAME="me_rw"
CONFIG_SOC_INTEL_CSE_RW_HASH_CBFS_NAME="me_rw.hash"
CONFIG_SOC_INTEL_CSE_RW_VERSION_CBFS_NAME="me_rw.version"
CONFIG_SOC_INTEL_CSE_RW_FILE=""
CONFIG_SOC_INTEL_CSE_RW_VERSION=""
CONFIG_SOC_INTEL_CSE_SET_EOP=y
CONFIG_SOC_INTEL_CSE_IOM_CBFS_NAME="cse_iom"
CONFIG_SOC_INTEL_CSE_IOM_CBFS_FILE=""
CONFIG_SOC_INTEL_CSE_NPHY_CBFS_NAME="cse_nphy"
CONFIG_SOC_INTEL_CSE_NPHY_CBFS_FILE=""
CONFIG_SOC_INTEL_CSE_HAVE_SPEC_SUPPORT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ME_SPEC_16=y
CONFIG_ME_SPEC=16
CONFIG_SOC_INTEL_COMMON_BLOCK_DSP=y
CONFIG_SOC_INTEL_COMMON_BLOCK_DTT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_FAST_SPI=y
CONFIG_FAST_SPI_DISABLE_WRITE_STATUS=y
CONFIG_FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_ITSS_POL_CFG=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_DUAL_ROUTE_SUPPORT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GPIO_LOCK_USING_SBI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GPMR=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GRAPHICS=y
# CONFIG_SOC_INTEL_DISABLE_IGD is not set
CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2=y
CONFIG_SOC_INTEL_COMMON_BLOCK_HDA=y
CONFIG_SOC_INTEL_COMMON_BLOCK_HDA_VERB=y
CONFIG_SOC_INTEL_COMMON_BLOCK_I2C=y
CONFIG_SOC_INTEL_COMMON_BLOCK_IRQ=y
CONFIG_SOC_INTEL_COMMON_BLOCK_ITSS=y
CONFIG_SOC_INTEL_COMMON_BLOCK_LPC=y
CONFIG_SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR=y
CONFIG_SOC_INTEL_COMMON_BLOCK_LPSS=y
CONFIG_SOC_INTEL_COMMON_BLOCK_MEMINIT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_BASE_P2SB=y
CONFIG_SOC_INTEL_COMMON_BLOCK_PCIE=y
CONFIG_SOC_INTEL_COMMON_BLOCK_PCIE_RTD3=y
CONFIG_SOC_INTEL_COMMON_BLOCK_PCR=y
CONFIG_SOC_INTEL_COMMON_BLOCK_PMC=y
CONFIG_SOC_INTEL_MEM_MAPPED_PM_CONFIGURATION=y
CONFIG_SOC_INTEL_COMMON_BLOCK_PMC_EPOC=y
CONFIG_PMC_IPC_ACPI_INTERFACE=y
CONFIG_PMC_GLOBAL_RESET_ENABLE_LOCK=y
CONFIG_SOC_INTEL_COMMON_BLOCK_POWER_LIMIT=y
CONFIG_SOC_INTEL_COMMON_BLOCK_RTC=y
CONFIG_SOC_INTEL_COMMON_BLOCK_SATA=y
CONFIG_SOC_INTEL_COMMON_BLOCK_SMBUS=y
CONFIG_SOC_INTEL_COMMON_BLOCK_TCO=y
CONFIG_SOC_INTEL_COMMON_BLOCK_TCO_ENABLE_THROUGH_SMBUS=y
CONFIG_SOC_INTEL_COMMON_BLOCK_SMM=y
CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_IO_TRAP=y
# CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_TCO_ENABLE is not set
CONFIG_SOC_INTEL_COMMON_BLOCK_SMM_S5_DELAY_MS=0
CONFIG_SOC_INTEL_COMMON_BLOCK_SPI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_SA=y
CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xe0000000
CONFIG_SOC_INTEL_COMMON_BLOCK_THERMAL=y
CONFIG_SOC_INTEL_COMMON_BLOCK_THERMAL_BEHIND_PMC=y
CONFIG_SOC_INTEL_COMMON_BLOCK_TIMER=y
CONFIG_SOC_INTEL_COMMON_BLOCK_UART=y
CONFIG_SOC_INTEL_COMMON_BLOCK_VTD=y
# CONFIG_ENABLE_EARLY_DMA_PROTECTION is not set
CONFIG_SOC_INTEL_COMMON_BLOCK_XDCI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_XHCI=y
CONFIG_SOC_INTEL_COMMON_BLOCK_XHCI_ELOG=y

#
# Intel SoC Common PCH Code
#
CONFIG_SOC_INTEL_COMMON_PCH_CLIENT=y
CONFIG_SOC_INTEL_COMMON_PCH_BASE=y
CONFIG_SOC_INTEL_COMMON_PCH_LOCKDOWN=y
CONFIG_PCH_SPECIFIC_BASE_OPTIONS=y
CONFIG_PCH_SPECIFIC_DISCRETE_OPTIONS=y
CONFIG_PCH_SPECIFIC_CLIENT_OPTIONS=y

#
# Intel SoC Common coreboot stages and non-IP blocks
#
CONFIG_SOC_INTEL_COMMON_BASECODE=y
CONFIG_SOC_INTEL_COMMON_BASECODE_RAMTOP=y
CONFIG_SOC_INTEL_COMMON_RESET=y
CONFIG_SOC_INTEL_COMMON_ACPI_WAKE_SOURCE=y
CONFIG_PAVP=y
# CONFIG_SOC_INTEL_DEBUG_CONSENT is not set
CONFIG_HAVE_INTEL_COMPLIANCE_TEST_MODE=y
# CONFIG_SOC_INTEL_COMPLIANCE_TEST_MODE is not set

#
# CPU
#
CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE=y
CONFIG_CPU_INTEL_COMMON=y
CONFIG_ENABLE_VMX=y
CONFIG_SET_IA32_FC_LOCK_BIT=y
CONFIG_SET_MSR_AESNI_LOCK_BIT=y
CONFIG_CPU_INTEL_COMMON_VOLTAGE=y
CONFIG_CPU_INTEL_COMMON_SMM=y
CONFIG_PARALLEL_MP=y
CONFIG_PARALLEL_MP_AP_WORK=y
CONFIG_XAPIC_ONLY=y
# CONFIG_X2APIC_ONLY is not set
# CONFIG_X2APIC_RUNTIME is not set
# CONFIG_X2APIC_LATE_WORKAROUND is not set
CONFIG_UDELAY_TSC=y
CONFIG_TSC_MONOTONIC_TIMER=y
CONFIG_X86_CLFLUSH_CAR=y
CONFIG_HAVE_SMI_HANDLER=y
CONFIG_SMM_TSEG=y
CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8
CONFIG_AP_STACK_SIZE=0x800
CONFIG_SMP=y
CONFIG_SSE=y
CONFIG_SSE2=y
CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y
CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y
CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y
# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set
# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set
# CONFIG_CPU_MICROCODE_CBFS_NONE is not set

#
# Northbridge
#

#
# Southbridge
#
# CONFIG_PCIEXP_HOTPLUG is not set
CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y
CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y
CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y
CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y
# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set
CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000
CONFIG_RCBA_LENGTH=0x4000

#
# Super I/O
#
CONFIG_SUPERIO_NUVOTON_COMMON_PRE_RAM=y
CONFIG_SUPERIO_NUVOTON_NCT6687D=y

#
# Embedded Controllers
#

#
# Intel Firmware
#
CONFIG_UDK_BASE=y
CONFIG_UDK_202005_BINDING=y
CONFIG_UDK_2013_VERSION=2013
CONFIG_UDK_2017_VERSION=2017
CONFIG_UDK_202005_VERSION=202005
CONFIG_UDK_202302_VERSION=202302
CONFIG_UDK_VERSION=202005
CONFIG_ARCH_X86=y
CONFIG_ARCH_BOOTBLOCK_X86_32=y
CONFIG_ARCH_VERSTAGE_X86_32=y
CONFIG_ARCH_ROMSTAGE_X86_32=y
CONFIG_ARCH_POSTCAR_X86_32=y
CONFIG_ARCH_RAMSTAGE_X86_32=y
CONFIG_ARCH_ALL_STAGES_X86_32=y
CONFIG_X86_CUSTOM_BOOTMEDIA=y
CONFIG_PC80_SYSTEM=y
CONFIG_POSTCAR_STAGE=y
CONFIG_BOOTBLOCK_SIMPLE=y
# CONFIG_BOOTBLOCK_NORMAL is not set
CONFIG_COLLECT_TIMESTAMPS_TSC=y
CONFIG_IDT_IN_EVERY_STAGE=y
CONFIG_HAVE_CF9_RESET=y
CONFIG_DEBUG_HW_BREAKPOINTS=y
CONFIG_DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES=y
CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y
CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES=y
# CONFIG_DUMP_SMBIOS_TYPE17 is not set
# end of Chipset

#
# Devices
#
CONFIG_HAVE_LINEAR_FRAMEBUFFER=y
CONFIG_HAVE_FSP_GOP=y
# CONFIG_VGA_ROM_RUN is not set
CONFIG_RUN_FSP_GOP=y
# CONFIG_NO_GFX_INIT is not set
CONFIG_NO_EARLY_GFX_INIT=y

#
# Display
#
CONFIG_WANT_LINEAR_FRAMEBUFFER=y
CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y
CONFIG_LINEAR_FRAMEBUFFER=y
# CONFIG_BOOTSPLASH is not set
# end of Display

CONFIG_PCI=y
CONFIG_ECAM_MMCONF_SUPPORT=y
CONFIG_PCIX_PLUGIN_SUPPORT=y
CONFIG_AZALIA_PLUGIN_SUPPORT=y
CONFIG_AZALIA_LOCK_DOWN_R_WO_GCAP=y
CONFIG_PCIEXP_PLUGIN_SUPPORT=y
CONFIG_ECAM_MMCONF_LENGTH=0x10000000
CONFIG_PCI_ALLOW_BUS_MASTER=y
CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y
CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y
# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set
# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set
CONFIG_FIRMWARE_CONNECTION_MANAGER=y
# CONFIG_SOFTWARE_CONNECTION_MANAGER is not set
# CONFIG_EARLY_PCI_BRIDGE is not set
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
CONFIG_INTEL_GMA_HAVE_VBT=y
CONFIG_INTEL_GMA_ADD_VBT=y
# CONFIG_SOFTWARE_I2C is not set
CONFIG_I2C_TRANSFER_TIMEOUT_US=500000
CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y
CONFIG_USE_DDR5=y
CONFIG_USE_LPDDR4=y
CONFIG_USE_DDR4=y
CONFIG_USE_DDR3=y
CONFIG_USE_DDR2=y
# end of Devices

#
# Generic Drivers
#
CONFIG_CRB_TPM=y
CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000
# CONFIG_DRIVERS_EFI_VARIABLE_STORE is not set
# CONFIG_ELOG is not set
CONFIG_CACHE_MRC_SETTINGS=y
CONFIG_MRC_SETTINGS_PROTECT=y
# CONFIG_SMMSTORE is not set
CONFIG_SPI_FLASH=y
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
# CONFIG_SPI_FLASH_NO_FAST_READ is not set
CONFIG_DRIVERS_UART=y
# CONFIG_DRIVERS_UART_OXPCIE is not set
# CONFIG_VPD is not set
# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set
# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set
# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set
# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set
# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set
CONFIG_DRIVERS_I2C_DESIGNWARE=y
# CONFIG_DRIVERS_I2C_MAX98396 is not set
CONFIG_FSP_USE_REPO=y
# CONFIG_DISPLAY_HOBS is not set
# CONFIG_DISPLAY_UPD_DATA is not set
CONFIG_PLATFORM_USES_FSP2_0=y
CONFIG_PLATFORM_USES_FSP2_1=y
CONFIG_PLATFORM_USES_FSP2_2=y
CONFIG_PLATFORM_USES_FSP2_3=y
CONFIG_PLATFORM_USES_FSP2_X86_32=y
CONFIG_HAVE_INTEL_FSP_REPO=y
CONFIG_ADD_FSP_BINARIES=y
CONFIG_FSP_T_LOCATION=0xfffe0000
CONFIG_FSP_S_CBFS="fsps.bin"
CONFIG_FSP_M_CBFS="fspm.bin"
CONFIG_FSP_FULL_FD=y
CONFIG_FSP_T_RESERVED_SIZE=0x0
CONFIG_FSP_M_XIP=y
CONFIG_FSP_USES_CB_STACK=y
CONFIG_FSP_COMPRESS_FSP_S_LZ4=y
CONFIG_FSP_STATUS_GLOBAL_RESET_REQUIRED_3=y
CONFIG_FSP_STATUS_GLOBAL_RESET=0x40000003
CONFIG_SOC_INTEL_COMMON_FSP_RESET=y
CONFIG_FSPS_HAS_ARCH_UPD=y
CONFIG_FSP_USES_CB_DEBUG_EVENT_HANDLER=y
# CONFIG_DISPLAY_FSP_TIMESTAMPS is not set
CONFIG_FSP_ENABLE_SERIAL_DEBUG=y
CONFIG_FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN=y
CONFIG_INTEL_GMA_ACPI=y
CONFIG_INTEL_GMA_OPREGION_2_1=y
CONFIG_HAVE_INTEL_PTT=y
# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set
# CONFIG_DRIVERS_PS2_KEYBOARD is not set
CONFIG_DRIVERS_MC146818=y
CONFIG_USE_PC_CMOS_ALTCENTURY=y
CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70
# CONFIG_DRIVERS_SIL_3114 is not set
CONFIG_DRIVERS_USB_ACPI=y
CONFIG_DRIVERS_WIFI_GENERIC=y
CONFIG_MP_SERVICES_PPI=y
CONFIG_MP_SERVICES_PPI_V2=y
# end of Generic Drivers

#
# Security
#

#
# CBFS verification
#
# CONFIG_CBFS_VERIFICATION is not set
# end of CBFS verification

#
# Verified Boot (vboot)
#
CONFIG_VBOOT_LIB=y
# end of Verified Boot (vboot)

#
# Trusted Platform Module
#
CONFIG_NO_TPM=y
# CONFIG_TPM1 is not set
# CONFIG_TPM2 is not set
CONFIG_PCR_BOOT_MODE=1
CONFIG_PCR_HWID=1
CONFIG_PCR_SRTM=2
CONFIG_PCR_RUNTIME_DATA=3
# end of Trusted Platform Module

#
# Memory initialization
#
CONFIG_PLATFORM_HAS_DRAM_CLEAR=y
# CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT is not set
# end of Memory initialization

CONFIG_INTEL_TXT_LIB=y
# CONFIG_STM is not set
# CONFIG_INTEL_CBNT_SUPPORT is not set
CONFIG_BOOTMEDIA_LOCK_NONE=y
# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set
# CONFIG_BOOTMEDIA_LOCK_CHIP is not set
# CONFIG_BOOTMEDIA_SMM_BWP is not set
# end of Security

CONFIG_ACPI_HAVE_PCAT_8259=y
CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y
CONFIG_ACPI_SOC_NVS=y
CONFIG_ACPI_CUSTOM_MADT=y
CONFIG_ACPI_COMMON_MADT_IOAPIC=y
CONFIG_HAVE_ACPI_TABLES=y
CONFIG_ACPI_LPIT=y
CONFIG_BOOT_DEVICE_SPI_FLASH=y
CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y
CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y
CONFIG_RTC=y

#
# Console
#
CONFIG_BOOTBLOCK_CONSOLE=y
CONFIG_POSTCAR_CONSOLE=y
CONFIG_SQUELCH_EARLY_SMP=y

#
# I/O mapped, 8250-compatible
#
CONFIG_TTYS0_BASE=0x3f8

#
# Serial port base address = 0x3f8
#
# CONFIG_CONSOLE_SERIAL_921600 is not set
# CONFIG_CONSOLE_SERIAL_460800 is not set
# CONFIG_CONSOLE_SERIAL_230400 is not set
CONFIG_CONSOLE_SERIAL_115200=y
# CONFIG_CONSOLE_SERIAL_57600 is not set
# CONFIG_CONSOLE_SERIAL_38400 is not set
# CONFIG_CONSOLE_SERIAL_19200 is not set
# CONFIG_CONSOLE_SERIAL_9600 is not set
CONFIG_TTYS0_LCS=3
# CONFIG_SPKMODEM is not set
# CONFIG_CONSOLE_NE2K is not set
CONFIG_CONSOLE_CBMEM=y
# CONFIG_CONSOLE_SPI_FLASH is not set
# CONFIG_CONSOLE_I2C_SMBUS is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set
CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7
CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y
CONFIG_CONSOLE_USE_ANSI_ESCAPES=y
# CONFIG_CMOS_POST is not set
CONFIG_POST_DEVICE_NONE=y
# CONFIG_POST_DEVICE_LPC is not set
# CONFIG_POST_DEVICE_PCI_PCIE is not set
CONFIG_POST_IO_PORT=0x80
CONFIG_HWBASE_DEBUG_CB=y
# end of Console

CONFIG_ACPI_S1_NOT_SUPPORTED=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_RESUME_PATH_SAME_AS_BOOT=y
CONFIG_HAVE_MONOTONIC_TIMER=y
CONFIG_IOAPIC=y

#
# System tables
#
CONFIG_GENERATE_SMBIOS_TABLES=y
CONFIG_BIOS_VENDOR="coreboot"
CONFIG_MAINBOARD_SERIAL_NUMBER="123456789"
# end of System tables

#
# Payload
#
# CONFIG_PAYLOAD_NONE is not set
# CONFIG_PAYLOAD_ELF is not set
# CONFIG_PAYLOAD_BOOTBOOT is not set
# CONFIG_PAYLOAD_FILO is not set
# CONFIG_PAYLOAD_GRUB2 is not set
# CONFIG_PAYLOAD_SEAGRUB is not set
# CONFIG_PAYLOAD_LINUXBOOT is not set
# CONFIG_PAYLOAD_SEABIOS is not set
# CONFIG_PAYLOAD_UBOOT is not set
CONFIG_PAYLOAD_EDK2=y
# CONFIG_PAYLOAD_LINUX is not set
CONFIG_PAYLOAD_FILE="build/UEFIPAYLOAD.fd"
CONFIG_PAYLOAD_OPTIONS=""
CONFIG_EDK2_UEFIPAYLOAD=y
# CONFIG_EDK2_UNIVERSAL_PAYLOAD is not set
CONFIG_EDK2_REPO_MRCHROMEBOX=y
# CONFIG_EDK2_REPO_OFFICIAL is not set
# CONFIG_EDK2_REPO_CUSTOM is not set
CONFIG_EDK2_REPOSITORY="https://github.com/mrchromebox/edk2"
CONFIG_EDK2_TAG_OR_REV="origin/uefipayload_202304"
CONFIG_EDK2_USE_EDK2_PLATFORMS=y
CONFIG_EDK2_PLATFORMS_REPOSITORY="https://github.com/tianocore/edk2-platforms"
CONFIG_EDK2_PLATFORMS_TAG_OR_REV="origin/master"
# CONFIG_EDK2_DEBUG is not set
CONFIG_EDK2_RELEASE=y
# CONFIG_EDK2_BOOT_MANAGER_ESCAPE is not set
# CONFIG_EDK2_CBMEM_LOGGING is not set
CONFIG_EDK2_CPU_TIMER_LIB=y
# CONFIG_EDK2_FOLLOW_BGRT_SPEC is not set
CONFIG_EDK2_FULL_SCREEN_SETUP=y
CONFIG_EDK2_HAVE_EFI_SHELL=y
CONFIG_EDK2_PRIORITIZE_INTERNAL=y
CONFIG_EDK2_PS2_SUPPORT=y
CONFIG_EDK2_SD_MMC_TIMEOUT=10
# CONFIG_EDK2_SERIAL_SUPPORT is not set
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=""
# CONFIG_PXE is not set
# CONFIG_COMPRESSED_PAYLOAD_NONE is not set
CONFIG_COMPRESSED_PAYLOAD_LZMA=y
# CONFIG_COMPRESSED_PAYLOAD_LZ4 is not set
CONFIG_COMPRESS_SECONDARY_PAYLOAD=y

#
# Secondary Payloads
#
# CONFIG_COREINFO_SECONDARY_PAYLOAD is not set
# CONFIG_GRUB2_SECONDARY_PAYLOAD is not set
# CONFIG_MEMTEST_SECONDARY_PAYLOAD is not set
# CONFIG_SEABIOS_SECONDARY_PAYLOAD is not set
# CONFIG_TINT_SECONDARY_PAYLOAD is not set
# CONFIG_COREDOOM_SECONDARY_PAYLOAD is not set
# end of Secondary Payloads
# end of Payload

#
# Debugging
#

#
# CPU Debug Settings
#
# CONFIG_DISPLAY_MTRRS is not set

#
# BLOB Debug Settings
#
# CONFIG_DISPLAY_FSP_CALLS_AND_STATUS is not set
# CONFIG_DISPLAY_FSP_HEADER is not set
# CONFIG_VERIFY_HOBS is not set
CONFIG_DISPLAY_FSP_VERSION_INFO=y
# CONFIG_ENABLE_FSP_ERROR_INFO is not set
CONFIG_HAVE_GPIO_SNAPSHOT_VERIFY_SUPPORT=y
# CONFIG_CHECK_GPIO_CONFIG_CHANGES is not set

#
# General Debug Settings
#
# CONFIG_GDB_STUB is not set
# CONFIG_FATAL_ASSERTS is not set
CONFIG_HAVE_DEBUG_GPIO=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_DEBUG_CBFS is not set
CONFIG_HAVE_DEBUG_RAM_SETUP=y
# CONFIG_DEBUG_RAM_SETUP is not set
CONFIG_HAVE_DEBUG_SMBUS=y
# CONFIG_DEBUG_SMBUS is not set
# CONFIG_DEBUG_MALLOC is not set
# CONFIG_DEBUG_CONSOLE_INIT is not set
# CONFIG_DEBUG_SPI_FLASH is not set
# CONFIG_DEBUG_BOOT_STATE is not set
# CONFIG_DEBUG_ADA_CODE is not set
# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set
# end of Debugging

CONFIG_DECOMPRESS_OFAST=y
CONFIG_WARNINGS_ARE_ERRORS=y
CONFIG_MAX_REBOOT_CNT=3
CONFIG_RELOCATABLE_MODULES=y
CONFIG_GENERIC_GPIO_LIB=y
CONFIG_HAVE_BOOTBLOCK=y
CONFIG_HAVE_ROMSTAGE=y
CONFIG_HAVE_RAMSTAGE=y

Extracted Dasharo Config (W/ my modifications)

# This image was built using coreboot msi_ms7d25_v1.1.1
CONFIG_LOCALVERSION="v1.1.1"
CONFIG_VENDOR_MSI=y
CONFIG_ONBOARD_VGA_IS_PRIMARY=y
CONFIG_VBOOT=y
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x100000
CONFIG_EDK2_BOOT_TIMEOUT=3
CONFIG_BOARD_MSI_Z690_A_PRO_WIFI=y
# CONFIG_PCIEXP_L1_SUB_STATE is not set
# CONFIG_PCIEXP_CLK_PM is not set
CONFIG_EDK2_BOOTSPLASH_FILE="3rdparty/dasharo-blobs/dasharo/bootsplash.bmp"
CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
CONFIG_INCLUDE_HSPHY_IN_FMAP=y
# CONFIG_PCIEXP_ASPM is not set
CONFIG_UART_PCI_ADDR=0x0
CONFIG_SOC_INTEL_COMMON_OC_WDT_ENABLE=y
CONFIG_SOC_INTEL_COMMON_OC_WDT_TIMEOUT=120
CONFIG_ENABLE_EARLY_DMA_PROTECTION=y
CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR=y
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
CONFIG_I2C_TRANSFER_TIMEOUT_US=500000
CONFIG_DRIVERS_EFI_VARIABLE_STORE=y
CONFIG_SMMSTORE_SIZE=0x40000
CONFIG_DRIVERS_GENERIC_CBFS_SERIAL=y
CONFIG_DRIVERS_GENERIC_CBFS_UUID=y
CONFIG_CBFS_MCACHE_RW_PERCENTAGE=50
CONFIG_VBOOT_KEYBLOCK_VERSION=1
CONFIG_VBOOT_KEYBLOCK_PREAMBLE_FLAGS=0x0
CONFIG_TPM2=y
CONFIG_TPM_MEASURED_BOOT=y
CONFIG_BOOTMEDIA_LOCK_CONTROLLER=y
CONFIG_BOOTMEDIA_LOCK_WPRO_VBOOT_RO=y
CONFIG_BOOTMEDIA_SMM_BWP=y
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0=y
# CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX is not set
# CONFIG_CONSOLE_USE_ANSI_ESCAPES is not set
CONFIG_POST_DEVICE_PCI_PCIE=y
CONFIG_POST_IO_PORT=0x80
CONFIG_PAYLOAD_EDK2=y
CONFIG_EDK2_REPOSITORY="https://github.com/Dasharo/edk2.git"
CONFIG_EDK2_TAG_OR_REV="a913e338a0a66d61fdf28f17f86a5c2bc394008c"
CONFIG_EDK2_USE_EDK2_PLATFORMS=y
CONFIG_EDK2_PLATFORMS_REPOSITORY="https://github.com/Dasharo/edk2-platforms"
CONFIG_EDK2_PLATFORMS_TAG_OR_REV="3323ed481d35096fb6a7eae7b49f35eff00f86cf"
CONFIG_EDK2_ABOVE_4G_MEMORY=y
CONFIG_EDK2_CBMEM_LOGGING=y
CONFIG_EDK2_FOLLOW_BGRT_SPEC=y
CONFIG_EDK2_SD_MMC_TIMEOUT=1000
CONFIG_EDK2_ENABLE_IPXE=y
CONFIG_EDK2_SECURE_BOOT=y
CONFIG_EDK2_SATA_PASSWORD=y
CONFIG_EDK2_OPAL_PASSWORD=y
CONFIG_EDK2_DASHARO_SYSTEM_FEATURES=y
CONFIG_EDK2_DASHARO_SECURITY_OPTIONS=y
CONFIG_EDK2_DASHARO_INTEL_ME_OPTIONS=y
CONFIG_EDK2_DASHARO_USB_CONFIG=y
CONFIG_EDK2_DASHARO_NETWORK_CONFIG=y
CONFIG_EDK2_DASHARO_CHIPSET_CONFIG=y
CONFIG_EDK2_BOOT_MENU_KEY=0x0015
CONFIG_EDK2_SETUP_MENU_KEY=0x0008
# CONFIG_EDK2_SECURE_BOOT_DEFAULT_ENABLE is not set
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=""
CONFIG_EDK2_LAN_ROM_DRIVER="LanRom.efi"
CONFIG_PXE_ADD_SCRIPT=y
CONFIG_PXE_SCRIPT="3rdparty/dasharo-blobs/dasharo/dasharo.ipxe"
CONFIG_PXE_CUSTOM_BUILD_ID="0123456789"

2 Likes

Thank you very much for those kind words. Just in case other L1T community members would have questions, we are here and would be glad to answer anything.

True, except for those platforms which get support because of hyperscaler or other OEM/ODM sponsorship, but true that for the hardware enthusiasts’ community, more interesting would be carefully selected targets, what is the goal of Dasharo Team, for example, explained here.

This is a rare event, but thanks to communities like L1T, it can be accelerated. The number one problem, which blocks porting, is a lack of interest which would trigger big enough demand. Spreading the word helps a lot.

Sorry for that. Please let me know where you get this link, so we can change that (probably add a redirect). The new version of HCL is here and contains an extended and updated list of DRAM modules and CPUs.

From our perspective, we exhausted most of our resources to bring that platform and upstream its code. Personally, I don’t think maintenance of procedures for building and configuring this target upstream would be our goal, in a similar way that Linux kernel documentation is not a good place for building your daily driver OS. coreboot leadership clearly states that coreboot is more of a framework than a place to support building ready-to-use binaries. For the upstream community, it may be just not needed overhead. Our goal is to build Dasharo Community and create a sustainable open-source firmware ecosystem based on coreboot or whatever open-source firmware in the future. I had many discussions in the coreboot community about building a welcoming ecosystem for sustainable development, but I was unable to convince leadership about that, which was one of the reasons to create Dasharo. I tried to explain this in FAQ. We already see that if one comes to the community with problems about MSI Z690-A, one is sent to Dasharo support channels. There is probably way more to that, and if you are interested in such discussion, feel invited to our quarterly Dasharo Users Group and Dasharo Developers vPub events.

We would be glad to know more about that, maybe through issue?

You can build Dasharo from the source code using this procedure. At some point, we had the idea to have just a set of patches that users can apply using git to the upstream repository, but the key question is how many support problems we would have with that. Discussion about fork maintenance is here.

For those who don’t know, Dasharo is open-source firmware distribution based on coreboot that we try to build and promote to the level at which the open-source firmware ecosystem surrounding would be sustainable.

We need that to provide best-in-class firmware, long-term maintenance, and bleeding-edge security and privacy features.

For those looking for more, there is Z790-P coming on our roadmap. Also, feel free to join our community on Matrix.

1 Like

Indeed. Your openness and willingness to engage with the community is very refreshing. Thank you for your reply.

This 404 originates from the “CPU Compatibility” hyperlink on this page.

I would be happy to raise an issue, if you could let me know what information you need from me. As I described in my post - I flashed the Dasharo build using DTS, extracted the rom from the flash board using flashrom e.g.:
sudo flashrom -p internal -r dasharo.rom
used the CBFStool coreboot utility to extract a .config:
cbfstool dasharo.rom extract -n config -f .config
Then swapped to my local install of Coreboot, ran “make-distclean”, copied in the .config file i just created, ran “make menuconfig”, updated the value for motherboard, updated the repositories for the EDK2 payload from the Dasharo to Tianocore ones, built the rom, flashed it to the board and rebooted.

Again I did not expect that this would work, or that it would be something Dasharo intended for users to do. (it was more of a so called “Hail Mary” on my part) I had assumed that the forks of Coreboot & EDK2 from which Dasharo was built would be divergent enough pieces of software that the configuration file would not be compatible. In other words i would not expect that the configs should work if there is no intention to support target upstream of this board.

The issue template on Github is quite straightforward and asks for all required information.

I’m concerned that, as you said, not all options Dasharo use are reflected in the upstream code. So most likely, using Dasharo config is not the correct path for compiling coreboot and EDKII for MSI. Also, it is important to note that coreboot and EDKII policy is more about being a good firmware framework than providing support for building working binaries for dozen of configurations that users may have.