Skip to content

soc/intel/cannonlake: skip CPU replacement check on CML#32

Draft
jackadam1981 wants to merge 1 commit into
MrChromebox:MrChromebox-2603from
jackadam1981:codex/cometlake-skip-cpu-replacement-check
Draft

soc/intel/cannonlake: skip CPU replacement check on CML#32
jackadam1981 wants to merge 1 commit into
MrChromebox:MrChromebox-2603from
jackadam1981:codex/cometlake-skip-cpu-replacement-check

Conversation

@jackadam1981

@jackadam1981 jackadam1981 commented Jun 1, 2026

Copy link
Copy Markdown

Summary

Add a Cannonlake/Comet Lake platform config knob for the FSP-M SkipCpuReplacementCheck test UPD, then enable it at the Google Puff baseboard level.

On KAISA, cold boots were spending about 30 seconds inside FspMemoryInit even though RW_MRC_CACHE existed and both DIMMs matched the cached SPD data. Warm reboots reused the cache and completed memory init in roughly 40 ms. Enabling this option at the mainboard level keeps FSP-M on the no-configuration-change path for this case.

Implementation

  • Add SkipCpuReplacementCheck to soc_intel_cannonlake_config.
  • Pass that platform config value into FspmTestConfig.SkipCpuReplacementCheck.
  • Enable the option in google/puff baseboard devicetree.cb.

Validation

Tested on Acer Chromebox CXI4 / KAISA with a Comet Lake build based on MrChromebox-2603.

Before this change:

  • Cold power-on: FspMemoryInit took about 30.5 s.
  • Warm reboot: FspMemoryInit took about 40 ms.
  • Logs showed SPD_CACHE: DIMM0 is the same, DIMM1 is the same, but the MRC cache was updated after the slow cold boot.

With this change:

  • Cold power-on: FspMemoryInit took about 46 ms.
  • Warm reboot: FspMemoryInit took about 41 ms.
  • Logs showed SPD_CACHE: DIMM0 is the same, DIMM1 is the same, and MRC: 'RW_MRC_CACHE' does not need update.

Build verification after moving this to platform/mainboard config:

  • Built KAISA release UEFI/iPXE-only ROM in coreboot/coreboot-sdk.
  • Build log: /home/jack/coreboot_build/out/logs/build-kaisa-2603-release-ipxe-only-skipcpu-platformcfg-20260601-155458.log
  • ROM SHA256: 214ebe3926b0727c9e37060b5acdf71f7a6fd26342458bb305d74ede6cfa73ba

@MrChromebox

Copy link
Copy Markdown
Owner

I'll need to hook it up to the platform config and set it at the mainboard level in order to upstream, but thanks for identifying the root cause

@jackadam1981 jackadam1981 force-pushed the codex/cometlake-skip-cpu-replacement-check branch from fdee1c6 to 9787831 Compare June 1, 2026 15:55
@jackadam1981

Copy link
Copy Markdown
Author

Reworked this to go through platform config and enable it at the google/puff baseboard level. The SoC code now passes \config->SkipCpuReplacementCheck\ into FSP-M instead of hardcoding it. Rebuilt KAISA successfully; updated the PR description with the new build log/hash.

@MrChromebox

Copy link
Copy Markdown
Owner

I actually rework this locally to align more closely with alder lake, so that the default is to skip the check and that boards can enable the check as needed. this way we're not setting something for every board that should be disabled by default

@MrChromebox

Copy link
Copy Markdown
Owner

@MrChromebox

Copy link
Copy Markdown
Owner

the patch above has been merged upstream and picked back into 2603

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants