bf3 isolated mode fixes - #16
Draft
fantdl wants to merge 3 commits into
Draft
Conversation
|
Thanks for your PR,
To skip the vendors CIs, Maintainers can use one of:
|
Broly Security ScanNote ✅ Clean scan Note Re-scan this PR anytime with
|
fantdl
marked this pull request as draft
August 5, 2026 16:20
fantdl
force-pushed
the
bf3-isolated-mode-fixes
branch
from
August 14, 2026 15:36
0f8a07d to
a164060
Compare
Default preserves upstream behavior (deselected NICs get firmware VF settings staged to zero). Enabling mellanoxSkipFirmwareResetOnDeselect leaves firmware untouched, for substrates where NIC firmware is managed externally (DPUs).
Only increase TotalVfs to satisfy policy and cancel staged reductions. Explicit numVfs=0 policies still disable SR-IOV.
Detect managed VF changes without treating externally owned PF settings as drift.
fantdl
force-pushed
the
bf3-isolated-mode-fixes
branch
from
August 16, 2026 16:34
a164060 to
ee7a0eb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
mellanox: gate firmware reset for deselected NICs
Preserve firmware VF settings by default when a NIC is removed from policy. Restore the previous behavior with the mellanoxFirmwareResetOnDeselect feature gate.
Why: when a NIC leaves all policies (node deselected, policy deleted), the plugin staged
NUM_OF_VFS=0in firmware without a reboot. The staged value then applies at an arbitrary future reset - observed on a BF3 node as NICs coming up with zero VF capacity after an unrelated reboot. On BF3 isolated-mode substrates firmware is provider-owned and the write fails outright, turning this path into a sync-error loop. Firmware VF capacity is only a ceiling; leaving it in place after deselection has no functional cost.mellanox: preserve firmware VF capacity
Only increase TotalVfs to satisfy policy and cancel staged reductions. Explicit numVfs=0 policies still disable SR-IOV.
Why: the plugin aligned firmware
NUM_OF_VFSexactly to the policy's numVfs, including downward. Reproduced on a BF3 host: a policy with numVfs=4 against firmware 8 staged a reduction and auto-rebooted the node; on hardware where a warm reboot does not reset the card the staged value never applies, so every boot re-staged and re-rebooted - an unbounded reboot loop broken only by deleting the policy. Reducing the firmware ceiling to match one policy is never functionally required.generic: reconcile VF drift on externally managed PFs
Detect managed VF changes without treating externally owned PF settings as drift.
Why: on BF3 isolated-mode hosts all PFs run
externallyManaged: true(the host owns VF creation and PF config), and these interfaces were excluded from status-change detection entirely. Observed: VFs recreated out of band stayed bound to the default kernel driver instead of vfio-pci while the nodestate reported Succeeded - recoverable only by restarting the config daemon. Now driver drift triggers reconcile, and missing VFs also trigger it so validation surfaces a Failed status instead of silently running under capacity; settings the operator does not own on such PFs (extra VFs, PF MTU) are not treated as drift, to avoid reconcile loops.