Code to blame in 'lib/ipmi_chassis.c':
case 4:
\{
printf\( " Boot Info Acknowledge :\n"\);
if\(\(rsp->data\[3\]&0x1f\) \!= 0\)
\{
if\(\(rsp->data\[3\]&0x10\) == 0x10\)
printf\(" - OEM has handled boot info\n"\);
if\(\(rsp->data\[3\]&0x08\) == 0x08\)
printf\(" - SMS has handled boot info\n"\);
if\(\(rsp->data\[3\]&0x04\) == 0x04\)
printf\(" - OS // service partition has handled boot info\n"\);
if\(\(rsp->data\[3\]&0x02\) == 0x02\)
printf\(" - OS Loader has handled boot info\n"\);
if\(\(rsp->data\[3\]&0x01\) == 0x01\)
printf\(" - BIOS/POST has handled boot info\n"\);
\}
else
\{
printf\(" No flag set\n"\);
\}
\}
IPMI v2 specification p.391 in PDF:
\[7\] - reserved. Write as 1b. Ignore on read.
\[6\] - reserved. Write as 1b. Ignore on read.
\[5\] - reserved. Write as 1b. Ignore on read.
\[4\] - 0b = OEM has handled boot info.
\[3\] - 0b = SMS has handled boot info.
\[2\] - 0b = OS / service partition has handled boot info.
\[1\] - 0b = OS Loader has handled boot info.
\[0\] - 0b = BIOS/POST has handled boot info.
Code in 'lib/ipmi_chassis.c' would be true if ``rsp->data[3]'' got inverted. But it doesn't, so the code in 'lib/ipmi_chassis.c' is invalid/doesn't work.
It also would be worth of checking the whole function and do a re-make/re-write.