Re: Comet Lake: TOLUM change causes suspend/resume after reboot to fail

Nico Huber <[email protected]>
Newsgroups gmane.linux.bios
Message-ID <[email protected]>
Hi Jonathon,

On 03.11.23 22:46, Jonathon Hall wrote:
> On Librem Mini v2, rebooting, then suspending and resuming fails to resume.
>
> I've tracked this down to a change in the TOLUM returned by FSP, which
> causes failures to find important cbmem regions during S3 resume.  (I've
> run into problems relating to the TOLUM change before:
> https://puri.sm/posts/how-we-fixed-reboot-loops-on-the-librem-mini/.)
> This doesn't seem to happen on all CML boards but has always happened on
> Mini v2 for whatever reason.  I have some ideas to address it, but I'm
> not sure which is best.
>
> For example:
> * Cold boot: cbmem_top() = 0x99fff000
> * Reboot: cbmem_top() = 0x9a000000 (4K later, FSP seems to reserve 4K
> less memory for itself on reboot)
> * Resume after reboot: cbmem_top() = 0x99fff000 (will not be able to
> find cbmem from reboot, not sure if the upper 4 KB have been overwritten
> by FSP)

I would love to blame FSP for this, but first we should make sure that
it's not coreboot's fault. I assume FSP is free to change the allocation
depending on its inputs. So it would be coreboot's job to ensure that
these inputs don't change when resuming. Obviously UPDs handed to FSP-M
shouldn't change. Have you confirmed that? (maybe dump them or a check-
sum). Otherwise, the hardware state could be different. I don't know any
example for FSP-M, but generally FSP checking for the presence of a PCIe
device, for instance, is imaginable. Then it could be bad timing. Maybe
as a desperate last test, try a 200ms delay before jumping into FSP-M.

If it's not that simple, I think we should bug Intel to provide a
complete list of all inputs that affect TOLUM.

> * Put the imd structures below the FSP reserved memory with some buffer
> space?

This would probably require additional hacks for coreboot to find
things in the FSP reserved memory later. I'm not sure how invasive
this would be. I can't remember rn. what were the reasons to keep
the IMD structures on top. But IIRC FSP was changed for this, so I
bet there are good reasons. (Ironically, I believe not having to
move them when the amount of data FSP-M spews changes, was among
them.)

> * Put the imd structures somewhere else entirely, like toward the
> beginning of the available low memory instead of the end?

This could conflict with payloads, and (legacy) bootloaders and OSs.

> * Ask FSP to reserve more than 8 KB for some buffer in case TOLUM
> changes on resume, so the imd structures are still there?

This was also one of my first thoughts. We may still have to jump
through some hoops if the location of the FSP reserved things move,
though.

Nico

_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.