Skip to content

fix(ipmi): read the SDR when the BMC grants an unadvertised reservation - #8000

Open
viniciusferrao wants to merge 4 commits into
xcat2:masterfrom
VersatusHPC:fix/ipmi-sdr-reservation
Open

viniciusferrao wants to merge 4 commits into
xcat2:masterfrom
VersatusHPC:fix/ipmi-sdr-reservation

Conversation

@viniciusferrao

@viniciusferrao viniciusferrao commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

rinv, rvitals and reventlog stop with "SDR reservation unsupported." when Get SDR Repository Info leaves the reservation bit clear. An OpenBMC build clears that bit but grants Reserve SDR Repository, and ipmitool reads its SDR.

Send Reserve SDR Repository in every case. When the bit is clear and the BMC rejects the command as invalid, the error stays "SDR reservation unsupported." Other refusals report their completion code.

There is also a fix for the errors of the device ID and SDR read. Seven of them were passed to sendoutput as an array reference, which it takes as its return code, so the error was dropped. The other five named the node BADCODE. They now go through sendmsg against the node, and a refused reservation stops the read instead of sending Get SDR without a reservation ID.

Thanks-to: SpacemiT (riscv64 test hardware)

When Get Device ID or a step of the SDR read failed, the plugin reported the
error through sendoutput. Seven of these calls passed an array reference,
which sendoutput takes as its return code, so the error was dropped. The other
five named the node BADCODE. A refused SDR reservation also went on to read
records with no reservation ID.

Report these errors with sendmsg against the node, as the rest of the plugin
does, and stop after a refused reservation.
Each step of the device ID and SDR read reports a timeout as an error of the
node and stops, and a refused SDR reservation sends no Get SDR request.
rinv, rvitals and reventlog stopped with "SDR reservation unsupported." when
Get SDR Repository Info did not set the reservation bit. An OpenBMC build
clears that bit but grants Reserve SDR Repository, so these commands failed on
a server that ipmitool reads.

Send Reserve SDR Repository in every case. When the bit is clear and the BMC
rejects the command as invalid, the error stays "SDR reservation
unsupported." Other refusals report their completion code.
Replay the Get SDR Repository Info reply of an OpenBMC build that clears the
reservation bit. The read asks for the reservation and uses the ID it gets.
An invalid command refusal still reports "SDR reservation unsupported."
against the node, a busy or privilege refusal reports its completion code,
and a BMC that sets the bit is asked as before.

This branch has not been deployed

No deployments
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.

1 participant