-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change-Id: Iaf44268029dfd4f87a799112004317f07152e302 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29945 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40871 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
- Loading branch information
1 parent
3798680
commit 1e01ced
Showing
9 changed files
with
1,289 additions
and
0 deletions.
There are no files selected for viewing
534 changes: 534 additions & 0 deletions
534
src/import/chips/p9/procedures/hwp/cache/p9_l2err_extract.C
Large diffs are not rendered by default.
Oops, something went wrong.
113 changes: 113 additions & 0 deletions
113
src/import/chips/p9/procedures/hwp/cache/p9_l2err_extract.H
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/import/chips/p9/procedures/hwp/cache/p9_l2err_extract.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2016,2017 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
//------------------------------------------------------------------------------ | ||
// *| | ||
// *! TITLE : p9_l2err_extract.H | ||
// *! DESCRIPTION : Parse and extract error information from L2 trace array (FAPI) | ||
// *! | ||
// *! OWNER NAME : Chen Qian Email: qianqc@cn.ibm.com | ||
// *! | ||
// *! ADDITIONAL COMMENTS : | ||
// *! | ||
// *! Parses the contents of the L2_T0 trace array for L2 error data. | ||
// *! Will look for occurances of an L2 CE or UE and capture associated data. | ||
// *! | ||
// *! Assume that the L2 trace array is set up to capture CEs/UEs, and | ||
// *! that it is NOT running in banked mode. Also trace must have been set to | ||
// *! stop on error. | ||
// *| | ||
// *! NOTE: Trace entries must be provided within data buffer from oldest->youngest entry. | ||
// *! | ||
// *! NOTE: This procedure only looks for the oldest error in the trace array. Other | ||
// *! errors can be present in the first or second beat of data, or for datawords | ||
// *! greater than the one with the first error. | ||
//------------------------------------------------------------------------------ | ||
|
||
#ifndef _P9_L2ERR_EXTRACT_H_ | ||
#define _P9_L2ERR_EXTRACT_H_ | ||
|
||
//------------------------------------------------------------------------------ | ||
// Includes | ||
//------------------------------------------------------------------------------ | ||
#include <fapi2.H> | ||
|
||
//------------------------------------------------------------------------------ | ||
// Structure definitions | ||
//------------------------------------------------------------------------------ | ||
|
||
// enum used to denote what type of error occured or which we want to find | ||
enum p9_l2err_extract_err_type | ||
{ | ||
L2ERR_CE, | ||
L2ERR_UE, | ||
L2ERR_CE_UE | ||
}; | ||
|
||
// structure to document control/data registers for each supported trace array | ||
struct p9_l2err_extract_err_data | ||
{ | ||
p9_l2err_extract_err_type ce_ue; | ||
uint8_t member; //3-bit | ||
uint8_t dw; //3-bit | ||
uint8_t macro; //2-bit d0-d2 | ||
uint8_t bank; //1-bit | ||
uint8_t ow_select;//1-bit | ||
uint8_t bitline; //decimal 0-99 | ||
bool is_top_sa; //top or bottom subarray | ||
bool is_left_sa; //left or right subarray | ||
uint16_t address;//10 bits addr48_57 | ||
}; | ||
|
||
// function pointer typedef definition for HWP call support | ||
typedef fapi2::ReturnCode | ||
(*p9_l2err_extract_FP_t) (const fapi2::Target<fapi2::TARGET_TYPE_EX>&, | ||
const fapi2::variable_buffer&, | ||
p9_l2err_extract_err_type, | ||
p9_l2err_extract_err_data&); | ||
|
||
extern "C" | ||
{ | ||
|
||
//------------------------------------------------------------------------------ | ||
// Function prototype | ||
//------------------------------------------------------------------------------ | ||
|
||
// function: FAPI2 p9_l2err_extract HWP entry point | ||
// Parse and extract L2 error information from provided | ||
// L2_T0 trace array that has been stopped on an L2 CE or UE. | ||
// parameters: i_target => chiplet target for callouts | ||
// i_ta_data => ecmdDataBufferBase that contains the trace data | ||
// i_err_type => type of error that is to be extracted (CE,UE,both) | ||
// o_err_data => failing location information for CE or UE | ||
|
||
fapi2::ReturnCode p9_l2err_extract(const fapi2::Target<fapi2::TARGET_TYPE_EX>& i_target, | ||
const fapi2::variable_buffer& i_ta_data, | ||
p9_l2err_extract_err_type i_err_type, | ||
p9_l2err_extract_err_data& o_err_data); | ||
|
||
} // extern "C" | ||
|
||
#endif // _P9_L2ERR_EXTRACT_H_ | ||
|
27 changes: 27 additions & 0 deletions
27
src/import/chips/p9/procedures/hwp/cache/p9_l2err_extract.mk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# IBM_PROLOG_BEGIN_TAG | ||
# This is an automatically generated prolog. | ||
# | ||
# $Source: src/import/chips/p9/procedures/hwp/cache/p9_l2err_extract.mk $ | ||
# | ||
# OpenPOWER HostBoot Project | ||
# | ||
# Contributors Listed Below - COPYRIGHT 2015,2017 | ||
# [+] International Business Machines Corp. | ||
# | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
# implied. See the License for the specific language governing | ||
# permissions and limitations under the License. | ||
# | ||
# IBM_PROLOG_END_TAG | ||
PROCEDURE=p9_l2err_extract | ||
$(call BUILD_PROCEDURE) | ||
|
119 changes: 119 additions & 0 deletions
119
src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.C
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.C $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2016,2017 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
//------------------------------------------------------------------------------ | ||
// *| | ||
// *! TITLE : p9_l2err_linedelete.C | ||
// *! DESCRIPTION : Delete the L2 error cache line according to the error extraction information. | ||
// *! | ||
// *! OWNER NAME : Chen Qian Email: qianqc@cn.ibm.com | ||
// *! | ||
// *! ADDITIONAL COMMENTS : | ||
// *! See header file for additional comments. | ||
//------------------------------------------------------------------------------ | ||
|
||
|
||
//------------------------------------------------------------------------------ | ||
// Includes | ||
//------------------------------------------------------------------------------ | ||
#include <p9_l2err_linedelete.H> | ||
#include <p9_quad_scom_addresses.H> | ||
#include <p9_quad_scom_addresses_fld.H> | ||
//------------------------------------------------------------------------------ | ||
// Constant definitions | ||
//------------------------------------------------------------------------------ | ||
|
||
extern "C" | ||
{ | ||
|
||
//------------------------------------------------------------------------------ | ||
// Function definitions | ||
//------------------------------------------------------------------------------ | ||
|
||
//------------------------------------------------------------------------------ | ||
// HWP entry point | ||
//------------------------------------------------------------------------------ | ||
fapi2::ReturnCode p9_l2err_linedelete(const fapi2::Target<fapi2::TARGET_TYPE_EX>& i_target, | ||
const p9_l2err_extract_err_data& i_err_data) | ||
{ | ||
|
||
|
||
uint8_t member = 0; | ||
uint8_t bank = 0; | ||
uint16_t cgc = 0; | ||
fapi2::buffer<uint64_t> l_l2_l2cerrs_prd_purge_cmd_reg; | ||
|
||
// mark function entry | ||
FAPI_DBG("Entering p9_l2err_linedelete..."); | ||
|
||
// +---------------------------+ | ||
// | L2 Line Delete Scom | | ||
// +---------------------------+ | ||
// |Bit(s)| Data | | ||
// +------+--------------------+ | ||
// | 0 | Trigger | | ||
// +------+--------------------+ | ||
// | 1:4 | Purge type (LD=0x2)| | ||
// +------+--------------------+ | ||
// | 5:16 | Don't care | | ||
// +------+--------------------+ | ||
// |17:19 | Member | | ||
// +------+--------------------+ | ||
// |20:27 | CGC addr 48:55 | | ||
// +------+--------------------+ | ||
// | 28 | Bank | | ||
// +------+--------------------+ | ||
// |29:30 | Don't care | | ||
// +------+--------------------+ | ||
|
||
member = i_err_data.member; | ||
bank = i_err_data.bank; | ||
cgc = i_err_data.address; | ||
|
||
// Write member, cgc address and bank into PRD Purge Engine Command Register | ||
// SCOM Addr: 0x000000001001080E | ||
// bit 0 is the trigger, the act of writing this bit to 1 sets off the line delete | ||
// bits 1:4 is ttype 0b0010 = line delete | ||
// bits 17:19 is the member | ||
// bits 20:27 is the cgc address | ||
// bit 28 is the bank | ||
FAPI_TRY(fapi2::getScom(i_target, EX_PRD_PURGE_CMD_REG, l_l2_l2cerrs_prd_purge_cmd_reg), | ||
"Error from getScom (l_l2_l2cerrs_prd_purge_cmd_reg)"); | ||
FAPI_DBG("l_l2_l2cerrs_prd_purge_cmd_reg_data: %#lx", l_l2_l2cerrs_prd_purge_cmd_reg); | ||
|
||
l_l2_l2cerrs_prd_purge_cmd_reg.insertFromRight<EX_PRD_PURGE_CMD_REG_MEM, EX_PRD_PURGE_CMD_REG_MEM_LEN>(member); | ||
l_l2_l2cerrs_prd_purge_cmd_reg.insertFromRight<EX_PRD_PURGE_CMD_REG_CGC, EX_PRD_PURGE_CMD_REG_CGC_LEN>(cgc); | ||
l_l2_l2cerrs_prd_purge_cmd_reg.insertFromRight<EX_PRD_PURGE_CMD_REG_BANK, 1>(bank); | ||
|
||
FAPI_DBG("l_l2_l2cerrs_prd_purge_cmd_reg_data: %#lx", l_l2_l2cerrs_prd_purge_cmd_reg); | ||
FAPI_TRY(fapi2::putScom(i_target, EX_PRD_PURGE_CMD_REG, l_l2_l2cerrs_prd_purge_cmd_reg), | ||
"Error from putScom (l_l2_l2cerrs_prd_purge_cmd_reg)"); | ||
|
||
// mark HWP exit | ||
fapi_try_exit: | ||
FAPI_INF("Exiting p9_l2err_linedelete..."); | ||
return fapi2::current_err; | ||
} // p9_l2err_extract | ||
|
||
} // extern "C |
74 changes: 74 additions & 0 deletions
74
src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.H
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2016,2017 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
//------------------------------------------------------------------------------ | ||
// *| | ||
// *! TITLE : p9_l2err_linedelete.H | ||
// *! DESCRIPTION : Delete the L2 error cache line according to the error extraction information | ||
// *! | ||
// *! OWNER NAME : Chen Qian Email: qianqc@cn.ibm.com | ||
// *! | ||
// *! ADDITIONAL COMMENTS : | ||
// *! | ||
// *! Write member, cgc address and bank into PRD Purge Engine Command Register | ||
// *! SCOM Addr: 0x000000001001080E | ||
// *! bit 0 is the trigger, the act of writing this bit to 1 sets off the line delete | ||
// *! bits 1:4 is the ttype 0b0010 = line delete | ||
// *! bits 17:19 is the member | ||
// *| bits 20:27 is the cgc address | ||
// *| bit 28 is the bank | ||
// *| | ||
// *! NOTE: The error information is extracted by the HWP p9_l2err_extract. | ||
// *| An output data structure is dumped to this proceder and wrapped | ||
//------------------------------------------------------------------------------ | ||
|
||
#ifndef _P9_L2ERR_LINEDELETE_H_ | ||
#define _P9_L2ERR_LINEDELETE_H_ | ||
|
||
//------------------------------------------------------------------------------ | ||
// Includes | ||
//------------------------------------------------------------------------------ | ||
#include <fapi2.H> | ||
#include <p9_l2err_extract.H> | ||
|
||
//------------------------------------------------------------------------------ | ||
// Structure definitions | ||
//------------------------------------------------------------------------------ | ||
|
||
// function pointer typedef definition for HWP call support | ||
typedef fapi2::ReturnCode | ||
(*p9_l2err_linedelete_FP_t) (const fapi2::Target<fapi2::TARGET_TYPE_EX>&, | ||
const p9_l2err_extract_err_data& ); | ||
|
||
extern "C" | ||
{ | ||
|
||
|
||
|
||
fapi2::ReturnCode p9_l2err_linedelete(const fapi2::Target<fapi2::TARGET_TYPE_EX>& i_target, | ||
const p9_l2err_extract_err_data& i_err_data); | ||
|
||
} // extern "C" | ||
|
||
#endif // _P9_L2ERR_LINEDELETE_H_ |
27 changes: 27 additions & 0 deletions
27
src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.mk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# IBM_PROLOG_BEGIN_TAG | ||
# This is an automatically generated prolog. | ||
# | ||
# $Source: src/import/chips/p9/procedures/hwp/cache/p9_l2err_linedelete.mk $ | ||
# | ||
# OpenPOWER HostBoot Project | ||
# | ||
# Contributors Listed Below - COPYRIGHT 2015,2017 | ||
# [+] International Business Machines Corp. | ||
# | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
# implied. See the License for the specific language governing | ||
# permissions and limitations under the License. | ||
# | ||
# IBM_PROLOG_END_TAG | ||
PROCEDURE=p9_l2err_linedelete | ||
$(call BUILD_PROCEDURE) | ||
|
Oops, something went wrong.