Initial draft of OCP Global Demo Proposal. - #456
Conversation
|
How does the BMC signal to the eRoT a successfull boot? How do we distinguish it from a hung BMC? What happens on failure? |
|
Maybe do 12 (Mark B as active) first, then 11 (Erase staging area). Otherwise, in case there is a power outage between 11 and 12, we would need to retransfer the firmware over PLDM. Or maybe even better: Erase staging area after successful boot? |
|
Small issues:
CAD: Will fix. ActivatePendingComponentImage is a T5 Command used while FSM is "IDLE" for FW activation without Component Image Transfer. |
|
Why do we do this "Update inactive slot A to match slot B"? Don't we want to keep a "previously known-good firmware" for rollback? What if the BMC turns out to have a broken daemon or service or so? ("requires mastership and ANOTHER BMC power cycle") |
|
It looks like in case of image bad, we still end up in good update completed after the BMC boot completes. |
|
Maybe the diagram should start by the BMC writing the new firmware image into the SPI? |
|
Should we also add Timeouts into this sequence diagram, e.g. boot timeout? |
| participant OpenProt as OpenProt | ||
| participant fwspi as BMC SPI bus (fwspi) | ||
|
|
||
| BMC->>OpenProt: GetFirmwareParameters |
There was a problem hiding this comment.
Add the trigger event to the flow - The flow diagram never shows the event triggering the flow - an external agent writing the flash image to the staging area - The first documented event is GetFirmwareParameters, and by the time OpenPRoT does "Verify BMC image in staging area," the diagram just assumes the image is already sitting there.
|
@CourtneyDrant , I have proposed some changes to the flow as a PR to your fork. |
| Use OpenProt as Firmware Device to execute extern staging flow listed below. | ||
| Update agent will send GetFirmParameters for Inventory and ActivatePendingComponentImage to signal to OpenProt to begin this flow. | ||
|
|
||
| sequenceDiagram |
There was a problem hiding this comment.
There should be more actors here - for the demo there should be a human trigger - the demonstrator opens a webui with a file picker and an upload firmware button.
| OpenProt->>OpenProt: Erase staging area | ||
| OpenProt->>OpenProt: Mark "B" partition as active | ||
| else Image bad | ||
| OpenProt-->>BMC: Activation failed (image invalid) |
There was a problem hiding this comment.
OpenProt tries to send "Activation failed (image invalid)" to a BMC that has no power.
| BMC->>OpenProt: ActivatePendingComponentImage(AST2070 Component Identifier) | ||
| OpenProt-->>BMC: EstimatedTimeForActivation | ||
|
|
||
| Note over OpenProt,BMC: OpenProt disables access by BMC (notify BMC to shutdown, then pull power) |
There was a problem hiding this comment.
What is the transport for this notification? Currently openBMC and the AST1060 communicate via a software-based mailbox over the I2C. What is the
There was a problem hiding this comment.
ActivatePendingComponentImage is the notification.
| Propsal: | ||
| Build a small Update Agent leverage pldm-lib/pldm-common to run ontop of OpenBMC on AST2700. | ||
| Use OpenProt as Firmware Device to execute extern staging flow listed below. | ||
| Update agent will send GetFirmParameters for Inventory and ActivatePendingComponentImage to signal to OpenProt to begin this flow. |
There was a problem hiding this comment.
Let's state explicitly that ActivatePendingComponentImage is not a DSP0267 command. The standard PLDM T5 activation command is ActivateFirmware (opcode 0x1a).
| participant OpenProt as OpenProt | ||
| participant fwspi as BMC SPI bus (fwspi) | ||
|
|
||
| BMC->>OpenProt: GetFirmwareParameters |
There was a problem hiding this comment.
We need to add an explicit causal link between the staging firmware and the GetFirmwareParameters command.
| Note over OpenProt,BMC: OpenProt disables access by BMC (notify BMC to shutdown, then pull power) | ||
|
|
||
| OpenProt->>fwspi: Claim mastership | ||
| OpenProt->>OpenProt: Verify BMC image in staging area |
There was a problem hiding this comment.
OpenPRoT must persist the outcome of the verification process across the power cycle. UA will poll for it later when it comes back up.
No description provided.