Issue #617 has been updated by gaspar ilom.

gaspar ilom wrote in #note-12:
> Maximilian Brune wrote in #note-11:
> > Did you set CBFS_SIZE too high?
> 
> Yes, the fix mentioned in the OP 
> https://github.com/linuxboot/heads/pull/2025/commits/9b8b9cacdcea4f67c95dcec10b3153fc8c016940#diff-1146a022e2f557c41a3dc6d3b64c91c0891197c91163f30d80095f4d64ecab19
>  is not included so `CBFS_SIZE` is 0xBE4FFF where it should be 0xBDF000. 
> However, this an incorrect size was also set for the sandy/ivy bridge boards 
> (all 4+8MB SPI boards). The build only fails for the haswell boards as can be 
> seen here, though: 
> https://app.circleci.com/pipelines/circleci/MHXxJnuGL1oVD9jaDwEAGo/Kguuk4Rjpkd7hBpYBWhVuN/127/workflows/01a6f970-8d76-4e24-bb5c-b000109a4cbf
> 
> I have cherry-picked 
> https://github.com/linuxboot/heads/pull/2025/commits/9b8b9cacdcea4f67c95dcec10b3153fc8c016940
>  to fix the size and build again. Build is happening here. Let's see if the 
> boards build now: 
> https://app.circleci.com/pipelines/github/gaspar-ilom/heads/58/workflows/94de47ac-a749-4dde-ac15-5b5e87341271

I updated the link to the CI run as the original run failed (it is flaky) and 
the rerun succeeded: 
https://app.circleci.com/pipelines/github/gaspar-ilom/heads/58/workflows/94de47ac-a749-4dde-ac15-5b5e87341271

The result is that with the correct CBFS_SIZE the boards build successfully. So 
the main remaining issues now are:

* The error message could be improved to make it clear what is going wrong.
* The code for validating the IFD that is run by default with your original 
patch is never reached: https://review.coreboot.org/c/coreboot/+/73470 This is 
also why the error message is not as helpful as it could be.
* For some reason only older boards (Intel 4th Gen) pass validation even if 
CBFS_SIZE does not match the size in the IFD. This happens even when explicitly 
selecting `VALIDATE_INTEL_DESCRIPTOR`.

Here's another (force-pushed) run on my branch:
* All boards with 4+8MB chips have a CBFS_SIZE greater than the bios region in 
the IFD
* T430 and W541 have `VALIDATE_INTEL_DESCRIPTOR` selected.
* Seems like both haswell boards (T440p and W541) fail with the SI_ME region 
error.
* However, older boars T430 and X230 both succeed. Although, both have an 
invalid CBFS_SIZE and t430 has `VALIDATE_INTEL_DESCRIPTOR` set
https://app.circleci.com/pipelines/github/gaspar-ilom/heads/59/workflows/2ab3cc00-0fed-40a8-a325-ae6cb0b99c3c

To me all of this seems really inconsistent.

Why does the t430 succeed with a too high CBFS_SIZE? and why does the t440p 
fail even though validation should not happen? What are the platform specific 
differences that cause this? sizes of the blobs paylod etc?

----------------------------------------
Bug #617: Missing safeguard: CBFS_SIZE greater than BIOS region in the IFD
https://ticket.coreboot.org/issues/617#change-2192

* Author: gaspar ilom
* Status: New
* Priority: Normal
* Target version: none
* Start date: 2025-11-14
* Affected versions: main
* Affected hardware: haswell
----------------------------------------
There are no effective safeguards to enforce that the `CONFIG_CBFS_SIZE` does 
not exceed the bios region as declared in the IFD.

### Impact

- Downstream under Heads with a maximized bios region for the Haswell boards 
(T440p and W541) we could verify that this bug leads to an overflow when 
training the memory cache that makes it not work. This happens both with MRC 
blob and NRI and causes very slow boot times (20s) and S3 suspend/resume does 
not work.
- Effects on other boards have not been observed but are possible.

### Expected behavior

Coreboot should not build successfully if the `CBFS_SIZE` exceeds the bios 
region in the IFD and error out reporting the problem that caused this.

## Analysis

Full details are under the PR in Heads and in particular this comment by 
@tlaurion https://github.com/linuxboot/heads/pull/2025/#issuecomment-3524672338

Ifttool reports a bios region of 0xBDEFFF (BDEFFF).
However, the coreboot config contained: 

```
CONFIG_CBFS_SIZE=0xBE4FFF
```


```
./build/x86/coreboot-25.09/util/ifdtool/ifdtool --platform ifd2 --layout 
w541_layout blobs/w541/ifd.bin && cat w541_layout 
File blobs/w541/ifd.bin is 4096 bytes
Wrote layout to w541_layout
00000000:00000fff fd
00021000:00bfffff bios
00003000:00020fff me
00001000:00002fff gbe
```

After fixing the `CONFIG_CBFS_SIZE` the issues were fixed and fast boot with 
trained memory cache and S3 suspen/resume work again with NRI: 
https://github.com/linuxboot/heads/pull/2025/commits/9b8b9cacdcea4f67c95dcec10b3153fc8c016940



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
https://ticket.coreboot.org/my/account
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to