diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2013-10-12 14:44:20 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-10-15 15:56:58 -0500 |
commit | 35221ecd39216bf311fc0e497af57aea33b18d45 (patch) | |
tree | bc8b96cdad7f0b9b06ce9c1852c2cba74cb7723a /src/usr/pnor | |
parent | 7e9f61fd1751f40af0a5eabb1cb0fac7a3913666 (diff) | |
download | talos-hostboot-35221ecd39216bf311fc0e497af57aea33b18d45.tar.gz talos-hostboot-35221ecd39216bf311fc0e497af57aea33b18d45.zip |
Fix race conditions in initservice shutdown path.
Change-Id: I0da3c2050d5d64d20975031e093dd10978684e2b
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6663
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: Andrea Y. Ma <ayma@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/pnor')
-rw-r--r-- | src/usr/pnor/pnordd.C | 4 | ||||
-rw-r--r-- | src/usr/pnor/pnorrp.C | 15 |
2 files changed, 3 insertions, 16 deletions
diff --git a/src/usr/pnor/pnordd.C b/src/usr/pnor/pnordd.C index 69ca4baf9..d05e66a28 100644 --- a/src/usr/pnor/pnordd.C +++ b/src/usr/pnor/pnordd.C @@ -600,7 +600,7 @@ errlHndl_t PnorDD::writeRegSfc(SfcRange i_range, uint32_t i_data) { errlHndl_t l_err = NULL; - uint32_t lpc_addr; + uint32_t lpc_addr = 0; switch(i_range) { @@ -646,7 +646,7 @@ errlHndl_t PnorDD::readRegSfc(SfcRange i_range, uint32_t& o_data) { errlHndl_t l_err = NULL; - uint32_t lpc_addr; + uint32_t lpc_addr = 0; switch(i_range) { diff --git a/src/usr/pnor/pnorrp.C b/src/usr/pnor/pnorrp.C index c13f4a306..dd782058f 100644 --- a/src/usr/pnor/pnorrp.C +++ b/src/usr/pnor/pnorrp.C @@ -142,19 +142,6 @@ void* wait_for_message( void* unused ) return NULL; } -/** - * @brief Static function wrapper to call doShutdown - * to avoid deadlock in main task - */ -void* pnor_shutdown( void* unused ) -{ - TRACFCOMP(g_trac_pnor, "pnor_shutdown> " ); - printk( "PNOR errors causing shutdown\n" ); - INITSERVICE::doShutdown( PNOR::RC_ECC_UE ); - return NULL; -} - - /******************** Private/Protected Methods ********************/ @@ -727,7 +714,7 @@ errlHndl_t PnorRP::readFromDevice( uint64_t i_offset, // that happen during shutdown. iv_shutdownUE = true; o_fatalError = true; - task_create( pnor_shutdown, NULL ); + INITSERVICE::doShutdown( PNOR::RC_ECC_UE, true ); } // found an error so we need to fix something else if( ecc_stat != PNOR::ECC::CLEAN ) |