From 7fc696f4f13140b44f5e3c479cc5f5ac98a561e5 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Date: Mon, 4 Feb 2019 03:53:09 -0600 Subject: FAPI_Infra:Add new member to structure ErrorInfoHwCallout Enabling new member addition to the structure ErrorInfoHwCallout to pass on the clock position wrt target. Change-Id: I9501a418945143fbdb49519644cecdc31edaf04d CQ:SW449714 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71281 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: PPE CI Tested-by: Hostboot CI Reviewed-by: Richard J. Knight Tested-by: HWSV CI Reviewed-by: Manish K. Chowdhary Reviewed-by: Jennifer A. Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71311 Reviewed-by: RAJA DAS --- src/import/hwpf/fapi2/include/error_info.H | 8 +++++++- src/import/hwpf/fapi2/include/error_info_defs.H | 2 ++ src/import/hwpf/fapi2/tools/parseErrorInfo.pl | 23 +++++++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/import/hwpf/fapi2/include/error_info.H b/src/import/hwpf/fapi2/include/error_info.H index e3640f5e..8ff3d902 100644 --- a/src/import/hwpf/fapi2/include/error_info.H +++ b/src/import/hwpf/fapi2/include/error_info.H @@ -169,11 +169,13 @@ struct ErrorInfoHwCallout /// @param[in] i_hw Hardware to callout /// @param[in] i_calloutPriority Priority of callout /// @param[in] i_refTarget Reference to reference target + /// @param[in] i_clkPos Clock position /// ErrorInfoHwCallout( const HwCallouts::HwCallout i_hw, const CalloutPriorities::CalloutPriority i_calloutPriority, - const Target& i_refTarget); + const Target& i_refTarget, + const uint8_t i_clkPos = CLOCK_POS_UNDEF); #ifdef FAPI_CUSTOM_MALLOC /// @@ -202,6 +204,9 @@ struct ErrorInfoHwCallout // The reference target (needed for some HW callouts to identify what to // callout). The target handle is NULL if there is no reference target. Target iv_refTarget; + + // Clock position + uint8_t iv_clkPos; }; /// @@ -548,6 +553,7 @@ struct ErrorInfoEntryHwCallout uint8_t iv_hw; uint8_t iv_calloutPriority; uint8_t iv_refObjIndex; + uint8_t iv_clkPos; void addErrorInfo(std::shared_ptr i_info, const void* const* i_object) const; }; diff --git a/src/import/hwpf/fapi2/include/error_info_defs.H b/src/import/hwpf/fapi2/include/error_info_defs.H index 7871c99b..e312a84b 100644 --- a/src/import/hwpf/fapi2/include/error_info_defs.H +++ b/src/import/hwpf/fapi2/include/error_info_defs.H @@ -40,6 +40,8 @@ #endif namespace fapi2 { +// For HW callout - Clock position undefined to 0xFF(default) +#define CLOCK_POS_UNDEF 0xFF /// /// @brief Type to hold the ffdc data to be sent to hostboot diff --git a/src/import/hwpf/fapi2/tools/parseErrorInfo.pl b/src/import/hwpf/fapi2/tools/parseErrorInfo.pl index b4dc1949..85812de0 100755 --- a/src/import/hwpf/fapi2/tools/parseErrorInfo.pl +++ b/src/import/hwpf/fapi2/tools/parseErrorInfo.pl @@ -6,7 +6,7 @@ # # OpenPOWER sbe Project # -# Contributors Listed Below - COPYRIGHT 2015,2018 +# Contributors Listed Below - COPYRIGHT 2015,2019 # [+] International Business Machines Corp. # # @@ -66,6 +66,7 @@ my $ffdc_type = "fapi2::ffdc_t"; my $mcast_type = "fapi2::mcast_t"; my $scom_addr_type = "uint64_t"; my $ffdc_count = 0; +my $clock_ffdc_type = "uint8_t"; # There are some names used in the XML files which exist in either # c++ keywords (case, for example) or macros (DOMAIN). The one's which @@ -292,7 +293,7 @@ sub addFfdcMethod # If we're generating empty classes, not using an argument name will avoid the unused parameter warnings my $param = ( $arg_empty_ffdc eq undef ) ? "i_value" : ""; - if ( $type eq $ffdc_type ) + if ( $type eq $ffdc_type || $type eq $clock_ffdc_type ) { $method = " template< typename T >\n"; $method .= " inline $class_name& set_$ffdc_uc(const T& $param)\n"; @@ -1071,6 +1072,24 @@ foreach my $argnum ( 0 .. $#ARGV ) { $eiEntryStr .= " l_entries[$eiEntryCount].hw_callout.iv_refObjIndex = 0xff; \\\n"; } + + # HW Callout - Clock position + if ( exists $callout->{hw}->{clkPos} ) + { + # Add the Targets to the objectlist if they don't already exist + my $objNum1 = addEntryToArray( \@eiObjects, $callout->{hw}->{clkPos} ); + + $eiEntryStr .= + " l_entries[$eiEntryCount].hw_callout.iv_clkPos = $callout->{hw}->{clkPos}; \\\n"; + + # Add a method to the ffdc-gathering class + addFfdcMethod( \%methods, $callout->{hw}->{clkPos}, $err->{rc}, $clock_ffdc_type, $objNum1 ); + } + else + { + $eiEntryStr .= " l_entries[$eiEntryCount].hw_callout.iv_clkPos = 0xff; \\\n"; + } + $eiEntryCount++; $elementsFound++; } -- cgit v1.2.1