On Sat, Oct 19, 2019 at 9:42 AM Arthur Heymans <[email protected]> wrote:

> Hi
>
> Currently all stages that need cbmem need an implementation of a
> cbmem_top function. On platforms with fully open source coreboot code it
> is generally not a problem to link in all stages the code reading the
> hardware registers to figur out where the top of lower memory is. On FSP
> platforms this proves to be painful and using the value provided by the
> FSP-M HOB is to be preferred. Next stages don't have access to this
> variable since CAR is gone. EBDA is used to pass it on to next stages.
>
> The problem with this is that EBDA also need to be written on S3 as one
> cannot assume it to be still there. Writing things on S3 is always
> fragile as it could overwrite other things set up by something else.
>
> One possible solution is to back up the area it's going to write to in
> romstage in cbmem and restoring it on the ramstage, but writing to cbmem
> on S3 resume is just moving the problem to a different place and likely
> makes things even worse...
>
> One other idea I could come up with is to make the cbmem_top pointer an
> argument to the relocatable stages needing it (postcar and ramstage).
> This would unify all cbmem_top implementation in those stages and should
> be more robust on S3 resume as on S3 resume the ramstage is typically
> fetched from RAM (cbmem or tseg stage cache).
>

That's the same thing as effectively providing a register ABI between the
stages passing information to it. I'm not sure EBDA is necessarily bad in
practice. It's typically reserved. What specific issues are you concerned
with EBDA?


> Any thoughts?
>
> Arthur Heymans
> _______________________________________________
> coreboot mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
>
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to