> µGOP depends on a limited of PEI services:
InstallPpi()
to install the PEIM Graphics PPILocatePpi()
to access PEIM-to-PEIM Interface (PPI) DependenciesAllocatePool()
to dynamically allocate memory to handle internal data structure such as display information …GetHobList()
and CreateHob()
to access Hand Off Blocks (HOB) holding runtime dataReportStatusCode()
to report debug information which coreboot prints using printk
.> Those services implemented in coreboot are pretty straightforward and fit in less than 300 lines of code.
That looks like some form of linking, which might result in legal troubles as the GPL does not allow it.
We already have code similar to ReportStatusCode and ramstage PPI so maybe it's not a problem.
On a technical note: only coreboot's ramstage has a heap. Romstage has less resources available so we avoided using a heap thus far. AllocatePool would break that tradition. How does one know how much heap is needed? It's best to avoid memory allocations at runtime.
>
We also noticed that µGOP is faster to bring-up graphics than
libgfxinit. Indeed, according to previously captured numbers on Raptor
Lake compared to some number of µGOP on Meteor Lake, µGOP is three times
faster to bring up graphics than libgfxinit on an eDP panel (119 ms vs
373 ms).
Is this relevant? I was under the impression that the display is only used to notify the user of a very long DRAM init, where regular boots use cached results. If the dram init is orders of magnitude longer than the display init this performance difference is meaningless.
> it is compatible with our software convergence goals
Can you elaborate on this?
Thanks for taking the time to clearly present your arguments!
Arthur
Hi Jeremy,
On 14.08.23 22:52, Compostella, Jeremy wrote:
> We propose to take advantage of a proprietary driver Intel already supports, validates and includes in FSP silicon: the Intel Graphics PEIM (Pre-EFI Initialization Module) driver also known as the GOP (Graphical Output Protocol) driver.
just to make sure nobody makes wrong assumptions: Will the uGOP be
open-source or proprietary as well? I first thought the latter. But
your proposed code-flow looks like some sort of dynamic linking with
coreboot.
> We intend to keep providing such a binary base solution on the long run as it addresses our software convergence goals and is compatible with early platform development stage constraints. [libgfxinit] supports can always be added later by the open-source community once the Graphics Programmer Reference Manuals are published.
Sad to hear about this decision. It seems Intel is forgetting about
non-consumer products (e.g. embedded market) where the code isn't
needed years ahead of a platform launch.
> We also noticed that microGOP is faster to bring-up graphics than libgfxinit. Indeed, according to previously captured numbers on Raptor Lake compared to some number of microGOP on Meteor Lake, microGOP is three times faster to bring up graphics than libgfxinit on an eDP panel (119 ms vs 373 ms).
Configuring the hardware and bringing up the eDP link should take
about 20~30ms mostly depending on how long it takes to read the
EDID. The longer delays are likely about panel power sequencing.
IIRC, libgfxinit falls back to hardcoded default values if the
sequencer is unconfigured, while the GOP just leaves it like that.
Chromebooks often skip the configuration[1] in firmware and leave
it to the OS driver. Using wrong delays probably doesn't hurt on
a rare interactive boot. However, I guess doing this on regular
boots might not be the best idea.
Nico
[1] https://doc.coreboot.org/gfx/display-panel.html
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-leave@coreboot.org