Conversation
`production` and `custom: tofino_asic` deployments resolve to `Auto` without a startup probe since the monitor takes care of the ASIC. Without anything for the physical ASIC table to find, removing that and `SwitchProbe` as well. At this point only `detect_switch_hardware` only looks for SoftNPU devices. Worth noting this walks back the "identical shape" part of @jmpesp's comment on #11286. So there's still asymmetry but only one function for startup detection. Hopefully a good compromise.
If a device stays busy, can't be opened, or answers with something other than Rversion, it can't be ruled out as that could let a scrimlet come up as a plain sled. Only a different 9P version string is a negative answer. Also added better comments on vio9p reads, and split the I/O error by operation.
Start pumpkind when a physical ASIC is present and the host is an Oxide sled.
The machine flag selects a sled-agent config that names its switch. The switch flag selects the zone package. Without this check a mismatch would boot a zone the config can't drive.
|
@jmpesp tagging you here primarily for 4f181ec which walks back some of the symmetry in detection. Still one function for startup detection though, so hopefully this works? The change was made based on @jgallagher's comment here: #11237 (comment) |
Deployment becomes a role and a switch, built from the config table by `try_from`. This will reject combinations sled-agent couldn't resolve (e.g. scrimlet with a detected backend, auto with a fixed one). Each method is a match on the switch.
`detect_switch_hardware` could only ever find a SoftNPU once Tofino went back to hardware monitor detection. Log before each open of the 9p device to bracket slow handshakes.
The machine's sled-agent config names its switch, which made the switch flag redundant and capable of breaking a built. Presets and target files that still spell out a switch are detected against the machine now, and the switch flag is dropped.
|
I merged main in due to the CI issues and the time this PR and its parent have been open. Tests ran successfully on voxel and omicron-simulated, exercising both SoftNPU paths. Specifically, standalone used |
|
@jgallagher Tested on dublin, came up exactly as expected: So the gist path worked, and no startup probe had to happen. Good stuff! |
Opens the 9p device non-blocking, and fails with Timeout when Tversion goes unanswered. Since vio9p doesn't have chpoll, the reply is polled by read. Also now checks the Rversion size field, drops an unused error, sources Pumpkind detect error, simplifies a config test, and describes deployment kinds better in docs.
Series of smallish commits to address @jgallagher's comments on #11237
Tested on voxel (with and without SP/RoT emu) and will be tested on a racklette after CI.