summaryrefslogtreecommitdiffstats
path: root/src/usr/ipmiext
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2018-11-26 15:03:52 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-11-27 21:12:38 -0600
commitdb6829f7221994df5d546d65f31619dbac37842d (patch)
treee2e9f3a39a9d038f1b3ebf383ac95c51a9638751 /src/usr/ipmiext
parent8e5dda92903e105c62f52390b35d3e335d55f532 (diff)
downloadtalos-hostboot-db6829f7221994df5d546d65f31619dbac37842d.tar.gz
talos-hostboot-db6829f7221994df5d546d65f31619dbac37842d.zip
Fix shutdown race condition and task start error in IPMI SEL library
- Load libipmiext.so with START_TASK option, in order to notify error logger that errors can now propagate down to BMC via IPMI. Previously and erroneously, the library was loaded with the INIT_TASK option, preventing any SELs from flowing down to BMC. - Force IpmiSEL constructor to run when libipmiext.so is loaded, in order to register the shutdown handler with the init service. Without this, it's possible for the IpmiSEL constructor to run during shutdown itself, which down not handle new shutdown handler registrations properly. Change-Id: If333a8a6e1ce1ad8ca405dc2bb80fca3905ae674 CQ: SW451419 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69094 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Marshall J. Wilks <mjwilks@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/ipmiext')
-rw-r--r--src/usr/ipmiext/ipmisel.C4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/usr/ipmiext/ipmisel.C b/src/usr/ipmiext/ipmisel.C
index dafcabca0..329baec41 100644
--- a/src/usr/ipmiext/ipmisel.C
+++ b/src/usr/ipmiext/ipmisel.C
@@ -599,6 +599,10 @@ void IpmiSEL::execute(void)
*/
void IpmiSEL::errlEnable(errlHndl_t& o_errl)
{
+ // Force constructor to run immediately in order to register the shutdown
+ // handler.
+ Singleton<IpmiSEL>::instance();
+
// call ErrlManager function - tell him that IPMI is ready!
ERRORLOG::ErrlManager::errlResourceReady(ERRORLOG::IPMI);
}
OpenPOWER on IntegriCloud