diff options
| author | Prem Shanker Jha <premjha2@in.ibm.com> | 2017-01-31 23:16:59 -0600 |
|---|---|---|
| committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2017-10-23 17:05:03 -0500 |
| commit | 7e05b67cdc1ef938fc2418b1d1143bfccaaf22c8 (patch) | |
| tree | 78aae01d44098577eb4ce4435b3e07ffd77eaad4 /import/chips/p9/procedures/utils/stopreg | |
| parent | d74b695609799bab144f8e38936e8ee2d5a3bafc (diff) | |
| download | talos-hcode-7e05b67cdc1ef938fc2418b1d1143bfccaaf22c8.tar.gz talos-hcode-7e05b67cdc1ef938fc2418b1d1143bfccaaf22c8.zip | |
PM: Added changes in SCOM restore region.
- Added BLR as first instruction in Self-Restore region
- Modified handling of STOP API SCOM operation RESET.
Change-Id: I84096355b520f4c9cae98860ccf9ebf1c56229e4
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/35724
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: AMIT KUMAR <akumar3@us.ibm.com>
Dev-Ready: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'import/chips/p9/procedures/utils/stopreg')
| -rwxr-xr-x | import/chips/p9/procedures/utils/stopreg/p9_stop_api.C | 15 | ||||
| -rwxr-xr-x | import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H | 3 |
2 files changed, 12 insertions, 6 deletions
diff --git a/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C b/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C index ba5547f9..0b52addc 100755 --- a/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C +++ b/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C @@ -526,7 +526,8 @@ StopReturnCode_t p9_stop_save_cpureg( void* const i_pImage, &(chipHomer->coreThreadRestore[coreId][threadId].coreArea[0]); } - if( SWIZZLE_4_BYTE(ATTN_OPCODE) == *(uint32_t*)pThreadLocation ) + if( ( SWIZZLE_4_BYTE(BLR_INST) == *(uint32_t*)pThreadLocation ) || + ( SWIZZLE_4_BYTE(ATTN_OPCODE) == *(uint32_t*) pThreadLocation ) ) { // table for given core id doesn't exit. It needs to be // defined. @@ -864,6 +865,7 @@ StopReturnCode_t p9_stop_save_scom( void* const i_pImage, uint32_t swizzleAttn = SWIZZLE_4_BYTE(ATTN_OPCODE); uint32_t swizzleEntry = SWIZZLE_4_BYTE(SCOM_ENTRY_START); uint32_t index = 0; + uint32_t swizzleBlr = SWIZZLE_4_BYTE(BLR_INST); for( index = 0; index < entryLimit; ++index ) { @@ -876,8 +878,8 @@ StopReturnCode_t p9_stop_save_scom( void* const i_pImage, } if( (( nopInst == entrySwzAddress ) || - ( swizzleAttn == entrySwzAddress )) && - ( !pNopLocation ) ) + ( swizzleAttn == entrySwzAddress ) || + ( swizzleBlr == entrySwzAddress )) && ( !pNopLocation ) ) { pNopLocation = &pScomEntry[index]; } @@ -962,7 +964,12 @@ StopReturnCode_t p9_stop_save_scom( void* const i_pImage, break; case P9_STOP_SCOM_RESET: - memset( pScomEntry, nopInst, SCOM_SIZE_PER_CORE ); + + if( P9_STOP_SECTION_CORE_SCOM == i_section ) + { + memset( pScomEntry, 0x00, SCOM_SIZE_PER_CORE ); + } + break; case P9_STOP_SCOM_OR_APPEND: diff --git a/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H b/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H index 2fa52225..bb2534cb 100755 --- a/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H +++ b/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H @@ -64,8 +64,7 @@ typedef struct */ typedef struct { - uint8_t threadArea[THREAD_SECTN_SIZE]; - uint8_t reserve[THREAD_AREA_SIZE - THREAD_SECTN_SIZE]; + uint8_t threadArea[THREAD_AREA_SIZE]; uint8_t coreArea[CORE_SPR_SECTN_SIZE]; } SprRestoreArea_t; |

