Hello Intel,

TL;DR: I consider this spec and project an insult to the coreboot project.

It is ridiculous and a waste of everyone's time. You seem to completely
miss the point of, or ignore, numerous design decisions made in coreboot
for very good reasons. I'm not sure which is worse.

It seems that you are only able to think in terms of UEFI and ecosystem
partner requirements, in which case you should please take that nonsense
somewhere else.


Long response:

Banik, Subrata wrote:
> There is a new initiative to standardize the bootloader to payload interface.
> The initiative is called Universal Payload project and details can be found @
> https://github.com/universalpayload/Introduction
..
> An early draft of the spec can be found @
> https://universalpayload.github.io/documentation/spec/spec.html.
> 
> The Universal Payload community welcomes feedback and contributions.

In the draft spec you appropriate the payload concept and terminology
established by coreboot, and make it sound like payloads somehow originate
from your project.

While it is flattering that you recognize payloads as introduced by coreboot
(actually LinuxBIOS) long before EFI to be a good idea, you still need to be
honest in your communication if you want any chance at gaining a good
reputation for your project.

The draft spec consistently pushes EDK2 over all alternatives and it also
pushes as many UEFI-related and legacy concepts (HOBs, ACPI, etc.) as possible.

Such behavior is directly contrary to acceptable practice in open projects
like coreboot, in fact this tactic that you have chosen looks more like a
propaganda campaign in a political fight, it is utterly ridiculous to me.


The spec makes very broad statements such as this:

"Payloads are considered part of system firmware"

But that is not at all true for coreboot, where it is a conscious
design decision to have very strong separation between hardware init
and payload.

Payloads are explicitly *not* part of the system "firmware" - but are
an entity of their own, running after coreboot.


You confuse Linux as a payload with LinuxBoot in the draft spec. Those
flows are two distinct and very different methods to boot into Linux.


In the section "coreboot Payload Interface" you pose this question:

"How to fill the gap with current coreboot and payload requirement?"

The question refers to a "gap" and a "requirement" while the spec does
not say what those are.

Even though this question is completely unspecific, and thus does not
communicate anything useful, the draft spec does not fail to provide an
answer, which has the side effect of making the purpose of your project
absolutely clear:

"Use a library in coreboot to convert the new interface."

You want to add "new interface" (as in UEFI-based) stuff to coreboot
(and surely any other relevant firmware project) because you are obviously
trying to force a new payload interface onto coreboot, instead of adapting
to what coreboot already supports.



Further, the draft spec in the "Payload principle" section introduces
a campaign aimed at retarding firmware back to the BIOS era.

"Open: Should Payload return back to bootloader if payload fail?
Answer: No for first generation. No callbacks into payload launcher."

This explains that you intend to create a callback interface from the
payload to the hardware initialization in a *later* version of the spec,
doubling down on your serious mistake in EFI to couple all stages together
in complicated ways, and ignoring that a callback interface is something
that the coreboot project explicitly and purposely rejects, and does not
want to see as part of its payload interface.


Following that, the draft spec attacks coreboot's established security model,
aiming to move security relevant functionality from coreboot to your proposed
type of payload:

"Open: How to support SMM for booloader and Payload? Where is trust boundary.
Answer: SMM should be either part of the payload for present generation
Management Mode (MM) PI drivers, but longer term the EDKII PI independent
MM modules should be used."

Currently coreboot implements SMM, indeed with completely open source code
made available under a freedom-ensuring license, and because of the importance
of SMM on modern Intel platforms I think that this is actually a large reason
for coreboot's success.

Your draft spec clearly describes how you want to remove SMM from coreboot
and replace it with EDK2 MM drivers in the future. This is just ridiculous.



Then we come to the "Security" section of your draft spec:

"Today the payload is provisioned as part of the platform initialization code.
As such, the payload is protected and updated by the platform manufacturer (PM).
The payload should be covered by a digital signature generated by the PM.
The platform owner (PO) should not be able to update the payload independently
of the PM."

This is outrageous, but at least Intel shows its true colours here. We knew
from previous publications that Intel does not work in the interest of end
users (the platform owners, who *OWN* the platform, it's literally *THEIR*
property) but I guess it's nice to see you confirm this once again.

You should know that your intent of robbing platform owners of the right
to use their own property as they please will always have to face hostility
from community-driven projects. This is an obnoxious attempt to restrict
platform owners.



In the section "Payload Image Format" the draft spec proposes to invent
a payload image format which seems far less capable than ELF and is ridden
with UEFI baggage, instead of just using ELF (or something like SELF) which
has a far longer and stronger track record than the .efi file format.

"Sometimes, it might be challenges. For example, producing ELF format from
a UEFI FV image."

What exactly is that challenge? This blanket claim is not substantiated
in any way. What research has gone into this topic? What is the problem?

Maybe it can be solved, even if you can't do it. That's how community works.



In the "Payload Interfaces" section it seems that this whole project is
not thought through very well:

"Open: will payload be run in S3 path?

Suggest skipping payload."

If SMM is in your payload, then that payload will likely need to be
involved also during resume.



The rest of the draft spec mostly harps on about various UEFI or UEFI-derived
data structures. I am not interested.


Change this project idea of yours right now. Learn the coreboot design
and learn how to work with it, instead of trying to push UEFI concepts
and UEFI design onto coreboot.

If you choose to continue with this idea I don't think that you will
have many enthousiastic supporters, unless of course you force them..


Best regards

//Peter
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to