From 259b63da8c5228f4994e9a02881427e85e81705d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:54:59 -0300 Subject: [PATCH 1/2] fix(rinv): recognize TEI, CDI and PSI IMM firmware prefixes The rinv firmware-inventory path detects a Lenovo IMM by matching the firmware build-ID prefix (yuoo, 1aoo, tcoo). Some IMM firmware families report a tei, cdi or psi prefix and were therefore not recognized as an IMM. Add them. Recovered from the unmerged lenovobuild branch (e50cf37, 201b2de). Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com> --- xCAT-server/lib/xcat/plugins/ipmi.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 7cd34129c..588dcdcfb 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -3361,7 +3361,7 @@ sub got_bmc_fw_info { my @returnd = (@{ $rsp->{data} }); my @a = ($fw_rev2); my $prefix = pack("C*", @returnd[ 0 .. 3 ]); - if ($prefix =~ /yuoo/i or $prefix =~ /1aoo/i or $prefix =~ /tcoo/i) { #we have an imm + if ($prefix =~ /yuoo/i or $prefix =~ /1aoo/i or $prefix =~ /tcoo/i or $prefix =~ /tei/i or $prefix =~ /cdi/i or $prefix =~ /psi/i) { #we have an imm $isanimm = 1; } $mprom = sprintf("%d.%s (%s)", $fw_rev1, decodebcd(\@a), getascii(@returnd)); From f86a0c377ce5fd72c655926c6d9a27a89f2abb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:55:16 -0300 Subject: [PATCH 2/2] fix(rvitals): treat energy code 0xc1 as 'not supported' The energy-manager (IEM) command handler treated response code 0xcb as the 'not present / not supported' signal. Some BMCs return 0xc1 for the same condition, which was left unhandled. Accept 0xc1 as well. Recovered from the unmerged lenovobuild branch (06d7097). --- xCAT-server/lib/xcat/plugins/ipmi.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 588dcdcfb..f4dbf437a 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -6186,7 +6186,7 @@ sub execute_iem_commands { sub executed_iem_command { my $rsp = $_[0]; my $sessdata = $_[1]; - if ($rsp->{code} == 0xcb) { + if ($rsp->{code} == 0xcb or $rsp->{code} == 0xc1) { $sessdata->{abortediem} = 1; $sessdata->{abortediemreason} = "Not Present"; $sessdata->{iemcallback}->($sessdata);