oxidecomputer / oxidecomputer/hubris

want slot-specific context for failures to set the component active slot

Open
#2,338 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
3.6k
Forks
239
Avg merge
1d 12h
Merged PRs (30d)
23

Description

While trying to set an active slot on a Cosmo I got the following error:

$ /usr/bin/faux-mgs --interface dut0 --discovery-addr [fe80::aa40:25ff:fe04:1501]:11111 component-active-slot host-boot-flash -s 0 --persist
Dec 31 14:37:34.015 INFO creating SP handle on interface dut0, component: faux-mgs
Dec 31 14:37:34.016 INFO initial discovery complete, addr: [fe80::aa40:25ff:fe04:1501%3]:11111, interface: dut0, socket: control-plane-agent, component: faux-mgs
Error: Error response from SP: update currently unavailable (slot busy)

Ultimately, the error message is reasonable. The system is in a boot loop and therefore the host "owns" the SPI flash (though this concept makes less sense in terms of our eSPI implementation). However, while I eventually figured that out, the fact that the error was "slot busy" took me quite some time to go there. At first I thought maybe there was some pending update or something else going on and it took me a while to realize it was because we were in this boot loop, especially as several others succeeded. I realize this requires changes to the faux-mgs protocol, but a more specific error or message for specific slots would be helpful here. If this had been something about the slot being muxed away that would have made it much more obvious. I also assume that there are going to be other, slot-specific failure modes that will occur where additional information would be useful.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the faux-mgs protocol path for the component-active-slot command and trace how the “slot busy” response is produced. Done means failures identify the affected slot and provide actionable context for cases such as a boot loop or a slot being muxed away.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
embedded-iot
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.