-
Notifications
You must be signed in to change notification settings - Fork 41
RFC: Boot Orchestration Component #1013
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
d8f1790 to
6c56b0a
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
6c56b0a to
609504f
Compare
os-d
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The biggest part of BDS that I did not see enumerated in this RFC is the connect management, driving binding protocols, etc. That requires careful thought as it is another form of driver dispatch that is unique to the BDS phase.
I think that before we move this forward, we need to include what that story is.
ec79517 to
db8fc97
Compare
|
i've changed the design quite a bit, added more goals and requirements to further constrain the design to be limited to the most fundamental Patina components that can achieve a successful boot |
|
|
||
| To discover bootable media, the Boot Manager connects storage device controllers (via `ConnectController()`) to | ||
| enable file system drivers and scan for boot loaders. BootOptionDiscovery accepts connection strategies as | ||
| configuration, allowing platforms to customize which devices get connected while using the shared ProtocolServices |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For a first implementation, I think it is fine to leave the connect controller flow to the protocol, but if we look forward to how Patina components would be implemented that interact with the connect controller flow, we wouldn't want a protocol, we'd want a service and it may look very different from the protocol.
It's fine not to define that here, if that is not in scope initially, but I would at least note that that work is deferred to a future RFC and this RFC does not support native Patina components interacting with the connect controller flow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good point. I've added an explicit "Future Work: Connect Controller Service" section noting that this is deferred and native Patina components cannot participate in the connect controller flow in this RFC.
| ## Goals | ||
|
|
||
| 1. Provide UEFI spec compliant boot functionality | ||
| 2. Enable platforms to boot with zero custom code using reference components |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This statement may read as a platform does not need any custom code to boot, i.e. just taken patina as is and you are good, which is not what you intend. Consider rewriting this as something like:
Enable platforms to use a common boot manager without customization
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Goal #2 reworded like this:
- Enable platforms to use a common boot manager without customization
d488f8b to
380ee34
Compare
260e43c to
30ec240
Compare
30ec240 to
43371f5
Compare
43371f5 to
7a68005
Compare
7a68005 to
b90bc0c
Compare
b90bc0c to
411136c
Compare
Description
This RFC proposes modular components for UEFI spec compliant boot functionality in Patina firmware. Platforms can
use reference implementations for console initialization, boot option discovery, and boot orchestration,
or implement custom boot flows using the provided library functions.
How This Was Tested
N/A
Integration Instructions
N/A