summaryrefslogtreecommitdiffstats
path: root/src/usr/scom
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/scom')
-rw-r--r--src/usr/scom/handleSpecialWakeup.C8
-rw-r--r--src/usr/scom/runtime/rt_scom.C18
-rw-r--r--src/usr/scom/runtime/test/testscom_rt.H25
-rw-r--r--src/usr/scom/scom.C3
-rw-r--r--src/usr/scom/scomtrans.C37
-rw-r--r--src/usr/scom/test/scomtest.H9
6 files changed, 47 insertions, 53 deletions
diff --git a/src/usr/scom/handleSpecialWakeup.C b/src/usr/scom/handleSpecialWakeup.C
index 07bab3a1b..e202e9bdb 100644
--- a/src/usr/scom/handleSpecialWakeup.C
+++ b/src/usr/scom/handleSpecialWakeup.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* Contributors Listed Below - COPYRIGHT 2015,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -37,7 +37,7 @@
#include <initservice/initserviceif.H>
#ifdef __HOSTBOOT_RUNTIME
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <runtime/interface.h>
#endif // __HOSTBOOT_RUNTIME
@@ -156,8 +156,8 @@ errlHndl_t callWakeupHyp(TARGETING::Target* i_target,
++pCore_it )
{
// Runtime target id
- RT_TARG::rtChipId_t rtTargetId = 0;
- l_errl = RT_TARG::getRtTarget(*pCore_it, rtTargetId);
+ TARGETING::rtChipId_t rtTargetId = 0;
+ l_errl = TARGETING::getRtTarget(*pCore_it, rtTargetId);
if(l_errl)
{
break;
diff --git a/src/usr/scom/runtime/rt_scom.C b/src/usr/scom/runtime/rt_scom.C
index a27dfe81e..4507b435f 100644
--- a/src/usr/scom/runtime/rt_scom.C
+++ b/src/usr/scom/runtime/rt_scom.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* Contributors Listed Below - COPYRIGHT 2013,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -30,7 +30,7 @@
#include <scom/scomif.H>
#include <scom/runtime/rt_scomif.H>
#include <runtime/interface.h>
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <xscom/piberror.H>
#include <runtime/hbrt_utilities.H>
@@ -169,9 +169,9 @@ errlHndl_t sendScomToHyp(DeviceFW::OperationType i_opType,
do
{
// Convert target to something Sapphire understands
- RT_TARG::rtChipId_t proc_id = 0;
- l_err = RT_TARG::getRtTarget(i_target,
- proc_id);
+ TARGETING::rtChipId_t target_id = 0;
+ l_err = TARGETING::getRtTarget(i_target,
+ target_id);
if(l_err)
{
break;
@@ -185,7 +185,7 @@ errlHndl_t sendScomToHyp(DeviceFW::OperationType i_opType,
if(i_opType == DeviceFW::READ)
{
l_hostRC =
- g_hostInterfaces->scom_read(proc_id,
+ g_hostInterfaces->scom_read(target_id,
i_scomAddr,
io_buffer
);
@@ -193,7 +193,7 @@ errlHndl_t sendScomToHyp(DeviceFW::OperationType i_opType,
else if (i_opType == DeviceFW::WRITE)
{
l_hostRC =
- g_hostInterfaces->scom_write(proc_id,
+ g_hostInterfaces->scom_write(target_id,
i_scomAddr,
io_buffer
);
@@ -203,8 +203,8 @@ errlHndl_t sendScomToHyp(DeviceFW::OperationType i_opType,
{
TRACFCOMP(g_trac_scom,ERR_MRK
"Hypervisor scom read/write failed. "
- "rc 0x%X target 0x%llX proc_id 0x%llX addr 0x%llX r/w %d",
- l_hostRC, get_huid(i_target), proc_id, i_scomAddr, i_opType);
+ "rc 0x%X target 0x%llX target_id 0x%llX addr 0x%llX r/w %d",
+ l_hostRC, get_huid(i_target), target_id, i_scomAddr, i_opType);
// Use an unused bit in the 64-bit scom range to indicate
// read/write. Cannot use bit0 since that is part of an
diff --git a/src/usr/scom/runtime/test/testscom_rt.H b/src/usr/scom/runtime/test/testscom_rt.H
index f0a14fe1b..e39d06d96 100644
--- a/src/usr/scom/runtime/test/testscom_rt.H
+++ b/src/usr/scom/runtime/test/testscom_rt.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* Contributors Listed Below - COPYRIGHT 2013,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -1242,29 +1242,6 @@ public:
TS_FAIL( "ScomTest::test__MultiChipScomWrite_proc> ERROR : Data mismatch between read and expected data" );
fails++;
}
-
- // Read the data back using FSIscom to make sure the data is the same.
- l_err = deviceOp( DeviceFW::READ,
- test_data[x].target,
- &(read_data[x]),
- op_size,
- DEVICE_FSISCOM_ADDRESS(test_data[x].addr) );
-
-
- if( l_err )
- {
- TRACFCOMP(g_trac_scom, "ScomTest::test__MultiChipScomWrite_proc> [%d] FSISCOM Read: Error from device : addr=0x%X, RC=%X", x, test_data[x].addr, l_err->reasonCode() );
- TS_FAIL( "ScomTest::test__MultiChipScomWrite_proc> ERROR : Unexpected error log from write1" );
- fails++;
- errlCommit(l_err,SCOM_COMP_ID);
- }
- else if(read_data[x] != test_data[x].data)
- {
- TRACFCOMP(g_trac_scom, "ScomTest::test__MultiChipScomWrite_proc> [%d] FSISCOM Read: Data mismatch : addr=0x%X, read_data=0x%llx, write_data=0x%llx", x, test_data[x].addr, read_data[x], test_data[x].data);
- TS_FAIL( "ScomTest::test__MultiChipScomWrite_proc> ERROR : Data mismatch between read and expected data" );
- fails++;
- }
-
}
TRACFCOMP( g_trac_scom, "ScomTest::test__MultiChipScomWrite_proc> %d/%d fails", fails, total );
diff --git a/src/usr/scom/scom.C b/src/usr/scom/scom.C
index 22567fb49..d8d696c52 100644
--- a/src/usr/scom/scom.C
+++ b/src/usr/scom/scom.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2018 */
+/* Contributors Listed Below - COPYRIGHT 2011,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -50,7 +50,6 @@
#include <targeting/common/utilFilter.H>
#include <targeting/namedtarget.H>
-#include <config.h>
#ifndef __HOSTBOOT_RUNTIME
#ifdef CONFIG_SECUREBOOT
diff --git a/src/usr/scom/scomtrans.C b/src/usr/scom/scomtrans.C
index bb5d8b282..6f0275e33 100644
--- a/src/usr/scom/scomtrans.C
+++ b/src/usr/scom/scomtrans.C
@@ -187,6 +187,16 @@ DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD,
TARGETING::TYPE_OMI,
startScomProcess);
+DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD,
+ DeviceFW::SCOM,
+ TARGETING::TYPE_NPU,
+ startScomProcess);
+
+DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD,
+ DeviceFW::SCOM,
+ TARGETING::TYPE_MEM_PORT,
+ startScomProcess);
+
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
errlHndl_t startScomProcess(DeviceFW::OperationType i_opType,
@@ -296,9 +306,10 @@ errlHndl_t scomTranslate(TARGETING::Target * &i_target,
// Get the type attribute.
TARGETING::TYPE l_type = i_target->getAttr<TARGETING::ATTR_TYPE>();
- centaurChipUnits_t l_chipUnit = CENTAUR_CHIP;
+ centaurChipUnits_t l_cenChipUnit = CENTAUR_CHIP;
+ p9ChipUnits_t l_p9ChipUnit = NONE;
- if(false == getChipUnitCentaur(l_type,l_chipUnit))
+ if(false == getChipUnitCentaur(l_type,l_cenChipUnit))
{
l_err = centaur_translation(i_target,
l_type,
@@ -306,14 +317,21 @@ errlHndl_t scomTranslate(TARGETING::Target * &i_target,
i_opMode);
o_needsWakeup = false;
}
- else
+ else if(false == getChipUnitP9(l_type,l_p9ChipUnit))
{
l_err = p9_translation(i_target,
- l_type,
- io_addr,
- o_needsWakeup,
- i_opMode);
+ l_type,
+ io_addr,
+ o_needsWakeup,
+ i_opMode);
+ }
+ else
+ {
+ // The only type leftover should be mem_port, and there is
+ // no translation required for that
+ assert( TARGETING::TYPE_MEM_PORT == l_type );
}
+
return l_err;
}
@@ -960,6 +978,11 @@ bool getChipUnitP9 (TARGETING::TYPE i_type,
o_chipUnit = PU_OMIC_CHIPUNIT;
break;
}
+ case(TARGETING::TYPE_NPU) :
+ {
+ o_chipUnit = PU_NPU_CHIPUNIT;
+ break;
+ }
default:
{
l_isError = true;
diff --git a/src/usr/scom/test/scomtest.H b/src/usr/scom/test/scomtest.H
index 87444367b..0ad82d625 100644
--- a/src/usr/scom/test/scomtest.H
+++ b/src/usr/scom/test/scomtest.H
@@ -39,7 +39,6 @@
#include <targeting/common/util.H>
#include <targeting/common/utilFilter.H>
#include <scom/scomif.H>
-#include <config.h>
#include <devicefw/driverif.H>
@@ -449,9 +448,7 @@ public:
{ scom_targets[myPROC0], 0x80000C010D010C3F ,0x1234432112344321, false, TARGETING::MODEL_POWER9 },
{ scom_targets[myPROC0], 0x80000C0107011C3F, 0x123443211234ABAB, false, TARGETING::MODEL_NIMBUS },
{ scom_targets[myPROC0], 0x80000C0107011C3F, 0x123443211234ABAB, false, TARGETING::MODEL_CUMULUS },
-#ifndef CONFIG_AXONE_BRING_UP
{ scom_targets[myPROC0], 0x800040000701103F, 0x123443211234ABAB, false, TARGETING::MODEL_AXONE },
-#endif
{ scom_targets[myPROC0], 0x8FFFFFFFFFFFFFFF, 0x123443211234ABAB, true, TARGETING::MODEL_POWER9 },
};
const uint64_t NUM_ADDRS = sizeof(test_data)/sizeof(test_data[0]);
@@ -1190,10 +1187,8 @@ public:
{ scom_targets[myMC1],0x07010008, 0x08010008, false, TARGETING::MODEL_AXONE},
{ scom_targets[myMC0],0x0FFFFFFF, 0x0FFFFFFF, true, TARGETING::MODEL_AXONE},
{ scom_targets[myMC1],0x0FFFFFFF, 0x0FFFFFFF, true, TARGETING::MODEL_AXONE},
-#ifndef CONFIG_AXONE_BRING_UP
- { scom_targets[myMI0],0x02010803, 0x02010803, false, TARGETING::MODEL_AXONE},
- { scom_targets[myMI3],0x02010803, 0x03010803, false, TARGETING::MODEL_AXONE},
-#endif
+ { scom_targets[myMI0],0x05010810, 0x05010810, false, TARGETING::MODEL_AXONE},
+ { scom_targets[myMI3],0x05010810, 0x06010810, false, TARGETING::MODEL_AXONE},
{ scom_targets[myMI0],0x0FFFFFFF, 0x0FFFFFFF, true, TARGETING::MODEL_AXONE},
{ scom_targets[myMI3],0x0FFFFFFF, 0x0FFFFFFF, true, TARGETING::MODEL_AXONE},
{ scom_targets[myMCC0],0x07010900, 0x07010900, false, TARGETING::MODEL_AXONE},
OpenPOWER on IntegriCloud