summaryrefslogtreecommitdiffstats
path: root/src/usr/fapi2/test
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2016-06-28 13:15:54 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-07-28 10:33:08 -0400
commitc03003723f00e8d9200b4a03bf55495c48cb0d77 (patch)
tree05b0e0b6f4f1ad00a7e3dd401e4e0c8bce0cbc18 /src/usr/fapi2/test
parent1cf86502a50785bed28c15f47d24f452e83b0892 (diff)
downloadtalos-hostboot-c03003723f00e8d9200b4a03bf55495c48cb0d77.tar.gz
talos-hostboot-c03003723f00e8d9200b4a03bf55495c48cb0d77.zip
Refactor fapi2 scom interface to use pib_err_mask
Up to this point we have been ignoring pib err mask. This commit adds the pib_err_mask support to to platform RTC: 144507 Change-Id: Ie810f0915d6ba8091ea4740e705ba550dbad6eae Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26382 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/fapi2/test')
-rw-r--r--src/usr/fapi2/test/fapi2HwAccessTest.H17
-rw-r--r--src/usr/fapi2/test/p9_hwtests.C82
-rw-r--r--src/usr/fapi2/test/p9_hwtests.H5
3 files changed, 104 insertions, 0 deletions
diff --git a/src/usr/fapi2/test/fapi2HwAccessTest.H b/src/usr/fapi2/test/fapi2HwAccessTest.H
index 8fc3e7499..0773ced18 100644
--- a/src/usr/fapi2/test/fapi2HwAccessTest.H
+++ b/src/usr/fapi2/test/fapi2HwAccessTest.H
@@ -199,6 +199,23 @@ void test_fapi2HwAccess()
}
}
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_piberrmask_getsettest);
+ if(l_errl)
+ {
+ TS_FAIL("p9_piberrmask_getsettest returned an error!");
+ numFails++;
+ errlCommit(l_errl,FAPI2_COMP_ID);
+ }
+
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_piberrmask_masktest, fapi2_procTarget);
+ if(l_errl)
+ {
+ TS_FAIL("p9_piberrmask_masktest returned an error!");
+ numFails++;
+ errlCommit(l_errl,FAPI2_COMP_ID);
+ }
#if 0 // TODO-RTC:151428 - need simics support for these to pass
numTests++;
diff --git a/src/usr/fapi2/test/p9_hwtests.C b/src/usr/fapi2/test/p9_hwtests.C
index 7222667c6..e157092ea 100644
--- a/src/usr/fapi2/test/p9_hwtests.C
+++ b/src/usr/fapi2/test/p9_hwtests.C
@@ -32,6 +32,7 @@
#include <fapi2.H>
#include <fapi2_hw_access.H>
#include <errl/errlentry.H>
+#include <xscom/piberror.H>
#include <plat_hwp_invoker.H>
//This function does nothing, it is used to call FAPI_INVOKE on
@@ -336,6 +337,48 @@ fapi2::ReturnCode p9_opmodetest_getsetopmode()
}
}while(0);
+ return fapi2::current_err;
+}
+
+fapi2::ReturnCode p9_piberrmask_getsettest()
+{
+ FAPI_INF("Entering p9_piberrmask_getsettest...");
+
+ FAPI_INF("Ensure that getPIBErrorMask return 0 initially");
+
+ uint8_t mask = fapi2::getPIBErrorMask();
+ do
+ {
+ if(mask != 0)
+ {
+ TS_FAIL("p9_piberrmask_getsettest>> Expected fapi2::getPIBErrorMask to return (0x0) but instead returned 0x%x", mask);
+ break;
+ }
+
+ FAPI_INF("Setting pib_err_mask to PIB_CHIPLET_OFFLINE (0x2) and checking that we get it back with getPIBErrorMask");
+
+ fapi2::setPIBErrorMask((uint8_t)PIB::PIB_CHIPLET_OFFLINE);
+ mask = fapi2::getPIBErrorMask();
+ if(mask != PIB::PIB_CHIPLET_OFFLINE)
+ {
+ TS_FAIL("p9_piberrmask_getsettest>> Expected fapi2::getPIBErrorMask to return 0x2 but instead returned 0x%x", mask);
+ break;
+ }
+
+ //Call FAPI_INVOKE on an empty function to test if
+ //it resets the pib err mask
+ errlHndl_t l_errl = NULL;
+ FAPI_INVOKE_HWP(l_errl,empty_function);
+
+ mask = fapi2::getPIBErrorMask();
+ if(mask != 0)
+ {
+ TS_FAIL("p9_piberrmask_getsettest>> Expected fapi2::getPIBErrorMask to return PIB_NO_ERROR (0x0) but instead returned %x , FAPI_INVOKE failed to reset pib_err_mask", mask);
+ break;
+ }
+
+ FAPI_INF("Exiting p9_piberrmask_getsettest...");
+ }while(0);
return fapi2::current_err;
}
@@ -398,3 +441,42 @@ fapi_try_exit:
return fapi2::current_err;
}
+fapi2::ReturnCode p9_piberrmask_masktest(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
+{
+
+ FAPI_INF("Entering p9_piberrmask_masktest...");
+
+ uint8_t completionCheck = 0;
+
+ //Ideally we would like this test case to test errors 1-7 but
+ // I am not sure if we can simulate some of the errors
+
+ fapi2::buffer<uint64_t> l_scomdata = 0xFF00FF00;
+
+ //Set the mask to ignore invalid address errors ()
+ fapi2::setPIBErrorMask(static_cast<uint8_t>(PIB::PIB_INVALID_ADDRESS));
+
+ //Attempt writing to a bad address
+ FAPI_TRY(fapi2::putScom(i_target,
+ 0xDEADBEEF,
+ l_scomdata));
+
+ //try another scom, this time a get to make sure that
+ // FAPI_TRY does not reset the mask
+ FAPI_TRY(fapi2::getScom(i_target,
+ 0xDEADBEEF,
+ l_scomdata));
+
+ completionCheck = 1;
+
+
+ fapi_try_exit:
+
+ if(completionCheck != 1)
+ {
+ FAPI_ERR("Pib Err Mask is not removing errors and is causing FAPI_TRY to fail");
+ }
+ FAPI_INF("Exiting p9_piberrmask_masktest...");
+ return fapi2::current_err;
+}
diff --git a/src/usr/fapi2/test/p9_hwtests.H b/src/usr/fapi2/test/p9_hwtests.H
index 6f184d9bc..06727b9d2 100644
--- a/src/usr/fapi2/test/p9_hwtests.H
+++ b/src/usr/fapi2/test/p9_hwtests.H
@@ -77,6 +77,11 @@ fapi2::ReturnCode p9_opmodetest_getsetopmode();
fapi2::ReturnCode p9_opmodetest_ignorehwerr(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
uint8_t fail);
+fapi2::ReturnCode p9_piberrmask_getsettest();
+
+fapi2::ReturnCode p9_piberrmask_masktest(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+
/////////////
//
OpenPOWER on IntegriCloud