From ed4469b3b0ccbd1daf949b969948d3e640080594 Mon Sep 17 00:00:00 2001 From: Patrick Lundgren Date: Fri, 18 Mar 2016 14:07:27 -0400 Subject: [PATCH 1/2] rflash will now check for " 00" BMC response to raw command suggested by Uma Yadlapati. Removed sleep workaround --- xCAT-server/lib/xcat/plugins/ipmi.pm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 626b24095..8f14fdbbe 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -1603,14 +1603,15 @@ sub check_bmc_status_with_ipmitool { my $interval = shift; my $retry = shift; my $count = 0; - my $cmd = $pre_cmd." power status"; + my $bmc_response = 0; + my $cmd = $pre_cmd." raw 0x3a 0x0a"; while ($count < $retry) { - xCAT::Utils->runcmd($cmd, -1); - if ($::RUNCMD_RC != 0) { - sleep($interval); + $bmc_response = xCAT::Utils->runcmd($cmd, -1); + if ($bmc_response =~ /00/) { + return 1; } else { - return 1; + sleep($interval); } $count++; } @@ -1674,7 +1675,6 @@ sub do_firmware_update { return -1; } #check reset status - sleep(10); unless (check_bmc_status_with_ipmitool($pre_cmd, 5, 12)) { xCAT::SvrUtils::sendmsg ([1,"Timeout to check the bmc status"], $callback,$sessdata->{node},%allerrornodes); @@ -1692,10 +1692,6 @@ sub do_firmware_update { # NOTE(chenglch) some firmware may not stable enough, it can handle the ipmi session # request, but failed to upgrade, add sleep function as a work around here to avoid of # error. - my $rflash_delay = 120; - my $delay_config = xCAT::TableUtils->get_site_attribute("rflash_delay"); - $rflash_delay = $delay_config if defined($delay_config) and $delay_config =~ /^\d+$/; - sleep($rflash_delay) if $rflash_delay != 0; $cmd = $pre_cmd." -z 30000 hpm upgrade $hpm_file force"; $output = xCAT::Utils->runcmd($cmd, -1); From bbe6b6b35c046183f30b1a27523475436e68705e Mon Sep 17 00:00:00 2001 From: Patrick Lundgren Date: Mon, 21 Mar 2016 14:54:48 -0400 Subject: [PATCH 2/2] Updated relevant comments in ipmi.pm. Removed rflash_delay description from Schema.pm and documentation/man pages --- .../admin-guides/manage_clusters/ppc64le/management.rst | 8 -------- .../source/guides/admin-guides/references/man5/site.5.rst | 4 ---- perl-xCAT/xCAT/Schema.pm | 3 --- xCAT-server/lib/xcat/plugins/ipmi.pm | 7 +++---- 4 files changed, 3 insertions(+), 19 deletions(-) diff --git a/docs/source/guides/admin-guides/manage_clusters/ppc64le/management.rst b/docs/source/guides/admin-guides/manage_clusters/ppc64le/management.rst index 5961b5178..85f2c22ec 100644 --- a/docs/source/guides/admin-guides/manage_clusters/ppc64le/management.rst +++ b/docs/source/guides/admin-guides/manage_clusters/ppc64le/management.rst @@ -108,16 +108,8 @@ Check firmware version of the node and the HPM file: :: Update node firmware to the version of the HPM file -**ATTENTION** - -* Currently rflash is not stable enough to select accurate time before - upgrading. A ``rflash_delay`` attribute can be set in site table to adjust the - wait time before upgrading. We suggest setting this value to 70 which means - wait 70 secondes after BMC reset cold. - :: - chdef -t site clustersite rflash_delay=70 rflash cn1 /firmware/8335_810.1543.20151021b_update.hpm Configures Nodes' Service Processors diff --git a/docs/source/guides/admin-guides/references/man5/site.5.rst b/docs/source/guides/admin-guides/references/man5/site.5.rst index 1fb1aeeda..e9a20a4e6 100644 --- a/docs/source/guides/admin-guides/references/man5/site.5.rst +++ b/docs/source/guides/admin-guides/references/man5/site.5.rst @@ -235,10 +235,6 @@ site Attributes: snmpc: The snmp community string that xcat should use when communicating with the switches. - rflash_delay: Only for rflash command to upgrade firmware on OpenPOWER servers. - This attribute is delay time to wait for the firmware initialization - after cold reset. Default value is 120 in seconds. If set to 0, no delay. - --------------------------- INSTALL/DEPLOYMENT ATTRIBUTES --------------------------- diff --git a/perl-xCAT/xCAT/Schema.pm b/perl-xCAT/xCAT/Schema.pm index 4f44c07f2..166909e8d 100755 --- a/perl-xCAT/xCAT/Schema.pm +++ b/perl-xCAT/xCAT/Schema.pm @@ -1070,9 +1070,6 @@ site => { " through HMC. Default is 0.\n\n". " snmpc: The snmp community string that xcat should use when communicating with the\n". " switches.\n\n". - " rflash_delay: Only for rflash command to upgrade firmware on OpenPOWER servers.\n". - " This attribute is delay time to wait for the firmware initialization\n". - " after cold reset. Default value is 120 in seconds. If set to 0, no delay.\n\n". " ---------------------------\n". "INSTALL/DEPLOYMENT ATTRIBUTES\n". " ---------------------------\n". diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 8f14fdbbe..cb9603e13 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -1605,6 +1605,8 @@ sub check_bmc_status_with_ipmitool { my $count = 0; my $bmc_response = 0; my $cmd = $pre_cmd." raw 0x3a 0x0a"; + # BMC response of " c0" means BMC still running IPL + # BMC response of " 00" means ready to flash while ($count < $retry) { $bmc_response = xCAT::Utils->runcmd($cmd, -1); if ($bmc_response =~ /00/) { @@ -1675,7 +1677,7 @@ sub do_firmware_update { return -1; } #check reset status - unless (check_bmc_status_with_ipmitool($pre_cmd, 5, 12)) { + unless (check_bmc_status_with_ipmitool($pre_cmd, 5, 24)) { xCAT::SvrUtils::sendmsg ([1,"Timeout to check the bmc status"], $callback,$sessdata->{node},%allerrornodes); return -1; @@ -1689,9 +1691,6 @@ sub do_firmware_update { return -1; } # step 4 upgrade firmware - # NOTE(chenglch) some firmware may not stable enough, it can handle the ipmi session - # request, but failed to upgrade, add sleep function as a work around here to avoid of - # error. $cmd = $pre_cmd." -z 30000 hpm upgrade $hpm_file force"; $output = xCAT::Utils->runcmd($cmd, -1);