diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2018-11-26 15:03:52 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-11-27 21:12:38 -0600 |
commit | db6829f7221994df5d546d65f31619dbac37842d (patch) | |
tree | e2e9f3a39a9d038f1b3ebf383ac95c51a9638751 /src/usr/ipmiext | |
parent | 8e5dda92903e105c62f52390b35d3e335d55f532 (diff) | |
download | talos-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.C | 4 |
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); } |