Skip to content

[pmon]: HLD: Enhance DPU Robustness in Smart Switch#2310

Open
vvolam wants to merge 4 commits into
sonic-net:masterfrom
vvolam:dpu_ras
Open

[pmon]: HLD: Enhance DPU Robustness in Smart Switch#2310
vvolam wants to merge 4 commits into
sonic-net:masterfrom
vvolam:dpu_ras

Conversation

@vvolam
Copy link
Copy Markdown
Contributor

@vvolam vvolam commented Apr 27, 2026

What I did

Add a High Level Design document for DPU failure scenarios on SmartSwitch from the PMON (Platform Monitor) perspective.

Why I did it

SmartSwitch DPU lifecycle management requires clear specification of failure detection, DB state tracking, and recovery actions performed by chassisd and other PMON sub-daemons. This HLD documents all failure and planned operation scenarios to guide implementation.

How I did it

Added doc/smart-switch/pmon/enhance-dpu-robustness.md covering:

  • DPU software failures: critical process restart, persistent failure, pmon/databasedpu crashes on NPU
  • DPU hardware failures: complete DPU down, power failure, PCIe failure
  • NPU/switch-level failures: kernel crash, memory exhaustion
  • Planned operations: graceful shutdown, cold reboot, full SmartSwitch reboot
  • New DB fields: ready_status, recovery_status, reset_count, last_down_time, last_ready_time in CHASSIS_STATE_DB
  • New feature flag: FEATURE|dpu-auto-recovery in CONFIG_DB
  • DPU recovery state machine: Mermaid diagram with state table
  • Timers and thresholds: configurable via platform.json
  • Race condition handling: concurrent operations on the same DPU

How to verify it

Review the HLD document for completeness and correctness of failure scenarios, DB state transitions, and recovery actions.

Repo PR Title / Link Status
sonic-platform-daemons [chassisd]: Add DPU recovery state machine and new DB fields PR State
sonic-buildimage [build]: Add dpu-auto-recovery feature to init_cfg.json.j2 PR State

Add High Level Design document covering DPU failure scenarios
for Smart Switch, including software failures, hardware failures, and
NPU/switch level failures.

Signed-off-by: Vasundhara Volam <vvolam@microsoft.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@vvolam vvolam changed the title [pmon]: Add Smart Switch DPU Reliability and Availability HLD [pmon]: Add Smart Switch Enhance DPU Robustness HLD Apr 27, 2026
DPU control plane, midplane, and data plane states are always
'down' during booting, never 'unknown'. Update terminology,
state machine table, and scenario summary accordingly.

Signed-off-by: Vasundhara Volam <vvolam@microsoft.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@vvolam vvolam changed the title [pmon]: Add Smart Switch Enhance DPU Robustness HLD [pmon]: HLD: Enhance DPU Robustness in Smart Switch Apr 29, 2026
…covery gating

- Replace the ambiguous two-timer model (60s auto-recovery + 180s power-cycle) with a single, clearly-named dpu_auto_recovery_timeout (60s). Update the timer table, state machine edge labels, and all DPU software/hardware failure scenarios to use the consistent name.

- Rename 'Critical process' subsections to 'Process' for accuracy; update TOC anchors and Scope wording accordingly.

- Add ManualIntervention state to the DPU recovery state machine and gate SWFailure/HW-failure transitions on the auto-recovery feature flag. Add a global note plus per-scenario 'When auto-recovery is disabled' bullets so the FEATURE|dpu-auto-recovery=disabled behavior is consistent across every failure scenario.

- Rework NPU Kernel Crash recovery: chassisd unconditionally power-cycles every admin-up DPU via the platform vendor path (power_down/pci_detach/power_up/pci_reattach) instead of using gNOI Reboot RPC against potentially unresponsive DPUs. Admin-down DPUs are left offline. Add reset_count row to the DB transition table with a note about chassisd-restart zeroing.

- Fix 'Table of Content' typo and add Existing/New DB entries sub-entries to the table of contents.

- Replace literal pipe inside backticks in the state table cell with HTML entity so the markdown table renders correctly on GitHub.

Signed-off-by: Vasundhara Volam <vvolam@microsoft.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

Drop the dpu_auto_recovery_timeout self-heal grace period. chassisd now initiates a DPU power-cycle as soon as it observes dpu_control_plane_state (or dpu_midplane_link_state) as down on its next 10s health poll, regardless of whether the failure is a transient process restart or a persistent crash-loop.

- Remove dpu_auto_recovery_timeout from the timer table; clarify chassisd health poll interval description to state immediate power-cycle on detection.

- Combine 'Process restart on DPU' and 'Process persistently down on DPU' into a single 'Process crash/restart on DPU' section since chassisd applies the same recovery path in both cases. Update TOC and DB transition table accordingly.

- State machine: keep SWFailure as a transient state on control-plane-down, branching directly into PowerCycle (auto-recovery enabled) or ManualIntervention (auto-recovery disabled) without any timer wait. HW-failure path goes directly from Ready to PowerCycle / ManualIntervention.

- Drop 'skipping dpu_auto_recovery_timeout' parentheticals from HW Failure / Power Failure / PCIe Failure scenarios. Update Scenario DB State Summary row for control plane restart to reflect the immediate power-cycle behavior.

Signed-off-by: Vasundhara Volam <vvolam@microsoft.com>
@mssonicbld
Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@vvolam vvolam marked this pull request as ready for review May 4, 2026 22:35
@vvolam vvolam requested a review from rameshraghupathy May 7, 2026 19:25
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.

2 participants