From 54a3bfc6323e7231580da74bcd965988d3e780af Mon Sep 17 00:00:00 2001 From: Bill Hoffa Date: Fri, 16 Jun 2017 17:11:20 -0500 Subject: Add support for LPC error detection and recovery Change-Id: Iea9bd4425aeb798acd85484402c627fb623cae94 Also-By: Matt Ploetz RTC: 133649 RTC: 134582 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45397 Reviewed-by: Christian R. Geddes Reviewed-by: Prachi Gupta Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Daniel M. Crowell --- src/usr/lpc/test/lpcddtest.H | 68 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) (limited to 'src/usr/lpc/test') diff --git a/src/usr/lpc/test/lpcddtest.H b/src/usr/lpc/test/lpcddtest.H index 0883f83e7..2e7395451 100644 --- a/src/usr/lpc/test/lpcddtest.H +++ b/src/usr/lpc/test/lpcddtest.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014 */ +/* Contributors Listed Below - COPYRIGHT 2014,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -222,6 +222,72 @@ class LpcDdTest : public CxxTest::TestSuite TS_FAIL("LpcDD::test_hwfail> No error from bad address"); } } + + + /** + * @brief LPC HW Failure + * Test handling of invalid address + * This address has to be within the range to pass checkAddr, but + * not actaully a valid LPC address. + */ + void _test_invalidAddress(void) + { + TRACFCOMP( g_trac_lpc, "LpcDdTest::test_invalidAddress>" ); + errlHndl_t l_err = NULL; + + TARGETING::Target* sentinel = + TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL; + size_t opsize = 4; + uint8_t data[12]; + + // pass a bad address + l_err = deviceRead( sentinel, + data, + opsize, + DEVICE_LPC_ADDRESS(LPC::TRANS_ABS,0xDEADBEEF) ); + if( l_err ) + { + delete l_err; + } + else + { + TS_FAIL("LpcDD::test_invalidAddress> No error from invalid address test"); + } + } + + /** + * @brief LPC HW Failure + * Test handling of invalid address + * This address has to be within the range to pass checkAddr, but + * not actaully a valid LPC address. + */ + void _test_invalidTransferSize(void) + { + TRACFCOMP( g_trac_lpc, "LpcDdTest::test_invalidTransferSize>" ); + errlHndl_t l_err = NULL; + + TARGETING::Target* sentinel = + TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL; + size_t opsize = 4; + uint8_t data[12]; + + // pass a bad address + l_err = deviceRead( sentinel, + data, + opsize, + DEVICE_LPC_ADDRESS(LPC::TRANS_ABS,0x12345678) ); + if( l_err ) + { + delete l_err; + } + else + { + TS_FAIL("LpcDD::test_invalidTransferSize> No error from invalid transfer size test"); + } + } + + + }; #endif -- cgit v1.2.3