From 55725bff75c15a0da730b4a6a81e64959bd82602 Mon Sep 17 00:00:00 2001 From: "Richard J. Knight" Date: Mon, 22 Aug 2016 08:33:17 -0500 Subject: Add new xml tag to support returning an SBE scom fail -Add tag allow special processing of this type of failure. -Modified parseErrorInfo.pl to generate set_address and set_pcb_pib_rc allowing the failure data to be returned through the normal channel. Change-Id: I2046d04b6d8c993e8ff2677ee63947964efc4bef RTC:158628 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28913 Tested-by: Jenkins Server Tested-by: PPE CI Tested-by: Hostboot CI Reviewed-by: Santosh S. Puranik Reviewed-by: Sachin Gupta Reviewed-by: Matt K. Light Reviewed-by: Daniel M. Crowell Reviewed-by: Jennifer A. Stofer Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28926 Tested-by: FSP CI Jenkins --- src/import/hwpf/fapi2/tools/parseErrorInfo.pl | 52 ++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'src/import/hwpf') diff --git a/src/import/hwpf/fapi2/tools/parseErrorInfo.pl b/src/import/hwpf/fapi2/tools/parseErrorInfo.pl index 8a431d1b..7d0e6e9b 100755 --- a/src/import/hwpf/fapi2/tools/parseErrorInfo.pl +++ b/src/import/hwpf/fapi2/tools/parseErrorInfo.pl @@ -2,7 +2,7 @@ # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # -# $Source: import/hwpf/fapi2/tools/parseErrorInfo.pl $ +# $Source: src/import/hwpf/fapi2/tools/parseErrorInfo.pl $ # # OpenPOWER sbe Project # @@ -351,7 +351,7 @@ sub addFfdcMethod $methods->{$key}{member} = "$ffdc_type $ffdc_uc;"; $methods->{$objectNumber}{localvar} = "$ffdc_type $ffdc_uc = getFfdcData(FFDC_BUFFER[$objectNumber]);"; - $methods->{$objectNumber}{assignment_string} = "l_obj.$ffdc_uc=$ffdc_uc"; + $methods->{$objectNumber}{assignment_string} = "l_obj.$ffdc_uc=$ffdc_uc;"; } else @@ -757,7 +757,7 @@ foreach my $argnum (0 .. $#ARGV) if($crffdcCount > 0) { - print EIFILE "\tRC.addErrorInfo(ffdc); \\\n}\n"; + print EIFILE "\tRC.addErrorInfo(ffdc); \\\n}"; } } @@ -785,10 +785,52 @@ foreach my $argnum (0 .. $#ARGV) $eiEntryCount++; } #end foreach $collectTrace + # plaform (currently only SBE) PCB-PIB error defined in xml file, + # we will always add the set_address and set_pcb_pib_rc methods + # for this error type + if(exists $err->{platScomFail}) + { + # Set the FFDC ID value in a global hash. The name is _pib_error + my $ffdcName = $err->{rc} . "_"; + $ffdcName = $ffdcName . "address"; + setFfdcIdValue($ffdcName); + + # Add the address to the EI Object array if it doesn't already exist + my $objNum = addEntryToArray(\@eiObjects, "address"); + + # Add a method to the ffdc-gathering class + addFfdcMethod(\%methods, "address", $err->{rc},$ffdc_type,$objNum); + + # Add an EI entry to eiEntryStr + $eiEntryStr .= "\tl_entries[$eiEntryCount].iv_type = fapi2::EI_TYPE_FFDC; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcObjIndex = $objNum; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcId = fapi2::$ffdcName; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcSize = 8; \\\n"; + $eiEntryCount++; + + # Set the FFDC ID value in a global hash. The name is _pib_error + $ffdcName = $err->{rc} . "_"; + $ffdcName = $ffdcName . "pcb_pib_rc"; + setFfdcIdValue($ffdcName); + + # Add the pibError to the EI Object array if it doesn't already exist + $objNum = addEntryToArray(\@eiObjects, "pcb_pib_rc"); + + # Add a method to the ffdc-gathering class + addFfdcMethod(\%methods, "pcb_pib_rc", $err->{rc},$ffdc_type,$objNum); + + # Add an EI entry to eiEntryStr + $eiEntryStr .= "\tl_entries[$eiEntryCount].iv_type = fapi2::EI_TYPE_FFDC; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcObjIndex = $objNum; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcId = fapi2::$ffdcName; \\\n"; + $eiEntryStr .= "\tl_entries[$eiEntryCount].ffdc.iv_ffdcSize = 8; \\\n"; + $eiEntryCount++; + } #end foreach $ffdc + + # Local FFDC foreach my $ffdc (@{$err->{ffdc}}) { - # Set the FFDC ID value in a global hash. The name is _ my $ffdcName = $err->{rc} . "_"; $ffdcName = $ffdcName . $ffdc; @@ -1292,7 +1334,7 @@ foreach my $argnum (0 .. $#ARGV) print EIFILE "\tRC.addErrorInfo(l_objects, l_entries, $eiEntryCount); \\\n}"; } - print EIFILE "\n"; + print EIFILE "\n\n"; #---------------------------------------------------------------------- # Print the return code class to hwp_error_info.H -- cgit v1.2.1