Skip to content

Initial draft of OCP Global Demo Proposal. - #456

Open
CourtneyDrant wants to merge 1 commit into
OpenPRoT:ocp-global-demo-wipfrom
CourtneyDrant:ocp-global-demo-wip
Open

CourtneyDrant wants to merge 1 commit into
OpenPRoT:ocp-global-demo-wipfrom
CourtneyDrant:ocp-global-demo-wip

Conversation

@CourtneyDrant

Copy link
Copy Markdown
Contributor

No description provided.

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor
pr456-demo-flow Looking at the diagram, how can the BMC be informed about an invalid image when it is not booted yet?

chrysh

This comment was marked as duplicate.

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

How does the BMC signal to the eRoT a successfull boot? How do we distinguish it from a hung BMC?

What happens on failure?

@FerralCoder

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

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.
If we do 12, then 11: Compare the staged digest against active B digest and erase staging area if disgests are equal, or keep a separate staging applied to slot B marker.

Or maybe even better: Erase staging area after successful boot?

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Small issues:

  • OpenPRoT: Fix spelling
  • AST2700 or AST2070?
  • Is ActivatePendingComponentImage a PLDM T5 command? I assume the black lines are PLDM commands?
  • Is there a timeout between tell BMC to shut down and pulling the power? @FerralCoder

CAD: Will fix. ActivatePendingComponentImage is a T5 Command used while FSM is "IDLE" for FW activation without Component Image Transfer.

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

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")

@FerralCoder

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

It looks like in case of image bad, we still end up in good update completed after the BMC boot completes.

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Maybe the diagram should start by the BMC writing the new firmware image into the SPI?

@chrysh

chrysh commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Should we also add Timeouts into this sequence diagram, e.g. boot timeout?

@rusty1968
rusty1968 requested a review from gmandyam September 3, 2026 16:19
participant OpenProt as OpenProt
participant fwspi as BMC SPI bus (fwspi)

BMC->>OpenProt: GetFirmwareParameters

@rusty1968 rusty1968 Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, it would be the update agent on BMC that needs to know how to update the staging area and coordinate the PLDM flow alongside that. Some external agent would provide the image to the OpenBMC update image, but we don't care about that part.

So yes, we need to show the update agent performing these steps either before or during the PLDM steps.

@rusty1968

Copy link
Copy Markdown
Collaborator

@CourtneyDrant , I have proposed some changes to the flow as a PR to your fork.

Comment thread docs/demo-proposal-flow.md
Comment thread docs/demo-proposal-flow.md
Comment thread docs/demo-proposal-flow.md
Comment thread docs/demo-proposal-flow.md
participant OpenProt as OpenProt
participant fwspi as BMC SPI bus (fwspi)

BMC->>OpenProt: GetFirmwareParameters

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenPRoT must persist the outcome of the verification process across the power cycle. UA will poll for it later when it comes back up.

@FerralCoder FerralCoder Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some breadcrumbs should be put in place to help the system recover properly in the event of a power failure, but in the normal case, the external PRoT itself would not be power cycled here, just the BMC being updated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@FerralCoder Maybe @rusty1968 is referring to the self-update case?

Comment thread docs/demo-proposal-flow.md
@ramabisa1

Copy link
Copy Markdown

ActivatePendingComponentImage should be sent only when FD or FDP is in the IDLE state. From your proposal, do you think FD (PRoT) is in the IDLE state when ActivatePendingComponentImage command is issued from BMC?

@CourtneyDrant

Copy link
Copy Markdown
Contributor Author

ActivatePendingComponentImage should be sent only when FD or FDP is in the IDLE state. From your proposal, do you think FD (PRoT) is in the IDLE state when ActivatePendingComponentImage command is issued from BMC?

Yes, the FD is in Idle until it receives a RequestUpdate. In this flow, there are no RequestUpdates. If in the future we want to support RequestUpdate and ActivatePendingComponentImage, we would deny the ActivatePending if already in an RequestUpdate flow. The UA would then need to retry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants