oxidecomputer / oxidecomputer/hubris
compute-sled sequencer: Provide a "reset the host" operation
@hawkw is already working on this.
Since Aug 11, 2025.
- Dominant language
- Rust
- Stars
- 3.6k
- Forks
- 239
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 23
Description
(This is one of the issues from #2178, and is the most urgent of that list w.r.t. shipping Reconfigurator-driven updates.)
Today if the host wants to reboot itself, it sends a single RequestReboot message to the host-sp-comms task. Internally, host-sp-comms handles this by asking the sequencer to go to A2, waiting for that transition, then once it sees it, setting a timer to put the host back in A0.
As a part of Reconfigurator-driven host OS updates, Nexus also wants to be able to issue host OS reboots to target sleds. control-plane-agent does not expose a single "reboot the host" operation akin to the one host-sp-comms provides, so there are a couple options to implement this:
- Send a "go to A2" message, sleep briefly, then send a "go to A0" message. (This is what
pilot sp cycledoes.) - Reset the SP.
Both of these have downsides: 1 means a Nexus can't reboot its own sled's host OS, because it will not be alive to send the "go to A0" message. 2 means we're unnecessarily resetting the SP just for the side effect of rebooting the host. 1 is significantly more disruptive to Reconfigurator updates, so currently we're doing 2.
Reimplementing host-sp-comms's logic in control-plane-agent doesn't seem great: in addition to the duplication, now we have the opportunity for dueling controllers (what if Nexus tries to reboot a host while it's already rebooting from an IPCC request?). Instead, can the sequencer provide a "reboot the host" operation that both host-sp-comms and control-plane-agent can use?
In terms of urgency: Reconfigurator is not blocked on this because it's using "reset the SP" in its place. But it'd be nice to swap that out for this in the R17/R18 timeframe.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.