| From aaeb72ec680f77eaa8d583b9bd91b62745d025c7 Mon Sep 17 00:00:00 2001 |
| From: Olsen <cmolsen@us.ibm.com> |
| Date: Thu, 6 Feb 2020 08:48:34 -0500 |
| Subject: [PATCH] Mvpd-Ekb ringId gap-discontinuity support |
| |
| Making support for the ringId gap that needs to exist between the end |
| of the Mvpd RingID group and the beginning of the Ekb RingID group |
| in order to be able to append Mvpd rings to the end of the Mvpd |
| RingID group without affecting the already assigned RingID enum for |
| any of the other existing rings. |
| |
| Note that the purpose of any RingID grouping, or order, is to: |
| - ease debugging the ring images and output traces of ipl_customize, |
| - ease the maintaining of the ringId header files. |
| |
| Enforcing ringId groups comes with an increase in code complexity |
| to enable conversion between ringId and rpIndex (i.e., the index of |
| of the RING_PROPERTIES list). |
| |
| Several bugs were found in implementing the above support as there has |
| been a built-in assumption in the PPE/Cronus customized putRingUtils |
| and ring_traverse codes that the ringId is a uint8 type but which we |
| are now exceeding the limit of with this group enforcement. |
| |
| Also added updated mvpd.dat, based on scandef ver 910007, to better |
| match EKB engd's version (which at the time of this merge seems to be |
| consistent with 910007). |
| - Also added an README file with details about mvpd.dat |
| |
| Key_Cronus_Test=XIP_REGRESS_SBE_QME |
| |
| Change-Id: I59eddeff34c3dedf23b092b0cf89ef422e8bb753 |
| Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/91255 |
| Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> |
| Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> |
| Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> |
| Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com> |
| --- |
| .../chips/common/utils/imageProcs/common_ringId.C | 361 +++++----- |
| .../chips/common/utils/imageProcs/common_ringId.H | 34 +- |
| .../procedures/hwp/accessors/p10_get_mvpd_ring.C | 6 +- |
| .../procedures/hwp/accessors/p10_mvpd_ring_funcs.C | 42 +- |
| .../procedures/hwp/customize/p10_ipl_customize.C | 282 ++++---- |
| .../procedures/hwp/customize/p10_qme_customize.C | 281 ++++---- |
| .../procedures/hwp/customize/p10_qme_customize.H | 67 +- |
| .../p10/procedures/hwp/pm/p10_hcode_image_build.C | 6 +- |
| .../xml/error_info/p10_qme_customize_errors.xml | 52 +- |
| src/import/chips/p10/utils/imageProcs/p10_ringId.H | 48 +- |
| .../chips/p10/utils/imageProcs/p10_ring_id.H | 194 +++--- |
| .../p10/utils/imageProcs/p10_ring_properties.H | 725 +++++++++++---------- |
| src/import/chips/p10/utils/imageProcs/p10_tor.C | 75 ++- |
| 13 files changed, 1107 insertions(+), 1066 deletions(-) |
| |
| diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.C b/src/import/chips/common/utils/imageProcs/common_ringId.C |
| index 19729ad..904cb38 100644 |
| --- a/src/import/chips/common/utils/imageProcs/common_ringId.C |
| +++ b/src/import/chips/common/utils/imageProcs/common_ringId.C |
| @@ -164,19 +164,22 @@ int ringid_get_scanScomAddr( ChipId_t i_chipId, |
| int rc = INFRASTRUCT_RC_SUCCESS; |
| uint32_t l_scanScomAddr = UNDEFINED_SCOM_ADDR; |
| |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if (i_ringId >= P10_RID::NUM_RING_IDS) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| { |
| - MY_ERR("ringid_get_scanScomAddr(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| - " allowed\n", |
| - i_ringId, P10_RID::NUM_RING_IDS); |
| + MY_ERR("ringid_get_scanScomAddr(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| + " allowed and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| rc = TOR_INVALID_RING_ID; |
| break; |
| } |
| |
| - l_scanScomAddr = P10_RID::RING_PROPERTIES[i_ringId].scanScomAddr; |
| + l_scanScomAddr = P10_RID::RING_PROPERTIES[rpIndex].scanScomAddr; |
| break; |
| |
| default: |
| @@ -198,18 +201,22 @@ int ringid_get_ringClass( ChipId_t i_chipId, |
| int rc = INFRASTRUCT_RC_SUCCESS; |
| RingClass_t l_ringClass = UNDEFINED_RING_CLASS; |
| |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if (i_ringId >= P10_RID::NUM_RING_IDS) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| { |
| - MY_ERR("ringid_get_ringClass(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n", |
| - i_ringId, P10_RID::NUM_RING_IDS); |
| + MY_ERR("ringid_get_ringClass(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| + " allowed and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| rc = TOR_INVALID_RING_ID; |
| break; |
| } |
| |
| - l_ringClass = P10_RID::RING_PROPERTIES[i_ringId].ringClass; |
| + l_ringClass = P10_RID::RING_PROPERTIES[rpIndex].ringClass; |
| break; |
| |
| default: |
| @@ -227,33 +234,33 @@ int ringid_get_ringClass( ChipId_t i_chipId, |
| int ringid_check_ringId( ChipId_t i_chipId, |
| RingId_t i_ringId ) |
| { |
| - int rc = INFRASTRUCT_RC_SUCCESS; |
| + if ( i_ringId == HOLE_RING_ID ) |
| + { |
| + // A hole ring is benign. Let caller decide. |
| + return TOR_HOLE_RING_ID; |
| + } |
| + |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if ( strcmp(P10_RID::RING_PROPERTIES[i_ringId].ringName, "invalid") == 0 ) |
| + if ( rpIndex >= P10_RID::NUM_RING_IDS ) |
| { |
| - // There are ringId holes. This is harmless. No trace out. |
| - rc = TOR_HOLE_RING_ID; |
| - } |
| - else if ( i_ringId >= P10_RID::NUM_RING_IDS && i_ringId != UNDEFINED_RING_ID ) |
| - { |
| - // This is unlikely to happen, and shouldn't happen, so here we trace out. |
| - MY_ERR("ringid_check_ringId(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n", |
| - i_ringId, P10_RID::NUM_RING_IDS); |
| - rc = TOR_INVALID_RING_ID; |
| + // Not necessarily an error. Let caller decide. |
| + return TOR_INVALID_RING_ID; |
| } |
| |
| break; |
| |
| default: |
| - MY_ERR("ringid_check_ringId(): Unsupported chipId (=%d) supplied\n", i_chipId); |
| - rc = TOR_INVALID_CHIP_ID; |
| - break; |
| + MY_ERR("ERROR: ringid_check_ringId: Unsupported chipId(=0x%x) supplied\n", |
| + i_chipId); |
| + return TOR_INVALID_CHIP_ID; |
| } |
| |
| - return rc; |
| + return TOR_SUCCESS; |
| } |
| |
| |
| @@ -313,10 +320,21 @@ int ringid_get_chipletIndex( ChipId_t i_chipId, |
| MyBool_t ringid_is_mvpd_ring( ChipId_t i_chipId, |
| RingId_t i_ringId ) |
| { |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if ( P10_RID::RING_PROPERTIES[i_ringId].ringClass & RCLS_MVPD_MASK ) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| + { |
| + MY_ERR("ringid_is_mvpd_ring(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| + " allowed and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| + return UNDEFINED_BOOLEAN; |
| + } |
| + |
| + if ( P10_RID::RING_PROPERTIES[rpIndex].ringClass & RCLS_MVPD_MASK ) |
| { |
| return true; |
| } |
| @@ -325,6 +343,8 @@ MyBool_t ringid_is_mvpd_ring( ChipId_t i_chipId, |
| return false; |
| } |
| |
| + break; |
| + |
| default: |
| MY_ERR("ringid_is_mvpd_ring(): Unsupported chipId (=%d) supplied\n", i_chipId); |
| return UNDEFINED_BOOLEAN; |
| @@ -336,10 +356,21 @@ MyBool_t ringid_is_mvpd_ring( ChipId_t i_chipId, |
| MyBool_t ringid_is_gptr_ring( ChipId_t i_chipId, |
| RingId_t i_ringId ) |
| { |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if ( P10_RID::RING_PROPERTIES[i_ringId].ringClass & RMRK_GPTR_OVLY ) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| + { |
| + MY_ERR("ringid_is_gptr_ring(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| + " allowed and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| + return UNDEFINED_BOOLEAN; |
| + } |
| + |
| + if ( P10_RID::RING_PROPERTIES[rpIndex].ringClass & RMRK_GPTR_OVLY ) |
| { |
| return true; |
| } |
| @@ -348,6 +379,8 @@ MyBool_t ringid_is_gptr_ring( ChipId_t i_chipId, |
| return false; |
| } |
| |
| + break; |
| + |
| default: |
| MY_ERR("ringid_is_gptr_ring(): Unsupported chipId (=%d) supplied\n", i_chipId); |
| return UNDEFINED_BOOLEAN; |
| @@ -357,13 +390,51 @@ MyBool_t ringid_is_gptr_ring( ChipId_t i_chipId, |
| } |
| |
| |
| +MyBool_t ringid_is_instance_ring( RingId_t i_rpIndex) |
| +{ |
| + if (i_rpIndex >= P10_RID::NUM_RING_IDS) |
| + { |
| + MY_ERR("ringid_is_instance_ring(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n", |
| + i_rpIndex, P10_RID::NUM_RING_IDS); |
| + return UNDEFINED_BOOLEAN; |
| + } |
| + |
| + if ( P10_RID::RING_PROPERTIES[i_rpIndex].idxRing == UNDEFINED_RING_INDEX ) |
| + { |
| + return UNDEFINED_BOOLEAN; |
| + } |
| + |
| + if ( P10_RID::RING_PROPERTIES[i_rpIndex].idxRing & INSTANCE_RING_MARK ) |
| + { |
| + return true; |
| + } |
| + else |
| + { |
| + return false; |
| + } |
| + |
| + return UNDEFINED_BOOLEAN; |
| +} |
| + |
| + |
| MyBool_t ringid_has_derivs( ChipId_t i_chipId, |
| RingId_t i_ringId ) |
| { |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if ( P10_RID::RING_PROPERTIES[i_ringId].ringClass & RMRK_HAS_DERIVS ) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| + { |
| + MY_ERR("ringid_has_derivs(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not" |
| + " allowed and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| + return UNDEFINED_BOOLEAN; |
| + } |
| + |
| + if ( P10_RID::RING_PROPERTIES[rpIndex].ringClass & RMRK_HAS_DERIVS ) |
| { |
| return true; |
| } |
| @@ -372,6 +443,8 @@ MyBool_t ringid_has_derivs( ChipId_t i_chipId, |
| return false; |
| } |
| |
| + break; |
| + |
| default: |
| MY_ERR("ringid_has_derivs(): Unsupported chipId (=%d) supplied\n", i_chipId); |
| return UNDEFINED_BOOLEAN; |
| @@ -411,8 +484,9 @@ int ringidGetRootRingId( ChipId_t i_chipId, |
| int rc = INFRASTRUCT_RC_SUCCESS; |
| RingProperties_t* ringProps = NULL; |
| RingId_t numRingIds = UNDEFINED_RING_ID; |
| - RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter |
| - RingId_t l_ringId = UNDEFINED_RING_ID; |
| + RingId_t iRpIndex = UNDEFINED_RING_ID; // Ring properties index counter |
| + RingId_t rpIndexTmp = UNDEFINED_RING_ID; // Temporary RP index for bFound=true |
| + RingId_t l_ringId = UNDEFINED_RING_ID; // Local ringId, eventual output ringId |
| bool bFound = false; |
| |
| switch (i_chipId) |
| @@ -435,25 +509,26 @@ int ringidGetRootRingId( ChipId_t i_chipId, |
| |
| if (!rc) |
| { |
| - for ( iRingId = 0; iRingId < numRingIds; iRingId++ ) |
| + for ( iRpIndex = 0; iRpIndex < numRingIds; iRpIndex++ ) |
| { |
| - if ( ringProps[iRingId].scanScomAddr == i_scanScomAddr ) |
| + if ( ringProps[iRpIndex].scanScomAddr == i_scanScomAddr ) |
| { |
| - if ( ringProps[iRingId].ringClass & RMRK_ROOT ) |
| + if ( ringProps[iRpIndex].ringClass & RMRK_ROOT ) |
| { |
| if (bFound) |
| { |
| MY_ERR("ringidGetRootRingId(): Two rings w/same addr cannot both be" |
| " ROOT_RING. Fix RING_PROPERTIES list for chipId=%d at" |
| " ringId=0x%x and ringId=0x%x\n", |
| - i_chipId, l_ringId, iRingId); |
| - rc = INFRASTRUCT_RC_CODE_BUG; |
| + i_chipId, rpIndexTmp, iRpIndex); |
| l_ringId = UNDEFINED_RING_ID; |
| + rc = INFRASTRUCT_RC_CODE_BUG; |
| break; |
| } |
| else |
| { |
| - l_ringId = iRingId; |
| + rpIndexTmp = iRpIndex; |
| + l_ringId = ringProps[iRpIndex].ringId; |
| bFound = true; |
| |
| if (!i_bTest) |
| @@ -473,145 +548,6 @@ int ringidGetRootRingId( ChipId_t i_chipId, |
| { |
| // This is not a bug, but do tell caller that scanScomAddr wasn't found. |
| rc = TOR_SCOM_ADDR_NOT_FOUND; |
| - |
| - if (l_ringId != UNDEFINED_RING_ID) |
| - { |
| - MY_ERR("ringidGetRootRingId(): Did not find match for scanScomAddr=0x%08x for" |
| - " chipId=%d. However, l_ringId=0x%x cannot be different from" |
| - " UNDEFINED_RING_ID=0x%x. Fix code!\n", |
| - i_scanScomAddr, i_chipId, l_ringId, UNDEFINED_RING_ID); |
| - rc = INFRASTRUCT_RC_CODE_BUG; |
| - } |
| - } |
| - |
| - o_ringId = l_ringId; |
| - |
| - return rc; |
| -} |
| - |
| - |
| -int ringidGetRingId2( ChipId_t i_chipId, |
| - uint32_t i_torMagic, |
| - ChipletType_t i_chipletType, // Ignored if only one chiplet in torMagic |
| - uint8_t i_idxRing, // The effective ring index within chiplet's |
| - // common or instance ring section |
| - MyBool_t i_bInstCase, |
| - RingId_t& o_ringId, |
| - bool i_bTest ) |
| -{ |
| - int rc = INFRASTRUCT_RC_SUCCESS; |
| - ChipletType_t l_chipletType = UNDEFINED_CHIPLET_TYPE; |
| - RingProperties_t* ringProps = NULL; |
| - RingId_t numRingIds = UNDEFINED_RING_ID; |
| - RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter |
| - RingId_t l_ringId = UNDEFINED_RING_ID; |
| - uint8_t l_idxRing = UNDEFINED_RING_INDEX; |
| - bool bFound = false; |
| - bool bOverlap = false; |
| - |
| - // First, select the main ring list we need. And while we're at it, |
| - // convert input chipletType, which can be ignored for ring sections (i.e. torMagic) |
| - // with only one chiplet, to a valid chipletType |
| - switch (i_chipId) |
| - { |
| - case CID_P10: |
| - ringProps = (RingProperties_t*)&P10_RID::RING_PROPERTIES; |
| - numRingIds = P10_RID::NUM_RING_IDS; |
| - |
| - if ( i_torMagic == TOR_MAGIC_SBE || |
| - i_torMagic == TOR_MAGIC_OVRD || |
| - i_torMagic == TOR_MAGIC_OVLY || |
| - i_torMagic == TOR_MAGIC_DYN ) |
| - { |
| - l_chipletType = i_chipletType; |
| - } |
| - else if ( i_torMagic == TOR_MAGIC_QME ) |
| - { |
| - l_chipletType = P10_RID::EQ_TYPE; |
| - } |
| - else |
| - { |
| - MY_ERR("Invalid torMagic(=0x%08x) for chipId=CID_P10x=%d\n", i_torMagic, i_chipId); |
| - return TOR_INVALID_MAGIC_NUMBER; |
| - } |
| - |
| - break; |
| - |
| - default: |
| - MY_ERR("ringidGetRingId2(): Unsupported chipId (=%d) supplied\n", i_chipId); |
| - rc = TOR_INVALID_CHIP_ID; |
| - break; |
| - } |
| - |
| - // Second, convert effective input ring index (which has no instance marker) to the |
| - // common/instance specific index |
| - l_idxRing = i_bInstCase ? |
| - i_idxRing | INSTANCE_RING_MARK : |
| - i_idxRing; |
| - |
| - if (!rc) |
| - { |
| - for ( iRingId = 0; iRingId < numRingIds; iRingId++ ) |
| - { |
| - if ( ringProps[iRingId].chipletType == l_chipletType && |
| - ringProps[iRingId].idxRing == l_idxRing ) |
| - { |
| - if (bFound) |
| - { |
| - // Allow ring index overlap between a root and a non-root ring |
| - // and let the non-root (i.e., the bucket ring) "win" |
| - if ( !bOverlap && |
| - ( (ringProps[iRingId].ringClass & RMRK_ROOT) != |
| - (ringProps[l_ringId].ringClass & RMRK_ROOT) ) ) |
| - { |
| - if ( !(ringProps[iRingId].ringClass & RMRK_ROOT) ) |
| - { |
| - l_ringId = iRingId; |
| - } |
| - else |
| - { |
| - // Keep l_ringId as is since it must already be the non-root ring |
| - } |
| - |
| - bOverlap = true; // Indicate we found an overlap match |
| - |
| - if (!i_bTest) |
| - { |
| - // Stop testing and break our of ringId loop |
| - break; |
| - } |
| - } |
| - else |
| - { |
| - MY_ERR("ringidGetRingId2(): Two root, or two non-root, rings within a" |
| - " chiplet (chipletType=%d) cannot have the same ring index" |
| - " (idxRing=%d, bInst=%d). Fix RING_PROPERTIES list for chipId=%d" |
| - " at ringId=0x%x and ringId=0x%x\n", |
| - l_chipletType, i_idxRing, i_bInstCase, i_chipId, l_ringId, iRingId); |
| - rc = INFRASTRUCT_RC_CODE_BUG; |
| - l_ringId = UNDEFINED_RING_ID; |
| - break; |
| - } |
| - } |
| - else |
| - { |
| - l_ringId = iRingId; |
| - bFound = true; // Indicate we found a first match |
| - |
| - // Continue searching for ring index overlap due to bucket ring or code bug |
| - } |
| - } |
| - } |
| - } |
| - |
| - if (!rc && !bFound) |
| - { |
| - MY_ERR("ringidGetRingId2(): Could not find a match for (chipId,chipletType,idxRing,bInst) =" |
| - " (%d, %d, %d, %d). Fix RING_PROPERTIES list for chipId=%d (Note, l_ringId=0x%x" |
| - " better be equal to UNDEFINED_RING_ID=0x%x)\n", |
| - i_chipId, l_chipletType, i_idxRing, i_bInstCase, |
| - i_chipId, l_ringId, UNDEFINED_RING_ID); |
| - rc = INFRASTRUCT_RC_CODE_BUG; |
| } |
| |
| o_ringId = l_ringId; |
| @@ -643,16 +579,20 @@ std::map <std::string, ChipId_t> chipTypeToIdMap |
| { "explorer", (ChipId_t)CID_EXPLORER } |
| }; |
| |
| + |
| +// |
| +// Get ringId from ringName |
| +// |
| int ringidGetRingId1( ChipId_t i_chipId, |
| std::string i_ringName, |
| RingId_t& o_ringId, |
| bool i_bTest ) |
| { |
| - int rc = INFRASTRUCT_RC_SUCCESS; |
| + int rc = TOR_SUCCESS; |
| RingProperties_t* ringProps = NULL; |
| RingId_t numRingIds = UNDEFINED_RING_ID; |
| - RingId_t iRingId = UNDEFINED_RING_ID; // ringId loop counter |
| - RingId_t l_ringId = UNDEFINED_RING_ID; |
| + RingId_t iRpIndex = UNDEFINED_RING_ID; // Ring properties index counter |
| + RingId_t rpIndex = UNDEFINED_RING_ID; // The matching RP index |
| bool bFound = false; |
| |
| switch (i_chipId) |
| @@ -668,24 +608,30 @@ int ringidGetRingId1( ChipId_t i_chipId, |
| break; |
| } |
| |
| - if (!rc) |
| + if (rc) |
| + { |
| + return rc; |
| + } |
| + else |
| { |
| - for ( iRingId = 0; iRingId < numRingIds; iRingId++ ) |
| + // Search through RING_PROPERTIES for ringName match |
| + for ( iRpIndex = 0; iRpIndex < numRingIds; iRpIndex++ ) |
| { |
| - if ( !(i_ringName.compare(ringProps[iRingId].ringName)) ) |
| + if ( !(i_ringName.compare(ringProps[iRpIndex].ringName)) ) |
| { |
| if (bFound) |
| { |
| - MY_ERR("ringidGetRingId1(): Two rings cannot have the same ringName=%s. Fix" |
| - " RING_PROPERTIES list for chipId=%d at ringId=0x%x and ringId=0x%x\n", |
| - i_ringName.c_str(), i_chipId, l_ringId, iRingId); |
| - rc = INFRASTRUCT_RC_CODE_BUG; |
| - l_ringId = UNDEFINED_RING_ID; |
| + MY_ERR("ringidGetRingId1(): Two rings cannot have the same ringName=%s. Fix" |
| + " RING_PROPERTIES list for chipId=%d at rpIndex=0x%x and" |
| + " rpIndex=0x%x\n", |
| + i_ringName.c_str(), i_chipId, rpIndex, iRpIndex); |
| + rpIndex = UNDEFINED_RING_ID; |
| + rc = TOR_CODE_BUG; |
| break; |
| } |
| else |
| { |
| - l_ringId = iRingId; |
| + rpIndex = iRpIndex; |
| bFound = true; |
| |
| if (!i_bTest) |
| @@ -700,39 +646,62 @@ int ringidGetRingId1( ChipId_t i_chipId, |
| } |
| } |
| |
| - if (!rc && !bFound) |
| + if (rc) |
| + { |
| + return rc; |
| + } |
| + else if (bFound) |
| + { |
| + o_ringId = ringProps[rpIndex].ringId; |
| + rc = TOR_SUCCESS; |
| + } |
| + else |
| { |
| - MY_DBG("ringidGetRingId1(): Did not find match to ringName=%s for chipId=%d." |
| - " (Note, l_ringId=0x%x better be equal to UNDEFINED_RING_ID=0x%x)\n", |
| - i_ringName.c_str(), i_chipId, l_ringId, UNDEFINED_RING_ID); |
| + MY_DBG("ringidGetRingId1(): Did not find match to ringName=%s for chipId=%u" |
| + " (Note, rpIndex=0x%x better be equal to UNDEFINED_RING_ID=0x%x)\n", |
| + i_ringName.c_str(), i_chipId, rpIndex, UNDEFINED_RING_ID); |
| + o_ringId = UNDEFINED_RING_ID; |
| rc = TOR_RING_NAME_NOT_FOUND; |
| } |
| |
| - o_ringId = l_ringId; |
| - |
| return rc; |
| } |
| |
| |
| +// |
| +// Get ringName from ringId |
| +// |
| int ringidGetRingName( ChipId_t i_chipId, |
| RingId_t i_ringId, |
| std::string& o_ringName ) |
| { |
| int rc = INFRASTRUCT_RC_SUCCESS; |
| + RingProperties_t* ringProps = (RingProperties_t*)&P10_RID::RING_PROPERTIES; |
| std::string l_ringName; |
| |
| + // Get the ring properties (rp) index |
| + RingId_t rpIndex = P10_RID::ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| switch (i_chipId) |
| { |
| case CID_P10: |
| - if (i_ringId >= P10_RID::NUM_RING_IDS) |
| + if (rpIndex >= P10_RID::NUM_RING_IDS) |
| { |
| - MY_ERR("ringidGetRingName(): ringId(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed\n", |
| - i_ringId, P10_RID::NUM_RING_IDS); |
| + MY_ERR("ringidGetRingName(): rpIndex(=0x%x) >= NUM_RING_IDS(=0x%x) not allowed" |
| + " and ringId=0x%x\n", |
| + rpIndex, P10_RID::NUM_RING_IDS, i_ringId); |
| rc = TOR_INVALID_RING_ID; |
| break; |
| } |
| |
| - l_ringName = (std::string)P10_RID::RING_PROPERTIES[i_ringId].ringName; |
| + l_ringName = (std::string)ringProps[rpIndex].ringName; |
| + |
| + if (ringProps[rpIndex].ringId == HOLE_RING_ID) |
| + { |
| + rc = TOR_HOLE_RING_ID; |
| + break; |
| + } |
| + |
| break; |
| |
| default: |
| diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.H b/src/import/chips/common/utils/imageProcs/common_ringId.H |
| index 925c321..c2d0e59 100644 |
| --- a/src/import/chips/common/utils/imageProcs/common_ringId.H |
| +++ b/src/import/chips/common/utils/imageProcs/common_ringId.H |
| @@ -52,6 +52,7 @@ typedef uint16_t TorOffset_t; // Type for offset value to various TOR obje |
| typedef uint8_t MyBool_t; // false:0, true:1, undefined:UNDEFINED_BOOLEAN |
| |
| #define UNDEFINED_RING_ID (RingId_t)0xffff |
| +#define HOLE_RING_ID (RingId_t)0xeeee |
| #define UNDEFINED_SCOM_ADDR (uint32_t)0xffffffff |
| #define UNDEFINED_RING_CLASS (RingClass_t)0xffff |
| #define UNDEFINED_CHIPLET_TYPE (ChipletType_t)0xff |
| @@ -222,11 +223,12 @@ enum RingMarker |
| RMRK_TIME = (RingClass_t)0b0000000000010000, // Time ring marker bit |
| RMRK_MVPD_PDG = (RingClass_t)0b0000000010000000, // MVPD #G gptr/time ring marker bit |
| RMRK_MVPD_PDP = (RingClass_t)0b0000000100000000, // MVPD #P pll ring marker bit |
| - RMRK_MVPD_PDR = (RingClass_t)0b0000001000000000, // MVPD #G repr ring marker bit |
| - RMRK_MVPD_NEST = (RingClass_t)0b0000010000000000, // NEST (non-EQ) ring marker bit |
| - RMRK_MVPD_EQ = (RingClass_t)0b0000100000000000, // EQ (non-core) ring marker bit |
| - RMRK_MVPD_CORE = (RingClass_t)0b0001000000000000, // Core ring marker bit |
| - RMRK_SCAN_BY_QME = (RingClass_t)0b0010000000000000, // QME scannable ring marker bit |
| + RMRK_MVPD_PDR = (RingClass_t)0b0000001000000000, // MVPD #R repr ring marker bit |
| + RMRK_MVPD_PDS = (RingClass_t)0b0000010000000000, // MVPD #S dts ring marker bit |
| + RMRK_MVPD_NEST = (RingClass_t)0b0000100000000000, // NEST (non-EQ) ring marker bit |
| + RMRK_MVPD_EQ = (RingClass_t)0b0001000000000000, // EQ (non-core) ring marker bit |
| + RMRK_MVPD_CORE = (RingClass_t)0b0010000000000000, // Core ring marker bit |
| + RMRK_SCAN_BY_QME = (RingClass_t)0b0100000000000000, // QME scannable ring marker bit |
| }; |
| |
| // |
| @@ -245,6 +247,9 @@ enum RingMarker |
| #define RCLS_MVPD_PDR_NEST (RMRK_MVPD_PDR | RMRK_MVPD_NEST) |
| #define RCLS_MVPD_PDR_EQ (RMRK_MVPD_PDR | RMRK_MVPD_EQ) |
| #define RCLS_MVPD_PDR_CORE (RMRK_MVPD_PDR | RMRK_MVPD_CORE) |
| +#define RCLS_MVPD_PDS_NEST (RMRK_MVPD_PDS | RMRK_MVPD_NEST) |
| +#define RCLS_MVPD_PDS_EQ (RMRK_MVPD_PDS | RMRK_MVPD_EQ) |
| +#define RCLS_MVPD_PDS_CORE (RMRK_MVPD_PDS | RMRK_MVPD_CORE) |
| // MVPD keyword mask |
| #define RCLS_MVPD_MASK (RMRK_MVPD_PDG | RMRK_MVPD_PDP | RMRK_MVPD_PDR) |
| |
| @@ -273,6 +278,7 @@ enum RingRequest |
| typedef struct |
| { |
| #ifndef __PPE__ |
| + RingId_t ringId; |
| char ringName[MAX_RING_NAME_LENGTH]; |
| uint32_t scanScomAddr; |
| #endif |
| @@ -323,7 +329,7 @@ typedef struct |
| #define TOR_INVALID_MAGIC_NUMBER INFRASTRUCT_NOOF_RCS + 2 |
| #define TOR_INVALID_CHIP_ID INFRASTRUCT_NOOF_RCS + 3 |
| #define TOR_INVALID_CHIPLET_TYPE INFRASTRUCT_NOOF_RCS + 4 |
| -#define TOR_INVALID_RING_ID INFRASTRUCT_NOOF_RCS + 5 |
| +#define TOR_INVALID_RING_ID INFRASTRUCT_NOOF_RCS + 5 // ringId falls outside Mvpd and Ekb range |
| #define TOR_INVALID_CHIPLET_ID INFRASTRUCT_NOOF_RCS + 6 |
| #define TOR_INVALID_RING_REQUEST INFRASTRUCT_NOOF_RCS + 7 |
| #define TOR_UNSUPPORTED_RING_SECTION INFRASTRUCT_NOOF_RCS + 8 |
| @@ -341,7 +347,7 @@ typedef struct |
| #define TOR_RING_NAME_NOT_FOUND INFRASTRUCT_NOOF_RCS + 20 |
| #define TOR_NO_RINGS_FOR_CHIP INFRASTRUCT_NOOF_RCS + 21 |
| #define TOR_DYN_RING_NOT_FOUND INFRASTRUCT_NOOF_RCS + 22 |
| -#define TOR_HOLE_RING_ID INFRASTRUCT_NOOF_RCS + 23 |
| +#define TOR_HOLE_RING_ID INFRASTRUCT_NOOF_RCS + 23 // ringId is a "hole" ring |
| |
| // This function returns the main ring properties list associated w/the chip ID. |
| int ringid_get_ringProps( ChipId_t i_chipId, |
| @@ -388,6 +394,9 @@ MyBool_t ringid_is_mvpd_ring( ChipId_t i_chipId, |
| MyBool_t ringid_is_gptr_ring( ChipId_t i_chipId, |
| RingId_t i_ringId ); |
| |
| +// Check if ring is a Common or Instance ring |
| +MyBool_t ringid_is_instance_ring( RingId_t i_rpIndex); |
| + |
| // Check if ring has derivative, eg if it has bucket rings. Note that the actual |
| // derivative ring itself, eg the *_bucket_n ring, will *not* be marked as derivative. |
| // Only the "root ring", eg that does *not* have the *_bucket_n suffix, will be marked. |
| @@ -425,17 +434,6 @@ int ringidGetRootRingId( ChipId_t i_chipId, |
| RingId_t& o_ringId, |
| bool i_bTest = false ); |
| |
| -// This function returns the ringId associated with the effective ring index within a chiplet. |
| -// (Note that "effective" means the index is void of the instance marker bit.) |
| -int ringidGetRingId2( ChipId_t i_chipId, |
| - uint32_t i_torMagic, |
| - ChipletType_t i_chipletType, // Ignored if only one chiplet in torMagic |
| - uint8_t i_idxRing, // The eEffective ring index within chiplet's |
| - // common or instance ring section |
| - MyBool_t i_bInstCase, // =0 common ring, =1 instance ring |
| - RingId_t& o_ringId, |
| - bool i_bTest = false ); |
| - |
| // This fumction returns the ringClass associated with the ringId. |
| int ringidGetRingClass( ChipId_t i_chipId, |
| RingId_t i_ringId, |
| diff --git a/src/import/chips/p10/procedures/hwp/accessors/p10_get_mvpd_ring.C b/src/import/chips/p10/procedures/hwp/accessors/p10_get_mvpd_ring.C |
| index d439f9c..353fcf6 100644 |
| --- a/src/import/chips/p10/procedures/hwp/accessors/p10_get_mvpd_ring.C |
| +++ b/src/import/chips/p10/procedures/hwp/accessors/p10_get_mvpd_ring.C |
| @@ -5,7 +5,7 @@ |
| /* */ |
| /* OpenPOWER HostBoot Project */ |
| /* */ |
| -/* Contributors Listed Below - COPYRIGHT 2012,2019 */ |
| +/* Contributors Listed Below - COPYRIGHT 2012,2020 */ |
| /* [+] International Business Machines Corp. */ |
| /* */ |
| /* */ |
| @@ -60,7 +60,7 @@ extern "C" |
| { |
| fapi2::ReturnCode l_fapirc; |
| |
| - FAPI_DBG("getMvpdRing: Called w/ringId=0x%x, chipletSel=0x%8x, size=0x%x", |
| + FAPI_DBG("getMvpdRing: Called w/ringId=0x%x, chipletSel=0x%08x and bufsize=0x%x", |
| i_ringId, |
| i_chipletSel, |
| io_rRingBufsize ); |
| @@ -76,7 +76,7 @@ extern "C" |
| io_rRingBufsize ); |
| |
| |
| - FAPI_DBG("getMvpdRing: exit rc=0x%x", |
| + FAPI_DBG("getMvpdRing: Exit w/rc=0x%08x", |
| static_cast<uint32_t>(l_fapirc) ); |
| |
| return l_fapirc; |
| diff --git a/src/import/chips/p10/procedures/hwp/accessors/p10_mvpd_ring_funcs.C b/src/import/chips/p10/procedures/hwp/accessors/p10_mvpd_ring_funcs.C |
| index be8b6ea..da74045 100644 |
| --- a/src/import/chips/p10/procedures/hwp/accessors/p10_mvpd_ring_funcs.C |
| +++ b/src/import/chips/p10/procedures/hwp/accessors/p10_mvpd_ring_funcs.C |
| @@ -483,12 +483,10 @@ extern "C" |
| // found it, return pointer to ring |
| *o_pScanData = l_pScanData; |
| |
| - FAPI_DBG("mvpdRingFuncFindHdr: found RS4 ring for " |
| - "chipletSel 0x%08x and ringId %d " |
| - "at address 0x%x and with size %d", |
| + FAPI_DBG("mvpdRingFuncFindHdr: Found RS4 ring for chipletSel=0x%08x and" |
| + " ringId=0x%x and ring size=%u", |
| i_chipletSel, |
| i_ringId, |
| - *o_pScanData, |
| be16toh((*o_pScanData)->iv_size)); |
| } |
| } |
| @@ -552,20 +550,19 @@ extern "C" |
| uint32_t l_prevLen; |
| uint32_t l_recordBufLenLeft = i_recordBufLen; |
| |
| - FAPI_DBG("mvpdRingFuncFind: Called w/chipletSel=0x%08x, ringId=0x%x ", |
| + FAPI_IMP("mvpdRingFuncFind: Enter w/chipletSel=0x%08x and ringId=0x%x ", |
| i_chipletSel, |
| i_ringId); |
| |
| - // Find first RSA data block in ring (fixed offset defined by |
| - // MVPD spec) |
| + // Find first RSA data block in ring (fixed offset defined by MVPD spec) |
| // |
| - // First byte in record should be the version number, skip |
| - // over this. |
| + // First byte in record's keyword is the version number which we skip |
| // |
| - FAPI_DBG( "mvpdRingFuncFind: record version = 0x%x", *i_pRecordBuf ); |
| i_pRecordBuf++; |
| l_recordBufLenLeft--; |
| |
| + o_rRingLen = 0; // Just making sure this is zero in case of a fail or not found |
| + |
| do |
| { |
| // let's track the previous size of the remaining buffer, |
| @@ -610,12 +607,6 @@ extern "C" |
| { |
| o_rpRing = (uint8_t*)l_pScanData; |
| o_rRingLen = be16toh(l_pScanData->iv_size); |
| - |
| - // Dump record info for debug |
| - FAPI_DBG("mvpdRingFuncFind:ringId=0x%x chipletSel=0x%08x size=0x%x", |
| - i_ringId, |
| - i_chipletSel, |
| - be16toh(l_pScanData->iv_size)); |
| } |
| else |
| { |
| @@ -629,13 +620,12 @@ extern "C" |
| // get current error |
| l_fapirc = fapi2::current_err; |
| |
| - FAPI_DBG("mvpdRingFuncFind: exit *ring= 0x%p", o_rpRing); |
| - FAPI_IMP("mvpdRingFuncFind: exit chipletSel=0x%08x, ringId=0x%x size=0x%x" |
| - " rc=0x%x", |
| + FAPI_IMP("mvpdRingFuncFind: Exit w/rc=0x%08x for chipletSel=0x%08x, ringId=0x%x and" |
| + " ring size=%u (if size==0, then something failed)", |
| + static_cast<uint32_t>(l_fapirc), |
| i_chipletSel, |
| i_ringId, |
| - o_rRingLen, |
| - static_cast<uint32_t>(l_fapirc) ); |
| + o_rRingLen); |
| |
| return l_fapirc; |
| } |
| @@ -717,7 +707,7 @@ extern "C" |
| "Test0x80: iv_ringId=0x%x vs i_ringId=0x%x \n" |
| "Test0x80: iv_scanAddr=0x%x vs i_chipletSel=0x%08x \n" |
| "Test0x80: iv_size=0x%x vs i_ringBufsize=0x%x vs sizeof(CompressedScanData)=0x%x \n" |
| - "Fail test vector: 0x0x%02x", |
| + "Fail test vector: 0x%02x", |
| be16toh(i_pRingBuf->iv_magic), RS4_MAGIC, |
| be16toh(i_pRingBuf->iv_ringId), i_ringId, |
| be32toh(i_pRingBuf->iv_scanAddr), i_chipletSel, |
| @@ -779,7 +769,7 @@ extern "C" |
| } |
| |
| // we're good, copy data into the passed-in buffer |
| - FAPI_DBG( "mvpdRingFuncGet: memcpy 0x%p 0x%p 0x%x", |
| + FAPI_DBG( "mvpdRingFuncGet: memcpy(0x%p,0x%p,%u)", |
| i_pCallerRingBuf, |
| i_pRing, |
| i_ringLen ); |
| @@ -824,9 +814,9 @@ extern "C" |
| io_rCallerRingBufLen = i_ringLen; |
| } |
| |
| - FAPI_DBG( "mvpdRingFuncGet: exit bufsize= 0x%x rc= 0x%x", |
| - io_rCallerRingBufLen, |
| - static_cast<uint32_t>(l_fapirc) ); |
| + FAPI_DBG( "mvpdRingFuncGet: Exit w/rc=0x%08x and w/bufsize=0x%x", |
| + static_cast<uint32_t>(l_fapirc), |
| + io_rCallerRingBufLen ); |
| |
| return l_fapirc; |
| } |
| diff --git a/src/import/chips/p10/procedures/hwp/customize/p10_ipl_customize.C b/src/import/chips/p10/procedures/hwp/customize/p10_ipl_customize.C |
| index f5f743b..eeb380b 100644 |
| --- a/src/import/chips/p10/procedures/hwp/customize/p10_ipl_customize.C |
| +++ b/src/import/chips/p10/procedures/hwp/customize/p10_ipl_customize.C |
| @@ -44,7 +44,7 @@ |
| |
| #include <p10_ipl_customize.H> |
| #include <p10_ipl_image.H> |
| -#include <p10_ring_id.H> |
| +#include <p10_ringId.H> |
| #include <p10_tor.H> |
| #include <p10_scan_compression.H> |
| #include <p10_infrastruct_help.H> |
| @@ -187,7 +187,7 @@ fapi2::ReturnCode writePG( |
| set_CHIP_UNIT_POS(l_unit_id). |
| set_PG_INDEX(l_pg_idx). |
| set_IMG_PG_ENTRIES(IMG_PG_ENTRIES), |
| - "Code bug: Invalid translation from PERV chip unit position" |
| + "CODE BUG: Invalid translation from PERV chip unit position" |
| " to image PG index: l_pg_idx=%d, IMG_PG_ENTRIES=%d", |
| l_pg_idx, IMG_PG_ENTRIES ); |
| |
| @@ -321,7 +321,7 @@ fapi_try_exit: |
| // void* io_rs4Ring: Contains target RS4 ring on input and final overlaid RS4 ring on output |
| // void* io_workBuf: Work buffer (has final overlaid raw ring on output) |
| // void* i_ovlyRawRing: Raw data+care overlay ring |
| -// uint32_t i_ovlyRawSize: Overlay raw ring size |
| +// uint32_t i_ovlyRawLength: Overlay raw ring bit length |
| // CompressedScanData* i_rs4RefHdr: Reference ring to get header data from (assumed volatile) |
| // uint8_t i_rs4TypeField: iv_type to be used for final RS4 ring |
| // |
| @@ -339,7 +339,7 @@ fapi2::ReturnCode apply_overlay_ring( |
| void* io_rs4Ring, |
| void* io_workBuf, |
| void* i_ovlyRawRing, |
| - uint32_t i_ovlyRawSize, |
| + uint32_t i_ovlyRawLength, |
| CompressedScanData* i_rs4RefHeader, |
| uint8_t i_rs4TypeField) |
| { |
| @@ -351,11 +351,9 @@ fapi2::ReturnCode apply_overlay_ring( |
| // Pt to our Target/Final raw work buffers |
| uint8_t* dataTgt = (uint8_t*)io_workBuf; |
| uint8_t* careTgt = (uint8_t*)io_workBuf + MAX_RING_BUF_SIZE / 2; |
| - uint32_t tgtRawSize = 0; |
| + uint32_t tgtRawLength = 0; |
| MyBool_t bOvrd = UNDEFINED_BOOLEAN; |
| |
| - FAPI_DBG("Entering apply_overlay_ring"); |
| - |
| // Copy the key RS4 ref header settings into local struct before we, possibly, |
| // contaminate i_rs4RefHeader as this may be pointing to one of our work |
| // buffers. |
| @@ -365,12 +363,15 @@ fapi2::ReturnCode apply_overlay_ring( |
| l_rs4RefHeader.iv_ringId = be16toh(i_rs4RefHeader->iv_ringId); |
| l_rs4RefHeader.iv_scanAddr = be32toh(i_rs4RefHeader->iv_scanAddr); |
| |
| + FAPI_DBG("Entering apply_overlay_ring w/ringId=0x%0x and rawLength=%u", |
| + l_rs4RefHeader.iv_ringId, i_ovlyRawLength); |
| + |
| // Decompress the ring to apply overlay onto, io_rs4Ring. |
| l_rc = _rs4_decompress( |
| dataTgt, |
| careTgt, |
| MAX_RING_BUF_SIZE / 2, // Max allowable raw ring size (in bytes) |
| - &tgtRawSize, // Actual raw ring size (in bits) on return. |
| + &tgtRawLength, // Actual raw ring size (in bits) on return. |
| (CompressedScanData*)io_rs4Ring ); |
| |
| FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| @@ -385,13 +386,13 @@ fapi2::ReturnCode apply_overlay_ring( |
| l_rc, l_rs4RefHeader.iv_ringId, MAX_RING_BUF_SIZE ); |
| |
| // Compare raw Target and Overlay raw ring lengths |
| - FAPI_ASSERT( i_ovlyRawSize == tgtRawSize, |
| + FAPI_ASSERT( i_ovlyRawLength == tgtRawLength, |
| fapi2::XIPC_TARGET_OVLY_RAW_RING_LENGTH_MISMATCH(). |
| set_CHIP_TARGET(i_procTarget). |
| - set_TARGET_RAW_RING_LENGTH(tgtRawSize). |
| - set_OVLY_RAW_RING_LENGTH(i_ovlyRawSize), |
| + set_TARGET_RAW_RING_LENGTH(tgtRawLength). |
| + set_OVLY_RAW_RING_LENGTH(i_ovlyRawLength), |
| "ERROR: Target ring raw length(=%u) and overlay ring raw length(=%u) don't match.", |
| - tgtRawSize, i_ovlyRawSize); |
| + tgtRawLength, i_ovlyRawLength); |
| |
| // Check ring's iv_type is either override or flush |
| bOvrd = rs4_is_ovrd(&l_rs4RefHeader); |
| @@ -413,7 +414,7 @@ fapi2::ReturnCode apply_overlay_ring( |
| // |
| uint32_t i, j; |
| |
| - for (i = 0; i < tgtRawSize / 8; i++) |
| + for (i = 0; i < tgtRawLength / 8; i++) |
| { |
| if (careOvly[i] > 0) |
| { |
| @@ -445,15 +446,15 @@ fapi2::ReturnCode apply_overlay_ring( |
| } |
| |
| // Processing remainder of data & care bits (mod 8) |
| - if (tgtRawSize % 8) |
| + if (tgtRawLength % 8) |
| { |
| - i = tgtRawSize / 8; |
| + i = tgtRawLength / 8; |
| |
| - careOvly[i] &= ~(0xFF << (8 - (tgtRawSize % 8))); |
| + careOvly[i] &= ~(0xFF << (8 - (tgtRawLength % 8))); |
| |
| if (careOvly[i] > 0) |
| { |
| - for (j = 0; j < tgtRawSize % 8; j++) |
| + for (j = 0; j < tgtRawLength % 8; j++) |
| { |
| if (careOvly[i] & (0x80 >> j)) |
| { |
| @@ -486,7 +487,7 @@ fapi2::ReturnCode apply_overlay_ring( |
| MAX_RING_BUF_SIZE, |
| dataTgt, |
| careTgt, |
| - tgtRawSize, |
| + tgtRawLength, |
| l_rs4RefHeader.iv_scanAddr, |
| l_rs4RefHeader.iv_ringId, |
| UNDEFINED_RS4_SELECTOR, |
| @@ -1103,33 +1104,49 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| Rs4Selector_t i_numberOfFeatures, |
| void* i_dynamicRingSection ) |
| { |
| - ReturnCode l_fapiRc = fapi2::FAPI2_RC_SUCCESS; |
| + ReturnCode l_fapiRc = fapi2::FAPI2_RC_SUCCESS; |
| fapi2::current_err = fapi2::FAPI2_RC_SUCCESS; |
| - int l_rc = INFRASTRUCT_RC_SUCCESS;; |
| - |
| - FAPI_DBG("_fetch_and_insert_vpd_ring: (ringId,chipletSel) = (0x%x,0x%08x)", |
| - i_ringId, i_chipletSel); |
| + int l_rc = INFRASTRUCT_RC_SUCCESS;; |
| + RingId_t rpIndex = UNDEFINED_RING_ID; |
| + RingClass_t ringClass = UNDEFINED_RING_CLASS; |
| + TorHeader_t* torHeader = (TorHeader_t*)i_ringSection; |
| |
| void* vpdRing = NULL; |
| uint32_t vpdRingSize = 0; |
| void* finalVpdRing = NULL; |
| - MvpdKeyword l_mvpdKeyword; |
| - uint8_t l_chipletId = (uint8_t)(i_chipletSel >> 24); |
| + MvpdKeyword mvpdKeyword; |
| + uint8_t chipletId = (uint8_t)(i_chipletSel >> 24); |
| + |
| + FAPI_DBG("_fetch_and_insert_vpd_ring: (ringId,chipletSel) = (0x%x,0x%08x)", |
| + i_ringId, i_chipletSel); |
| + |
| + // Check the ringId validity, then get the ring properties (rp) index |
| + l_rc = ringid_check_ringId( torHeader->chipId, i_ringId); |
| + |
| + FAPI_ASSERT( l_rc == TOR_SUCCESS, |
| + fapi2::XIPC_CODE_BUG(). |
| + set_CHIP_TARGET(i_procTarget). |
| + set_OCCURRENCE(3), |
| + "CODE BUG(3): ringid_check_ringId() failed w/rc=0x%08x. Calling code must make" |
| + " sure it passes valid ringId(=0x%x) to _fetch(). Fix calling code.\n", |
| + l_rc, i_ringId); |
| |
| - RingClass_t l_ringClass = i_ringProps[i_ringId].ringClass; |
| + rpIndex = ringid_convert_ringId_to_rpIndex( i_ringId); |
| |
| - switch (l_ringClass & RCLS_MVPD_MASK) |
| + ringClass = i_ringProps[rpIndex].ringClass; |
| + |
| + switch (ringClass & RCLS_MVPD_MASK) |
| { |
| case RMRK_MVPD_PDG: // #G Time rings |
| - l_mvpdKeyword = fapi2::MVPD_KEYWORD_PDG; |
| + mvpdKeyword = fapi2::MVPD_KEYWORD_PDG; |
| break; |
| |
| case RMRK_MVPD_PDP: // #P Pll rings |
| - l_mvpdKeyword = fapi2::MVPD_KEYWORD_PDP; |
| + mvpdKeyword = fapi2::MVPD_KEYWORD_PDP; |
| break; |
| |
| case RMRK_MVPD_PDR: // #R Repair rings |
| - l_mvpdKeyword = fapi2::MVPD_KEYWORD_PDR; |
| + mvpdKeyword = fapi2::MVPD_KEYWORD_PDR; |
| break; |
| |
| default: |
| @@ -1137,11 +1154,11 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| fapi2::XIPC_INVALID_MVPD_RINGCLASS(). |
| set_CHIP_TARGET(i_procTarget). |
| set_RING_ID(i_ringId). |
| - set_RING_CLASS(l_ringClass). |
| + set_RING_CLASS(ringClass). |
| set_KWD_MASK(RCLS_MVPD_MASK), |
| - "Code bug: Unsupported value of ringClass (=0x%4x) or keyword" |
| + "CODE BUG: Unsupported value of ringClass (=0x%4x) or keyword" |
| " mask (=0x%4x) for ringId=0x%x", |
| - l_ringClass, RCLS_MVPD_MASK, i_ringId ); |
| + ringClass, RCLS_MVPD_MASK, i_ringId ); |
| break; |
| } |
| |
| @@ -1158,7 +1175,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| |
| l_fapiRc = getMvpdRing( i_procTarget, |
| MVPD_RECORD_CP00, |
| - l_mvpdKeyword, |
| + mvpdKeyword, |
| i_chipletSel, |
| i_ringId, |
| (uint8_t*)vpdRing, |
| @@ -1194,7 +1211,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| set_CHIPLET_SEL(i_chipletSel). |
| set_MVPD_CHIPLET_SEL(vpdChipletSel). |
| set_RING_ID(i_ringId), |
| - "_fetch_and_insert_vpd_ring: Code bug: VPD ring's chipletSel" |
| + "CODE BUG: _fetch_and_insert_vpd_ring: VPD ring's chipletSel" |
| " (=0x%08x) doesn't match the requested chipletSel (=0x%08x)", |
| vpdChipletSel, i_chipletSel ); |
| |
| @@ -1203,17 +1220,17 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| fapi2::XIPC_MVPD_RING_SIZE_MESS(). |
| set_CHIP_TARGET(i_procTarget). |
| set_RING_ID(i_ringId). |
| - set_CHIPLET_ID(l_chipletId). |
| + set_CHIPLET_ID(chipletId). |
| set_RING_BUFFER_SIZE(i_ringBufSize1). |
| set_MVPD_RING_SIZE(vpdRingSize), |
| - "_fetch_and_insert_vpd_ring: Code bug: VPD ring size (=0x%X) exceeds" |
| + "ERROR: _fetch_and_insert_vpd_ring: MVPD ring size (=0x%X) exceeds" |
| " allowed ring buffer size (=0x%X)", |
| vpdRingSize, i_ringBufSize1 ); |
| |
| // Check for Gptr ring in the .overlays section and if found overlay it onto |
| // the Mvpd-Gptr ring. Further, check for Gptr rings in the .dynamic section |
| // and if found overlay them onto the previously overlaid Gptr ring. |
| - if ( l_ringClass & RMRK_GPTR_OVLY ) |
| + if ( ringClass & RMRK_GPTR_OVLY ) |
| { |
| FAPI_TRY( process_gptr_rings( |
| i_procTarget, |
| @@ -1270,19 +1287,19 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| set_CHIP_TARGET(i_procTarget). |
| set_LOCAL_RC(l_rc). |
| set_RING_ID(i_ringId). |
| - set_CHIPLET_ID(l_chipletId). |
| + set_CHIPLET_ID(chipletId). |
| set_REDUNDANT(redundant). |
| set_OCCURRENCE(1), |
| "ERROR: rs4_redundant failed w/rc=0x%08x or redundant=%u for" |
| " ringId=0x%x, chipletId=0x%02x, occurrence=1 ", |
| - l_rc, redundant, i_ringId, l_chipletId ); |
| + l_rc, redundant, i_ringId, chipletId ); |
| |
| if (redundant) |
| { |
| io_ringStatusInMvpd = RING_REDUNDANT; |
| |
| FAPI_DBG("Skipping redundant MVPD ring: ringId=0x%x, chipletId=0x%02x ", |
| - i_ringId, l_chipletId); |
| + i_ringId, chipletId); |
| fapi2::current_err = RC_XIPC_RING_IS_REDUNDANT; |
| goto fapi_try_exit; |
| } |
| @@ -1312,7 +1329,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| set_SIZE_OF_THIS_RING(vpdRingSize). |
| set_MAX_RING_SECTION_SIZE(i_maxRingSectionSize). |
| set_RING_ID(i_ringId). |
| - set_CHIPLET_ID(l_chipletId). |
| + set_CHIPLET_ID(chipletId). |
| set_CURRENT_BOOT_CORE_MASK(io_bootCoreMask), |
| "Ran out of image buffer space trying to append a ring" |
| " to the .rings section\n" |
| @@ -1323,7 +1340,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| "maxRingSectionSize: %d\n" |
| "Current bootCoreMask: 0x%08x", |
| i_ringId, |
| - l_chipletId, |
| + chipletId, |
| vpdRingSize, |
| io_ringSectionSize, |
| i_maxRingSectionSize, |
| @@ -1335,7 +1352,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| i_ringSection, |
| i_maxRingSectionSize, |
| i_ringId, |
| - l_chipletId, |
| + chipletId, |
| finalVpdRing ); |
| |
| FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| @@ -1347,11 +1364,11 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| "tor_append_ring() failed in sysPhase=%d w/rc=%d for ringId=0x%x", |
| i_sysPhase, l_rc, i_ringId ); |
| |
| - io_ringSectionSize = be32toh(((TorHeader_t*)i_ringSection)->size); |
| + io_ringSectionSize = be32toh(torHeader->size); |
| |
| FAPI_IMP("Successfully appended Mvpd ring w/(ringId,chipletId)=(0x%x,0x%02x) and now" |
| " ringSectionSize=%u", |
| - i_ringId, l_chipletId, io_ringSectionSize); |
| + i_ringId, chipletId, io_ringSectionSize); |
| } |
| else if ((uint32_t)l_fapiRc == RC_MVPD_RING_NOT_FOUND) |
| { |
| @@ -1362,7 +1379,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| // rings we're looking for in Mvpd really should be represented there. |
| FAPI_DBG("INFO(NOT-A-BUG): _fetch_and_insert_vpd_rings(): The ring w/" |
| "(ringId,chipletId)=(0x%x,0x%02x) was not found.", |
| - i_ringId, l_chipletId); |
| + i_ringId, chipletId); |
| |
| fapi2::current_err = fapi2::FAPI2_RC_SUCCESS; |
| } |
| @@ -1379,7 +1396,7 @@ fapi2::ReturnCode _fetch_and_insert_vpd_rings( |
| fapi2::XIPC_MVPD_RING_SIZE_TOO_BIG(). |
| set_CHIP_TARGET(i_procTarget). |
| set_RING_ID(i_ringId). |
| - set_CHIPLET_ID(l_chipletId). |
| + set_CHIPLET_ID(chipletId). |
| set_RING_BUFFER_SIZE(i_ringBufSize1). |
| set_MVPD_RING_SIZE(vpdRingSize), |
| "_fetch_and_insert_vpd_ring(): VPD ring size (=0x%X) exceeds" |
| @@ -1443,12 +1460,13 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| uint32_t i_ringBufSize2, |
| void* i_ringBuf3, |
| uint32_t i_ringBufSize3, |
| - uint32_t& io_bootCoreMask, |
| std::map<Rs4Selector_t, Rs4Selector_t>& i_idxFeatureMap, |
| std::map<RingId_t, uint64_t>& io_ringIdFeatureVecMap, |
| Rs4Selector_t i_numberOfFeatures, |
| void* i_dynamicRingSection, |
| - uint8_t i_ddLevel ) |
| + uint8_t i_ddLevel, |
| + RingProperties_t* i_ringProps, |
| + uint32_t& io_bootCoreMask ) |
| { |
| |
| ReturnCode l_fapiRc = fapi2::FAPI2_RC_SUCCESS; |
| @@ -1498,45 +1516,34 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| // 1- Add all NEST rings |
| // 2- Add QUAD rings in EC order |
| |
| - RingId_t l_ringId; |
| - RingClass_t l_ringClass; |
| - RingProperties_t* l_ringProps; |
| + RingId_t rpIndex; // Ring properties (rp) index counter |
| + RingClass_t ringClass; |
| ChipletData_t* l_chipletData; |
| ChipletData_t* l_chipletDataEQ, *l_chipletDataEC; |
| uint8_t l_chipletId; // Nibbles {0,1} of scanScomAddr |
| uint32_t l_regionSel; // Nibbles {2,4,5,6} of scanScomAddr (region select target) |
| uint32_t l_chipletSel; // Combination of chipletId and regionSel |
| |
| - l_rc = ringid_get_ringProps( CID_P10, &l_ringProps); |
| - |
| - FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| - fapi2::XIPC_RINGID_RINGPROPS_ERROR(). |
| - set_CHIP_TARGET(i_procTarget). |
| - set_LOCAL_RC(l_rc). |
| - set_OCCURRENCE(1), |
| - "ringid_get_ringProps(): Failed w/rc=%i for occurrence=1", |
| - l_rc ); |
| - |
| |
| // ---------------------------------------------------- |
| // 1- Add all common rings (ie, non-EQ/core repr rings) |
| // ---------------------------------------------------- |
| l_ringType = COMMON_RING; |
| |
| - for ( l_ringId = 0; l_ringId < NUM_RING_IDS; l_ringId++ ) |
| + for ( rpIndex = 0; rpIndex < NUM_RING_IDS; rpIndex++ ) |
| { |
| |
| - l_ringClass = l_ringProps[l_ringId].ringClass; |
| + ringClass = i_ringProps[rpIndex].ringClass; |
| |
| - if ( ( l_ringClass != UNDEFINED_RING_CLASS ) && |
| - ( l_ringClass & RCLS_MVPD_MASK ) && |
| - ( (l_ringClass & RCLS_MVPD_PDR_EQ) != RCLS_MVPD_PDR_EQ ) && |
| - ( (l_ringClass & RCLS_MVPD_PDR_CORE) != RCLS_MVPD_PDR_CORE ) ) |
| + if ( ( ringClass != UNDEFINED_RING_CLASS ) && |
| + ( ringClass & RCLS_MVPD_MASK ) && |
| + ( (ringClass & RCLS_MVPD_PDR_EQ) != RCLS_MVPD_PDR_EQ ) && |
| + ( (ringClass & RCLS_MVPD_PDR_CORE) != RCLS_MVPD_PDR_CORE ) ) |
| { |
| l_rc = ringid_get_chipletProps( CID_P10, |
| torMagic, |
| torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| + i_ringProps[rpIndex].chipletType, |
| &l_chipletData ); |
| |
| FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| @@ -1545,16 +1552,16 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| set_LOCAL_RC(l_rc). |
| set_TOR_MAGIC(torMagic). |
| set_TOR_VER(torVersion). |
| - set_CHIPLET_TYPE(l_ringProps[l_ringId].chipletType). |
| - set_RING_ID(l_ringId). |
| + set_CHIPLET_TYPE(i_ringProps[rpIndex].chipletType). |
| + set_RING_ID(i_ringProps[rpIndex].ringId). |
| set_OCCURRENCE(1), |
| "ringid_get_chipletProps(): Failed w/rc=%i for" |
| " TOR magic = 0x%04x, TOR version = %d," |
| " chipletType = %d, ringId = 0x%x," |
| " occurrence=1", |
| l_rc, torMagic, torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| - l_ringId ); |
| + i_ringProps[rpIndex].chipletType, |
| + i_ringProps[rpIndex].ringId ); |
| |
| l_chipletId = l_chipletData->chipletBaseId; |
| l_chipletSel = ((uint32_t)l_chipletId) << 24; |
| @@ -1564,7 +1571,7 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| // - Fetch QME scannable VPD rings for QME. |
| |
| if ( i_sysPhase == SYSPHASE_HB_SBE || |
| - ( i_sysPhase == SYSPHASE_RT_QME && ( l_ringClass & RMRK_SCAN_BY_QME ) ) ) |
| + ( i_sysPhase == SYSPHASE_RT_QME && ( ringClass & RMRK_SCAN_BY_QME ) ) ) |
| { |
| l_fapiRc = _fetch_and_insert_vpd_rings ( |
| i_procTarget, |
| @@ -1580,8 +1587,8 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| i_ringBufSize2, |
| i_ringBuf3, |
| i_ringBufSize3, |
| - l_ringProps, |
| - l_ringId, |
| + i_ringProps, |
| + i_ringProps[rpIndex].ringId, |
| l_chipletSel, |
| l_ringStatusInMvpd, |
| l_bImgOutOfSpace, |
| @@ -1630,7 +1637,7 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| continue; |
| } |
| |
| - for ( l_ringId = 0; l_ringId < NUM_RING_IDS; l_ringId++ ) |
| + for ( rpIndex = 0; rpIndex < NUM_RING_IDS; rpIndex++ ) |
| { |
| |
| // |
| @@ -1641,18 +1648,18 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| // consistent, and in case for some reason suddenly the QME is able to |
| // "scan itself", we consider the RT_QME phase here as well. |
| // |
| - l_ringClass = l_ringProps[l_ringId].ringClass; |
| + ringClass = i_ringProps[rpIndex].ringClass; |
| |
| - if ( ( l_ringClass != UNDEFINED_RING_CLASS ) && |
| - ( (l_ringClass & RCLS_MVPD_PDR_EQ) == RCLS_MVPD_PDR_EQ ) && |
| + if ( ( ringClass != UNDEFINED_RING_CLASS ) && |
| + ( (ringClass & RCLS_MVPD_PDR_EQ) == RCLS_MVPD_PDR_EQ ) && |
| ( i_sysPhase == SYSPHASE_HB_SBE || |
| - ( i_sysPhase == SYSPHASE_RT_QME && (l_ringClass & RMRK_SCAN_BY_QME) ) ) ) |
| + ( i_sysPhase == SYSPHASE_RT_QME && (ringClass & RMRK_SCAN_BY_QME) ) ) ) |
| { |
| l_rc = ringid_get_chipletProps( |
| CID_P10, |
| torMagic, |
| torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| + i_ringProps[rpIndex].chipletType, |
| &l_chipletDataEQ ); |
| |
| FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| @@ -1661,22 +1668,22 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| set_LOCAL_RC(l_rc). |
| set_TOR_MAGIC(torMagic). |
| set_TOR_VER(torVersion). |
| - set_CHIPLET_TYPE(l_ringProps[l_ringId].chipletType). |
| - set_RING_ID(l_ringId). |
| + set_CHIPLET_TYPE(i_ringProps[rpIndex].chipletType). |
| + set_RING_ID(i_ringProps[rpIndex].ringId). |
| set_OCCURRENCE(2), |
| "ringid_get_chipletProps(): Failed w/rc=%i for" |
| " TOR magic = 0x%04x, TOR version = %d," |
| " chipletType = %d, ringId = 0x%x," |
| " occurrence=2", |
| l_rc, torMagic, torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| - l_ringId ); |
| + i_ringProps[rpIndex].chipletType, |
| + i_ringProps[rpIndex].ringId ); |
| |
| l_chipletId = l_chipletDataEQ->chipletBaseId + eq; |
| l_chipletSel = ((uint32_t)l_chipletId) << 24; |
| |
| FAPI_DBG("EQ=%d; chipletId=0x%02x, ringName:%s", |
| - eq, l_chipletId, l_ringProps[l_ringId].ringName); |
| + eq, l_chipletId, i_ringProps[rpIndex].ringName); |
| |
| // Update for ring in scan mode |
| l_ringStatusInMvpd = RING_SCAN; |
| @@ -1695,8 +1702,8 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| i_ringBufSize2, |
| i_ringBuf3, |
| i_ringBufSize3, |
| - l_ringProps, |
| - l_ringId, |
| + i_ringProps, |
| + i_ringProps[rpIndex].ringId, |
| l_chipletSel, |
| l_ringStatusInMvpd, |
| l_bImgOutOfSpace, |
| @@ -1734,7 +1741,7 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| |
| } // Done w/fetch_and_insert() current EQ instance ring |
| |
| - } // End of for(l_ringId) for the current eq |
| + } // End of for(rpIndex) for the current eq |
| |
| // |
| // At this point, we're done appending all possible EQ Mvpd rings for current eq. |
| @@ -1752,25 +1759,25 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| continue; |
| } |
| |
| - for ( l_ringId = 0; l_ringId < NUM_RING_IDS; l_ringId++ ) |
| + for ( rpIndex = 0; rpIndex < NUM_RING_IDS; rpIndex++ ) |
| { |
| |
| // |
| // Determine if ringId belongs to relevant Mvpd #R EC ringClass. If so, |
| // then try fetch the ring from Mvpd and append it to ring section. |
| // |
| - l_ringClass = l_ringProps[l_ringId].ringClass; |
| + ringClass = i_ringProps[rpIndex].ringClass; |
| |
| - if ( ( l_ringClass != UNDEFINED_RING_CLASS ) && |
| - ( (l_ringClass & RCLS_MVPD_PDR_CORE) == RCLS_MVPD_PDR_CORE ) && |
| + if ( ( ringClass != UNDEFINED_RING_CLASS ) && |
| + ( (ringClass & RCLS_MVPD_PDR_CORE) == RCLS_MVPD_PDR_CORE ) && |
| ( i_sysPhase == SYSPHASE_HB_SBE || |
| - ( i_sysPhase == SYSPHASE_RT_QME && (l_ringClass & RMRK_SCAN_BY_QME) ) ) ) |
| + ( i_sysPhase == SYSPHASE_RT_QME && (ringClass & RMRK_SCAN_BY_QME) ) ) ) |
| { |
| l_rc = ringid_get_chipletProps( |
| CID_P10, |
| torMagic, |
| torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| + i_ringProps[rpIndex].chipletType, |
| &l_chipletDataEC ); |
| |
| FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| @@ -1779,16 +1786,16 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| set_LOCAL_RC(l_rc). |
| set_TOR_MAGIC(torMagic). |
| set_TOR_VER(torVersion). |
| - set_CHIPLET_TYPE(l_ringProps[l_ringId].chipletType). |
| - set_RING_ID(l_ringId). |
| + set_CHIPLET_TYPE(i_ringProps[rpIndex].chipletType). |
| + set_RING_ID(i_ringProps[rpIndex].ringId). |
| set_OCCURRENCE(3), |
| "ringid_get_chipletProps(): Failed w/rc=%i for" |
| " TOR magic = 0x%04x, TOR version = %d," |
| " chipletType = %d, ringId = 0x%x," |
| " occurrence=3", |
| l_rc, torMagic, torVersion, |
| - l_ringProps[l_ringId].chipletType, |
| - l_ringId ); |
| + i_ringProps[rpIndex].chipletType, |
| + i_ringProps[rpIndex].ringId ); |
| |
| // |
| // Calculate chipletSel target "ID" for this particular (eq,quadrant) combo |
| @@ -1804,7 +1811,7 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| // in the scanScomAddr, and see if it matches the current quadrant we're in: |
| // - If there's a match, regionSel will have one bit set, |
| // - If there's no match, regionSel will be zero. |
| - l_regionSel = l_ringProps[l_ringId].scanScomAddr & l_regionSel; |
| + l_regionSel = i_ringProps[rpIndex].scanScomAddr & l_regionSel; |
| // Final chipletSel to look for in Mvpd |
| l_chipletSel = ( (uint32_t)l_chipletId << 24 ) | l_regionSel; |
| |
| @@ -1816,12 +1823,12 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| // ringIds scanScomAddr. Proceed to the next ringId. |
| FAPI_DBG("EC=%d: chipletSel=0x%08x, ringName=%s (Skipping this ring" |
| " because we're in wrong quadrant(=%d))", |
| - ec, l_chipletSel, l_ringProps[l_ringId].ringName, quadrant); |
| + ec, l_chipletSel, i_ringProps[rpIndex].ringName, quadrant); |
| continue; |
| } |
| |
| FAPI_DBG("EC=%d: chipletSel=0x%08x, ringName=%s", |
| - ec, l_chipletSel, l_ringProps[l_ringId].ringName); |
| + ec, l_chipletSel, i_ringProps[rpIndex].ringName); |
| |
| // Update for ring in scan mode |
| l_ringStatusInMvpd = RING_SCAN; |
| @@ -1840,8 +1847,8 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| i_ringBufSize2, |
| i_ringBuf3, |
| i_ringBufSize3, |
| - l_ringProps, |
| - l_ringId, |
| + i_ringProps, |
| + i_ringProps[rpIndex].ringId, |
| l_chipletSel, |
| l_ringStatusInMvpd, |
| l_bImgOutOfSpace, |
| @@ -1887,7 +1894,7 @@ fapi2::ReturnCode fetch_and_insert_vpd_rings( |
| |
| } // Done inserting current ec core instance ring |
| |
| - } //for(ringId) - Done inserting all core instance rings for current ec core |
| + } //for(rpIndex) - Done inserting all core instance rings for current ec core |
| |
| } //for (quadrant=0; quadrant<CORES_PER_QME; quadrant++) |
| |
| @@ -1995,7 +2002,7 @@ fapi_try_exit: |
| fapi2::XIPC_CODE_BUG(). |
| set_CHIP_TARGET(i_procTarget). |
| set_OCCURRENCE(1), |
| - "Code bug(1): Incorrect EC mask. Should never get here. Fix code!" ); |
| + "CODE BUG(1): Incorrect EC mask. Should never get here. Fix code!" ); |
| break; |
| } |
| } |
| @@ -2397,10 +2404,13 @@ ReturnCode p10_ipl_customize ( |
| uint32_t sizeMvpdCIField = 0; |
| uint8_t* fullCIData = nullptr; |
| |
| + RingProperties_t* ringProps = nullptr; // Ring properties list |
| + RingId_t ringId = UNDEFINED_RING_ID; |
| + RingId_t rpIndex = UNDEFINED_RING_ID; // Ring properties (rp) index |
| + |
| uint64_t featureVec = 0; // Dynamic inits feature vector from platform attribute |
| fapi2::ATTR_SYSTEM_IPL_PHASE_Type l_attrSystemIplPhase; |
| fapi2::ATTR_CONTAINED_IPL_TYPE_Type l_attrContainedIplType; |
| - RingId_t ringId = UNDEFINED_RING_ID; |
| std::map< Rs4Selector_t, Rs4Selector_t> idxFeatureMap; |
| std::map<RingId_t, uint64_t> ringIdFeatureVecMap; |
| uint8_t* ringIdFeatList = NULL; |
| @@ -2468,7 +2478,7 @@ ReturnCode p10_ipl_customize ( |
| set_CHIP_TARGET(i_procTarget). |
| set_XIP_RC(l_rc). |
| set_OCCURRENCE(1), |
| - "p9_xip_image_size() failed w/rc=0x%08x at occurrence=1", |
| + "p9_xip_image_size() failed (1) w/rc=0x%08x", |
| (uint32_t)l_rc ); |
| |
| FAPI_DBG("Input image size: %d", l_inputImageSize); |
| @@ -3184,6 +3194,17 @@ ReturnCode p10_ipl_customize ( |
| set_CHIP_TARGET(i_procTarget), |
| "tor_skeleton_generation failed w/rc=0x%08X", (uint32_t)l_rc ); |
| |
| + // We will be needing the ring properties (rp) list for both Dynamic and Mvpd rings |
| + l_rc = ringid_get_ringProps( CID_P10, &ringProps); |
| + |
| + FAPI_ASSERT( l_rc == INFRASTRUCT_RC_SUCCESS, |
| + fapi2::XIPC_RINGID_RINGPROPS_ERROR(). |
| + set_CHIP_TARGET(i_procTarget). |
| + set_LOCAL_RC(l_rc). |
| + set_OCCURRENCE(1), |
| + "ringid_get_ringProps(): Failed w/rc=%i for occurrence=1", |
| + l_rc ); |
| + |
| // Now, start tracking the instantaneous actual custom ring section size. |
| // (Note that we already took a copy of the [max] value of io_ringSectionBufSize |
| // earlier on into l_ringSectionBufSize, so safe to update this now.) |
| @@ -3261,10 +3282,6 @@ ReturnCode p10_ipl_customize ( |
| // ring becomes the de facto Base ring. |
| ////////////////////////////////////////////////////////////////////////// |
| |
| - // TODO / FIXME: The mapping from bit position in the vector to features |
| - // should be encapsulated in an enum constructed at ekb build |
| - // time. |
| - |
| // |
| // Get the feature vector from the platform |
| // |
| @@ -3405,10 +3422,14 @@ ReturnCode p10_ipl_customize ( |
| |
| dynamicRingSection = (void*)((uint8_t*)i_hwImage + iplImgSection.iv_offset); |
| |
| - for(ringId = 0; ringId < NUM_RING_IDS; ringId++) |
| + for (rpIndex = 0; rpIndex < NUM_RING_IDS; rpIndex++) |
| { |
| - // Only process non-Mvpd rings (and which are all assumed to be Common rings) |
| - if ( ringid_is_mvpd_ring(torHeaderBase->chipId, ringId) == true ) |
| + // Get the ringId from the RP list |
| + ringId = ringProps[rpIndex].ringId; |
| + |
| + // Only process non-Mvpd (which are all Common rings) |
| + if ( ringid_is_mvpd_ring(torHeaderBase->chipId, ringId) == true || |
| + ringId == HOLE_RING_ID ) |
| { |
| continue; |
| } |
| @@ -3416,7 +3437,7 @@ ReturnCode p10_ipl_customize ( |
| l_fapiRc = process_target_and_dynamic_rings( |
| i_procTarget, |
| true,//true means next arg is Base ringSection ptr |
| - baseRingSection,//Overloaded (false:RS4 ring in mid-Buf1,true:Base ringSection) |
| + baseRingSection,//Overloaded (false:RS4 ring in mid-Buf1,true:Base section) |
| dynamicRingSection, |
| i_ringBuf1,//On return, contains Base ring overlaid with dynamic rings |
| i_ringBuf2, |
| @@ -3484,15 +3505,15 @@ ReturnCode p10_ipl_customize ( |
| fapi2::XIPC_CODE_BUG(). |
| set_CHIP_TARGET(i_procTarget). |
| set_OCCURRENCE(2), |
| - "Code bug(2): Messed up RC handling in assoc code. Fix code!" ); |
| + "CODE BUG(2): Messed up RC handling in assoc code. Fix code!" ); |
| break; |
| } |
| - |
| } |
| } |
| |
| |
| |
| + |
| ////////////////////////////////////////////////////////////////////////// |
| // CUSTOMIZE item: Append VPD rings to io_ringSectionBuf |
| // System phase: All phases |
| @@ -3594,12 +3615,13 @@ ReturnCode p10_ipl_customize ( |
| i_ringBufSize2, |
| i_ringBuf3, |
| i_ringBufSize3, |
| - io_bootCoreMask, |
| idxFeatureMap, |
| ringIdFeatureVecMap, |
| numberOfFeatures, |
| dynamicRingSection, |
| - attrDdLevel ); |
| + attrDdLevel, |
| + ringProps, |
| + io_bootCoreMask ); |
| |
| FAPI_DBG("-----------------------------------------------------------------------"); |
| FAPI_DBG("bootCoreMask: Requested=0x%08X Final=0x%08X", |
| @@ -3611,8 +3633,8 @@ ReturnCode p10_ipl_customize ( |
| |
| if ((uint32_t)l_fapiRc == RC_XIPC_IMAGE_WOULD_OVERFLOW) |
| { |
| - FAPI_DBG("p10_ipl_customize(): SBE image is full. Ran out of space appending VPD rings" |
| - " to the .rings section"); |
| + FAPI_DBG("p10_ipl_customize(): SBE image is full. Ran out of space appending" |
| + " VPD rings to the .rings section"); |
| |
| // Check the bootCoreMask to determine if enough cores have been configured. |
| uint8_t attrMinReqdEcs = 0; |
| @@ -3670,7 +3692,8 @@ ReturnCode p10_ipl_customize ( |
| set_RING_SECTION_BUF_SIZE(l_ringSectionBufSize). |
| set_MAX_RING_SECTION_SIZE(l_maxRingSectionSize). |
| set_OCCURRENCE(2), |
| - "Code bug: ringSectionBufSize(=%d) > maxRingSectionSize(=%d) in HB_SBE (Occurrence 2)", |
| + "CODE BUG: ringSectionBufSize(=%d) > maxRingSectionSize(=%d) in HB_SBE" |
| + " (Occurrence 2)", |
| io_ringSectionBufSize, l_maxRingSectionSize ); |
| |
| FAPI_ASSERT( (l_imageSizeWithoutRings + io_ringSectionBufSize) <= l_maxImageSize, |
| @@ -3679,7 +3702,7 @@ ReturnCode p10_ipl_customize ( |
| set_IMAGE_SIZE_WITHOUT_RINGS(l_imageSizeWithoutRings). |
| set_RING_SECTION_SIZE(io_ringSectionBufSize). |
| set_MAX_IMAGE_SIZE(l_maxImageSize), |
| - "Code bug: SBE imageSize would exceed maxImageSize" ); |
| + "CODE BUG: SBE imageSize would exceed maxImageSize" ); |
| |
| FAPI_DBG( "SBE image details: io_ringSectionBufSize=%d, l_imageSizeWithoutRings=%d," |
| " l_maxImageSize=%d", |
| @@ -3751,12 +3774,13 @@ ReturnCode p10_ipl_customize ( |
| i_ringBufSize2, |
| i_ringBuf3, |
| i_ringBufSize3, |
| - io_bootCoreMask, |
| idxFeatureMap, |
| ringIdFeatureVecMap, |
| numberOfFeatures, |
| dynamicRingSection, |
| - attrDdLevel ); |
| + attrDdLevel, |
| + ringProps, |
| + io_bootCoreMask ); |
| |
| FAPI_DBG("Size of QME .rings section after VPD update: %d", io_ringSectionBufSize ); |
| |
| @@ -3788,7 +3812,7 @@ ReturnCode p10_ipl_customize ( |
| set_RING_SECTION_BUF_SIZE(l_ringSectionBufSize). |
| set_MAX_RING_SECTION_SIZE(l_maxRingSectionSize). |
| set_OCCURRENCE(3), |
| - "Code bug: QME ring section size(=%d) > maxRingSectionSize(=%d)" |
| + "CODE BUG: QME ring section size(=%d) > maxRingSectionSize(=%d)" |
| " in RT_QME (Occurrence 3)", |
| io_ringSectionBufSize, l_maxRingSectionSize ); |
| |
| diff --git a/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.C b/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.C |
| index fc645d6..c87fabb 100644 |
| --- a/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.C |
| +++ b/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.C |
| @@ -43,60 +43,52 @@ using namespace fapi2; |
| |
| fapi2::ReturnCode p10_qme_customize( |
| const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procTarget, |
| - uint8_t* i_bufQmeRings, |
| - CUSTOM_RING_OP i_custOp, |
| - uint8_t* io_bufCustRings, |
| - uint32_t& io_bufCustRingsSize, |
| - uint32_t i_dbgl) |
| + uint8_t* i_qmeRings, //Input QME ring section |
| + CUST_RING_OP i_custOp, |
| + uint8_t* io_bufCustRings, //Buffer for customized output QME ring section |
| + uint32_t& io_bufCustRingsSize, //In: Max buf size, Out: cust ring section size |
| + uint32_t i_dbgl ) |
| { |
| - int rc = INFRASTRUCT_RC_SUCCESS; |
| + int rc = TOR_SUCCESS; |
| |
| - TorHeader_t* torHeaderQme = (TorHeader_t*) i_bufQmeRings; |
| + TorHeader_t* torHeaderQme = (TorHeader_t*) i_qmeRings; |
| TorHeader_t* torHeaderCust = (TorHeader_t*) io_bufCustRings; |
| |
| - uint8_t ddLevel; |
| - uint8_t torVersion; |
| - uint32_t torMagic; |
| - uint32_t inputQmeRingsSize; |
| + uint32_t inputQmeRingsSize = be32toh(torHeaderQme->size); |
| + uint32_t maxCustRingsSize = io_bufCustRingsSize; |
| |
| - ChipId_t chipId = UNDEFINED_CHIP_ID; |
| + RingProperties_t* ringProps = nullptr; |
| ChipletData_t* chipletData; |
| + RingId_t numRingIds = UNDEFINED_RING_ID; |
| + RingId_t rpIndex; |
| + uint8_t chipletId; |
| + void* nextRing = NULL; |
| + uint32_t remBufSize; |
| |
| FAPI_IMP(">> p10_qme_customize "); |
| |
| - ddLevel = torHeaderQme->ddLevel; |
| - torVersion = torHeaderQme->version; |
| - torMagic = be32toh(torHeaderQme->magic); |
| - chipId = torHeaderQme->chipId; |
| - inputQmeRingsSize = be32toh(torHeaderQme->size); |
| - |
| - RingId_t numRings = UNDEFINED_RING_ID; // Number of chiplet common or instance rings |
| - MyBool_t bInstCase = UNDEFINED_BOOLEAN; // 0:COMMON, 1:INSTANCE rings |
| - RingId_t ringId; |
| - uint8_t chipletInstId; |
| - |
| - uint32_t maxCustRingsSize = io_bufCustRingsSize; |
| - |
| - uint8_t iRing; |
| - void* nextRing = NULL; |
| - uint32_t remBufSize; |
| + // Take note of some key TOR header input data |
| + uint32_t torMagic = be32toh(torHeaderQme->magic); |
| + uint8_t torVersion = torHeaderQme->version; |
| + uint8_t ddLevel = torHeaderQme->ddLevel; |
| + ChipId_t chipId = torHeaderQme->chipId; |
| |
| // |
| // Step 0: Test input parameters |
| // |
| - FAPI_ASSERT(i_custOp < NUM_CUSTOMIZE_QME_ENTRIES |
| - && i_bufQmeRings != NULL |
| + FAPI_ASSERT(i_custOp < NUM_QME_CUST_OPS |
| + && i_qmeRings != NULL |
| && io_bufCustRings != NULL, |
| fapi2::QMEC_FUNC_CALL_ARGUMENT_ERROR() |
| .set_TARGET(i_procTarget) |
| - .set_CUSTOM_RING_OP(i_custOp) |
| - .set_INPUT_QME_RINGS_BUF_PTR(i_bufQmeRings) |
| + .set_CUST_RING_OP(i_custOp) |
| + .set_INPUT_QME_RINGS_PTR(i_qmeRings) |
| .set_CUST_QME_RINGS_BUF_PTR(io_bufCustRings), |
| - "Error: Some arguments in function call are invalid,\n" |
| - " i_custOp=0x%08x, i_bufQmeRings=0x%016llx, io_bufCustRings=0x%016llx.\n", |
| + "ERROR: Some arguments in function call are invalid:" |
| + " i_custOp=0x%x, i_qmeRings=0x%016llx, io_bufCustRings=0x%016llx.\n", |
| i_custOp, |
| - (uintptr_t) i_bufQmeRings, |
| - (uintptr_t) io_bufCustRings); |
| + (uintptr_t)i_qmeRings, |
| + (uintptr_t)io_bufCustRings); |
| |
| FAPI_ASSERT(torMagic == TOR_MAGIC_QME && torVersion == TOR_VERSION, |
| fapi2::QMEC_TOR_HEADER_MISMATCH() |
| @@ -105,28 +97,26 @@ fapi2::ReturnCode p10_qme_customize( |
| .set_TOR_MAGIC_QME_DEFINED(TOR_MAGIC_QME) |
| .set_TOR_VERSION_IN_HEADER(torVersion) |
| .set_TOR_VERSION_DEFINED(TOR_VERSION), |
| - "Error: TOR Magic or TOR Version not match in TOR header and the defined,\n" |
| - " TOR Magic w/value =0x%08x in TOR header, TOR_MAGIC_QME w/value =0x%08x,\n" |
| - " TOR Version w/value =0x%08x in TOR header, TOR_VERSION w/value =0x%08x.\n", |
| + "ERROR: TOR Magic or TOR Version in TOR header do not match the defined values:\n" |
| + " torMagic=0x%08x but TOR_MAGIC_QME=0x%08x\n" |
| + " torVersion=%u but TOR_VERSION=%u", |
| torMagic, |
| TOR_MAGIC_QME, |
| torVersion, |
| TOR_VERSION); |
| |
| - // Make sure that the customized buffer size is greater than or |
| - // equal to the size in TOR header in the input QME ring buffer. |
| + // Check that the max customized buffer size is >= the size of the input TOR ring section |
| FAPI_ASSERT(maxCustRingsSize >= inputQmeRingsSize, |
| fapi2::QMEC_RINGS_OUTPUT_BUFFER_TOO_SMALL() |
| .set_TARGET(i_procTarget) |
| - .set_MAX_CUST_RINGS_BUF_SIZE(maxCustRingsSize) |
| - .set_INPUT_QME_RINGS_BUF_SIZE(inputQmeRingsSize), |
| - "Error: Input QME rings buffer size exceeds max customize ring buffer size,\n" |
| - " maxCustRingsSize=0x%08x, inputQmeRingsSize=0x%08x.\n", |
| + .set_CUST_QME_RINGS_BUF_SIZE(maxCustRingsSize) |
| + .set_INPUT_QME_RINGS_SIZE(inputQmeRingsSize) |
| + .set_CUST_QME_RINGS_SIZE(0xffffffff), //Still undefined |
| + "ERROR: Max custom QME ring buf size < Input QME rings size:" |
| + " maxCustRingsSize=0x%08x, inputQmeRingsSize=0x%08x", |
| maxCustRingsSize, |
| inputQmeRingsSize); |
| |
| - bInstCase = (i_custOp == CUSTOMIZE_QME_COMMON_RING) ? false : true; |
| - |
| // |
| // Step 1: Create TOR skeleton ringSection |
| // Create the complete ring skeleton, but with empty TOR ring slots (ie, no ring content). |
| @@ -139,12 +129,7 @@ fapi2::ReturnCode p10_qme_customize( |
| chipId, |
| i_dbgl); |
| |
| - FAPI_DBG("tor_skeleton_generation() completed w/rc=0x%08x,\n" |
| - " torMagic=0x%08x, torVersion=%u,\n" |
| - " ddLevel=0x%02x and chipId=0x%02x.\n", |
| - rc, torMagic, torVersion, ddLevel, chipId); |
| - |
| - FAPI_ASSERT(rc == INFRASTRUCT_RC_SUCCESS, |
| + FAPI_ASSERT(rc == TOR_SUCCESS, |
| fapi2::QMEC_TOR_SKELETON_GEN_ERROR() |
| .set_TARGET(i_procTarget) |
| .set_API_RC(rc) |
| @@ -152,130 +137,156 @@ fapi2::ReturnCode p10_qme_customize( |
| .set_TOR_VER(torVersion) |
| .set_DD_LEVEL(ddLevel) |
| .set_CHIP_ID(chipId), |
| - "Error: tor_skeleton_generation() failed w/rc=0x%08x," |
| - " torMagic=0x%08x, torVersion=%u, ddLevel=0x%02x and chipId=0x%02x\n", |
| + "ERROR: tor_skeleton_generation() failed w/rc=0x%08x for" |
| + " torMagic=0x%08x, torVersion=%u, ddLevel=0x%02x and chipId=0x%02x", |
| rc, torMagic, torVersion, ddLevel, chipId); |
| |
| - // |
| - // Step 2: Add ring content |
| - // Append rings to the end of the [skeleton] TOR ring section and update TOR offset slot |
| - // |
| + // Get the main ring properties list and the number of RingIDs |
| + // (Note that we can skip the second rc check since the API only fails if wrong chipId which |
| + // will be caught by the first rc check) |
| + rc = ringid_get_ringProps(chipId, |
| + &ringProps); |
| |
| - // Get all the meta data for this chiplet and its rings |
| + FAPI_ASSERT(rc == TOR_SUCCESS, |
| + fapi2::QMEC_RINGID_API_ERROR() |
| + .set_TARGET(i_procTarget) |
| + .set_API_RC(rc) |
| + .set_TOR_MAGIC(torMagic) |
| + .set_TOR_VER(torVersion) |
| + .set_RP_INDEX(UNDEFINED_RING_ID) |
| + .set_RING_ID(UNDEFINED_RING_ID) |
| + .set_CHIP_ID(chipId) |
| + .set_OCCURRENCE(1), |
| + "ERROR: ringid_get_ringProps() failed w/rc=0x%08x\n for", |
| + " torMagic=0x%08x, torVersion=%u and chipId=0x%02x", |
| + rc, torMagic, torVersion, chipId); |
| + |
| + ringid_get_num_ring_ids( chipId, |
| + &numRingIds ); |
| + |
| + // Get the meta data for the QME chiplet |
| rc = ringid_get_chipletProps(chipId, |
| torMagic, |
| torVersion, |
| EQ_TYPE, |
| &chipletData); |
| |
| - FAPI_ASSERT(rc == INFRASTRUCT_RC_SUCCESS, |
| - fapi2::QMEC_RINGID_GET_CHIPLETPROPS_ERROR() |
| + FAPI_ASSERT(rc == TOR_SUCCESS, |
| + fapi2::QMEC_RINGID_API_ERROR() |
| .set_TARGET(i_procTarget) |
| .set_API_RC(rc) |
| .set_TOR_MAGIC(torMagic) |
| - .set_TOR_VER(torVersion), |
| - "Error: ringid_get_chipletProps() failed w/rc=0x%08x,\n" |
| - " torMagic=0x%08x and torVersion=%u.\n", |
| - rc, torMagic, torVersion); |
| + .set_TOR_VER(torVersion) |
| + .set_RP_INDEX(UNDEFINED_RING_ID) |
| + .set_RING_ID(UNDEFINED_RING_ID) |
| + .set_CHIP_ID(chipId) |
| + .set_OCCURRENCE(2), |
| + "ERROR: ringid_get_chipletProps() failed w/rc=0x%08x for chipletType=EQ_TYPE," |
| + " torMagic=0x%08x, torVersion=%u and chipId=0x%02x", |
| + rc, torMagic, torVersion, chipId); |
| |
| - chipletInstId = chipletData->chipletBaseId + i_custOp; |
| + chipletId = chipletData->chipletBaseId + i_custOp; |
| |
| - numRings = bInstCase ? |
| - chipletData->numInstanceRings : |
| - chipletData->numCommonRings; |
| + // |
| + // Step 2: Copy and append rings |
| + // |
| |
| - // Loop through all rings, get ring data for each ring and |
| - // append it to cust ring section. |
| - for (iRing = 0; iRing < numRings; iRing++) |
| + for (rpIndex = 0; rpIndex < numRingIds; rpIndex++) |
| { |
| - // Extract ringId from the TOR ring index, iRing. |
| - rc = ringidGetRingId2(chipId, |
| - torMagic, |
| - EQ_TYPE, |
| - iRing, |
| - bInstCase, |
| - ringId, |
| - false); |
| - |
| - FAPI_ASSERT(rc == INFRASTRUCT_RC_SUCCESS, |
| - fapi2::QMEC_RINGID_GET_RINGID2_ERROR() |
| - .set_TARGET(i_procTarget) |
| - .set_API_RC(rc) |
| - .set_TOR_MAGIC(torMagic) |
| - .set_RING_INST_ID(iRing) |
| - .set_INST_CASE(bInstCase) |
| - .set_RING_ID(ringId), |
| - "Error: ringidGetRingId2() failed w/rc=0x%08x,\n" |
| - " torMagic=0x%08x, iRing=%u,\n" |
| - " bInstCase=%u and ringId=0x%x.\n", |
| - rc, torMagic, iRing, bInstCase, ringId); |
| - |
| io_bufCustRingsSize = be32toh(torHeaderCust->size); |
| nextRing = (void*) (io_bufCustRings + io_bufCustRingsSize); |
| |
| // nextRing is portion of io_bufCustRings buffer which is used as |
| - // temporary buffer to pass the ring in i_bufQmeRings from the |
| + // temporary buffer to pass the ring in i_qmeRings from the |
| // tor_get_single_ring() function. |
| // The size of this temporary buffer is captured by remBufSize. |
| - FAPI_ASSERT(maxCustRingsSize > io_bufCustRingsSize, |
| + FAPI_ASSERT(maxCustRingsSize >= io_bufCustRingsSize, |
| fapi2::QMEC_RINGS_OUTPUT_BUFFER_TOO_SMALL() |
| - .set_MAX_CUST_RINGS_BUF_SIZE(maxCustRingsSize) |
| - .set_CUST_QME_RINGS_BUF_SIZE(io_bufCustRingsSize), |
| - "Error: QME rings output buffer is not large enough to use part of it for rs4Ring,\n" |
| - " maxCustRingsSize=0x%08x, io_bufCustRingsSize=0x%08x.\n", |
| + .set_TARGET(i_procTarget) |
| + .set_CUST_QME_RINGS_BUF_SIZE(maxCustRingsSize) |
| + .set_INPUT_QME_RINGS_SIZE(inputQmeRingsSize) |
| + .set_CUST_QME_RINGS_SIZE(io_bufCustRingsSize), |
| + "ERROR: QME customize rings output buffer is too small since" |
| + " maxCustRingsSize=0x%08x < io_bufCustRingsSize=0x%08x.", |
| maxCustRingsSize, io_bufCustRingsSize); |
| |
| remBufSize = maxCustRingsSize - io_bufCustRingsSize; |
| |
| - // Extract ring data using the ringId. |
| - rc = tor_get_single_ring(i_bufQmeRings, |
| - ddLevel, |
| - ringId, |
| - chipletInstId, //This argument ignored for Common rings. |
| - nextRing, |
| - remBufSize, |
| - i_dbgl); |
| + // |
| + // Extract ring |
| + // But skip it if it doesn't qualify for current custOp context |
| + // |
| |
| - FAPI_ASSERT(rc == INFRASTRUCT_RC_SUCCESS || |
| - rc == TOR_RING_IS_EMPTY, |
| - fapi2::QMEC_TOR_GET_SINGLE_RING_ERROR() |
| - .set_TARGET(i_procTarget) |
| - .set_API_RC(rc) |
| - .set_DD_LEVEL(ddLevel) |
| - .set_RING_ID(ringId) |
| - .set_CHIPLET_INST_ID(chipletInstId) |
| - .set_NEXT_RS4RING_BUF_SIZE(remBufSize), |
| - "Error: tor_get_single_ring() failed w/rc=0x%08x, ddLevel=0x%02x," |
| - " ringId=0x%x, chipletInstId=0x%02x, remBufSize=%u.\n", |
| - rc, ddLevel, ringId, chipletInstId, remBufSize); |
| - |
| - // If ring is empty, skip and check next ring. |
| - if(rc == TOR_RING_IS_EMPTY) |
| + RingId_t ringId = ringProps[rpIndex].ringId; |
| + MyBool_t bInstRing = ringid_is_instance_ring(rpIndex); |
| + |
| + if ( ( bInstRing == true && |
| + (i_custOp >= CUST_QME0_INSTANCE_RING && i_custOp <= CUST_QME7_INSTANCE_RING) ) || |
| + ( bInstRing == false && |
| + (i_custOp == CUST_QME_COMMON_RING) ) ) |
| + { |
| + rc = tor_get_single_ring(i_qmeRings, |
| + ddLevel, |
| + ringId, |
| + chipletId, //Arg ignored for Common rings |
| + nextRing, |
| + remBufSize, |
| + i_dbgl); |
| + |
| + |
| + FAPI_ASSERT(rc == TOR_SUCCESS || |
| + rc == TOR_RING_IS_EMPTY || |
| + rc == TOR_INVALID_CHIPLET_TYPE || |
| + rc == TOR_HOLE_RING_ID, |
| + fapi2::QMEC_TOR_GET_SINGLE_RING_ERROR() |
| + .set_TARGET(i_procTarget) |
| + .set_API_RC(rc) |
| + .set_DD_LEVEL(ddLevel) |
| + .set_RING_ID(ringId) |
| + .set_CHIPLET_ID(chipletId) |
| + .set_REM_BUF_SIZE(remBufSize), |
| + "ERROR: tor_get_single_ring() failed w/rc=0x%08x, ddLevel=0x%02x," |
| + " ringId=0x%x, chipletId=0x%02x, remBufSize=0x%08x\n", |
| + rc, ddLevel, ringId, chipletId, remBufSize); |
| + |
| + // If ring is empty, is a hole ring or doesnt belong to QME chiplet => go to next ring |
| + if( rc == TOR_RING_IS_EMPTY || |
| + rc == TOR_INVALID_CHIPLET_TYPE || |
| + rc == TOR_HOLE_RING_ID ) |
| + { |
| + //FAPI_DBG("Skipping ringId=0x%03x for rc=0x%08x", ringId, rc); |
| + rc = TOR_SUCCESS; |
| + continue; |
| + } |
| + } |
| + else |
| { |
| - rc = INFRASTRUCT_RC_SUCCESS; |
| continue; |
| } |
| |
| - // Append ring to ring section. |
| + // |
| + // Append ring to customized QME ring section. |
| // Note that this API also updates the header's ring size |
| + // |
| rc = tor_append_ring(io_bufCustRings, |
| maxCustRingsSize, |
| ringId, |
| - chipletInstId, |
| + chipletId, //Arg ignored for Common rings |
| (void*)nextRing, |
| i_dbgl); |
| |
| - io_bufCustRingsSize = be32toh(torHeaderCust->size); |
| - |
| - FAPI_ASSERT(rc == INFRASTRUCT_RC_SUCCESS, |
| + FAPI_ASSERT(rc == TOR_SUCCESS, |
| fapi2::QMEC_TOR_APPEND_RING_ERROR() |
| .set_TARGET(i_procTarget) |
| .set_API_RC(rc) |
| - .set_CUST_RINGS_BUF_SIZE(io_bufCustRingsSize) |
| - .set_RING_ID(ringId), |
| - "Error: tor_append_ring() failed w/rc=0x%08x,\n" |
| - " io_bufCustRingsSize=0x%08x, ringId=0x%x.\n", |
| - rc, io_bufCustRingsSize, ringId); |
| + .set_RING_ID(ringId) |
| + .set_CHIPLET_ID(chipletId) |
| + .set_CUST_QME_RINGS_BUF_SIZE(maxCustRingsSize), |
| + "ERROR: tor_append_ring() failed w/rc=0x%08x for ringId=0x%x," |
| + " chipletId=0x%02x and maxCustRingsSize=0x%08x", |
| + rc, ringId, chipletId, maxCustRingsSize); |
| + |
| + io_bufCustRingsSize = be32toh(torHeaderCust->size); |
| |
| } |
| |
| diff --git a/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.H b/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.H |
| index b98c891..3d2b527 100644 |
| --- a/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.H |
| +++ b/src/import/chips/p10/procedures/hwp/customize/p10_qme_customize.H |
| @@ -5,7 +5,7 @@ |
| /* */ |
| /* OpenPOWER HostBoot Project */ |
| /* */ |
| -/* Contributors Listed Below - COPYRIGHT 2016,2019 */ |
| +/* Contributors Listed Below - COPYRIGHT 2016,2020 */ |
| /* [+] International Business Machines Corp. */ |
| /* */ |
| /* */ |
| @@ -40,55 +40,50 @@ |
| /** |
| * @brief various ring customization operation supported by HWP |
| */ |
| -enum CUSTOM_RING_OP |
| +enum CUST_RING_OP |
| { |
| - CUSTOMIZE_QME0_SPECIFIC_RING = 0x00, |
| - CUSTOMIZE_QME1_SPECIFIC_RING = 0x01, |
| - CUSTOMIZE_QME2_SPECIFIC_RING = 0x02, |
| - CUSTOMIZE_QME3_SPECIFIC_RING = 0x03, |
| - CUSTOMIZE_QME4_SPECIFIC_RING = 0x04, |
| - CUSTOMIZE_QME5_SPECIFIC_RING = 0x05, |
| - CUSTOMIZE_QME6_SPECIFIC_RING = 0x06, |
| - CUSTOMIZE_QME7_SPECIFIC_RING = 0x07, |
| - CUSTOMIZE_QME_COMMON_RING = 0x08, |
| - NUM_CUSTOMIZE_QME_ENTRIES |
| + CUST_QME0_INSTANCE_RING = 0x00, |
| + CUST_QME1_INSTANCE_RING = 0x01, |
| + CUST_QME2_INSTANCE_RING = 0x02, |
| + CUST_QME3_INSTANCE_RING = 0x03, |
| + CUST_QME4_INSTANCE_RING = 0x04, |
| + CUST_QME5_INSTANCE_RING = 0x05, |
| + CUST_QME6_INSTANCE_RING = 0x06, |
| + CUST_QME7_INSTANCE_RING = 0x07, |
| + CUST_QME_COMMON_RING = 0x08, |
| + NUM_QME_CUST_OPS |
| }; |
| |
| typedef fapi2::ReturnCode (*p10_qme_customize_FP_t)( |
| const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procTarget, |
| - uint8_t* i_bufQmeRings, |
| - CUSTOM_RING_OP i_custOp, |
| - uint8_t* io_bufCustRings, |
| - uint32_t& io_bufCustRingsSize, |
| - uint32_t i_dbgl); |
| + uint8_t* i_qmeRings, |
| + CUST_RING_OP i_custOp, |
| + uint8_t* io_bufCustRings, |
| + uint32_t& io_bufCustRingsSize, |
| + uint32_t i_dbgl); |
| |
| extern "C" |
| { |
| |
| /// @brief customizes QME ring section based on input. |
| /// @param[in] i_procTarget reference to processor chip target. |
| -/// @param[in/out] i_bufQmeRings pointer to a buffer containing all |
| -/// scan rings associated with QME image. |
| -/// @param[in] i_custOp type of customization requested. |
| -/// @param[in/out] io_bufCustRings pointer to a buffer containing |
| -/// customized QME rings. |
| -/// @param[in/out] io_bufCustRingsSize reference. |
| -/// Input - max buffer size, must be greater than or |
| -/// equal to the size in the TOR header of QME |
| -/// ring section in the i_bufQmeRing buffer. |
| -/// output- the actual buffer size of customized QME |
| -/// rings. |
| -/// @param[in] i_dbgl debug level, default value is 0. |
| -/// @return FAPI_RC_SUCCESS if the customization was successful, |
| -/// error code otherwise. |
| +/// @param[in/out] i_qmeRings Pointer to the input QME ring section |
| +/// @param[in] i_custOp Type of customization requested. |
| +/// @param[in/out] io_bufCustRings Pointer to a buffer containing the customized QME rings. |
| +/// @param[in/out] io_bufCustRingsSize Size of customized QME ring section |
| +/// Input - max buffer size, must be >= to the size in the TOR header of |
| +/// the input QME ring section in i_qmeRings |
| +/// Output- the actual size of the customized QME ring section |
| +/// @param[in] i_dbgl Debug level, default value is 0 |
| +/// @return FAPI_RC_SUCCESS if the customization was successful, otherwise error code |
| |
| fapi2::ReturnCode p10_qme_customize( |
| const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procTarget, |
| - uint8_t* i_bufQmeRings, |
| - CUSTOM_RING_OP i_custOp, |
| - uint8_t* io_bufCustRings, |
| - uint32_t& io_bufCustRingsSize, |
| - uint32_t i_dbgl = 0); |
| + uint8_t* i_bufQmeRings, |
| + CUST_RING_OP i_custOp, |
| + uint8_t* io_bufCustRings, |
| + uint32_t& io_bufCustRingsSize, |
| + uint32_t i_dbgl = 0); |
| |
| } //extern "C" |
| |
| diff --git a/src/import/chips/p10/procedures/hwp/pm/p10_hcode_image_build.C b/src/import/chips/p10/procedures/hwp/pm/p10_hcode_image_build.C |
| index 0d3441a..d2553cb 100644 |
| --- a/src/import/chips/p10/procedures/hwp/pm/p10_hcode_image_build.C |
| +++ b/src/import/chips/p10/procedures/hwp/pm/p10_hcode_image_build.C |
| @@ -1037,7 +1037,7 @@ fapi2::ReturnCode buildQmeSpecificRing( CONST_FAPI2_PROC& i_procTgt, Homerlayout |
| |
| FAPI_TRY( p10_qme_customize( i_procTgt, |
| (uint8_t *)i_ringData.iv_pRingBuffer, |
| - ( CUSTOM_RING_OP )l_superChiplet, |
| + ( CUST_RING_OP )l_superChiplet, |
| (uint8_t *)i_ringData.iv_pWorkBuf1, |
| l_workBufSize, |
| 0 ), |
| @@ -1071,7 +1071,7 @@ fapi2::ReturnCode buildQmeSpecificRing( CONST_FAPI2_PROC& i_procTgt, Homerlayout |
| |
| FAPI_TRY( p10_qme_customize( i_procTgt, |
| (uint8_t *)i_ringData.iv_pRingBuffer, |
| - ( CUSTOM_RING_OP ) l_superChiplet, |
| + ( CUST_RING_OP ) l_superChiplet, |
| (uint8_t *)i_ringData.iv_pWorkBuf1, |
| l_workBufSize, |
| 0 ), |
| @@ -1236,7 +1236,7 @@ fapi2::ReturnCode buildQmeRing( CONST_FAPI2_PROC& i_procTgt, void * const i_pIma |
| |
| FAPI_TRY( p10_qme_customize( i_procTgt, |
| (uint8_t *)i_ringData.iv_pRingBuffer, |
| - CUSTOMIZE_QME_COMMON_RING, |
| + CUST_QME_COMMON_RING, |
| (uint8_t *)i_ringData.iv_pWorkBuf1, |
| l_workBufSize, |
| 0 ), |
| diff --git a/src/import/chips/p10/procedures/xml/error_info/p10_qme_customize_errors.xml b/src/import/chips/p10/procedures/xml/error_info/p10_qme_customize_errors.xml |
| index 39e6611..4057a69 100644 |
| --- a/src/import/chips/p10/procedures/xml/error_info/p10_qme_customize_errors.xml |
| +++ b/src/import/chips/p10/procedures/xml/error_info/p10_qme_customize_errors.xml |
| @@ -5,7 +5,7 @@ |
| <!-- --> |
| <!-- OpenPOWER HostBoot Project --> |
| <!-- --> |
| -<!-- Contributors Listed Below - COPYRIGHT 2016,2019 --> |
| +<!-- Contributors Listed Below - COPYRIGHT 2016,2020 --> |
| <!-- [+] International Business Machines Corp. --> |
| <!-- --> |
| <!-- --> |
| @@ -26,10 +26,10 @@ |
| <!-- ********************************************************************* --> |
| <hwpError> |
| <rc>RC_QMEC_FUNC_CALL_ARGUMENT_ERROR</rc> |
| - <description>Caller bug: Some function call arguments are invalid.</description> |
| + <description>Some function call arguments are invalid.</description> |
| <ffdc>TARGET</ffdc> |
| - <ffdc>CUSTOM_RING_OP</ffdc> |
| - <ffdc>INPUT_QME_RINGS_BUF_PTR</ffdc> |
| + <ffdc>CUST_RING_OP</ffdc> |
| + <ffdc>INPUT_QME_RINGS_PTR</ffdc> |
| <ffdc>CUST_QME_RINGS_BUF_PTR</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| @@ -39,7 +39,7 @@ |
| <!-- ********************************************************************* --> |
| <hwpError> |
| <rc>RC_QMEC_TOR_HEADER_MISMATCH</rc> |
| - <description>Caller bug: Data in TOR header does not match.</description> |
| + <description>Some data in TOR header does not match.</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>TOR_MAGIC_QME_IN_HEADER</ffdc> |
| <ffdc>TOR_MAGIC_QME_DEFINED</ffdc> |
| @@ -53,11 +53,11 @@ |
| <!-- ********************************************************************* --> |
| <hwpError> |
| <rc>RC_QMEC_RINGS_OUTPUT_BUFFER_TOO_SMALL</rc> |
| - <description>Code bug: Input QME rings buffer is not too small.</description> |
| + <description>Customized QME ring section buffer is too small.</description> |
| <ffdc>TARGET</ffdc> |
| - <ffdc>MAX_CUST_RINGS_BUF_SIZE</ffdc> |
| - <ffdc>INPUT_QME_RINGS_BUF_SIZE</ffdc> |
| <ffdc>CUST_QME_RINGS_BUF_SIZE</ffdc> |
| + <ffdc>INPUT_QME_RINGS_SIZE</ffdc> |
| + <ffdc>CUST_QME_RINGS_SIZE</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| <priority>HIGH</priority> |
| @@ -66,7 +66,7 @@ |
| <!-- ********************************************************************* --> |
| <hwpError> |
| <rc>RC_QMEC_TOR_SKELETON_GEN_ERROR</rc> |
| - <description>Code bug: Error with calling tor_skeleton_generation().</description> |
| + <description>Error with calling tor_skeleton_generation().</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>API_RC</ffdc> |
| <ffdc>TOR_MAGIC</ffdc> |
| @@ -80,12 +80,16 @@ |
| </hwpError> |
| <!-- ********************************************************************* --> |
| <hwpError> |
| - <rc>RC_QMEC_RINGID_GET_CHIPLETPROPS_ERROR</rc> |
| - <description>Code bug: Error with calling ringid_get_chipletProps().</description> |
| + <rc>RC_QMEC_RINGID_API_ERROR</rc> |
| + <description>Error with calling ringid_xyz().</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>API_RC</ffdc> |
| <ffdc>TOR_MAGIC</ffdc> |
| <ffdc>TOR_VER</ffdc> |
| + <ffdc>RP_INDEX</ffdc> |
| + <ffdc>RING_ID</ffdc> |
| + <ffdc>CHIP_ID</ffdc> |
| + <ffdc>OCCURRENCE</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| <priority>HIGH</priority> |
| @@ -93,14 +97,14 @@ |
| </hwpError> |
| <!-- ********************************************************************* --> |
| <hwpError> |
| - <rc>RC_QMEC_RINGID_GET_RINGID2_ERROR</rc> |
| - <description>Code bug: Error with calling ringidGetRingId2().</description> |
| + <rc>RC_QMEC_TOR_GET_SINGLE_RING_ERROR</rc> |
| + <description>Code bug: Error with calling tor_get_single_ring().</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>API_RC</ffdc> |
| - <ffdc>TOR_MAGIC</ffdc> |
| - <ffdc>RING_INST_ID</ffdc> |
| - <ffdc>INST_CASE</ffdc> |
| + <ffdc>DD_LEVEL</ffdc> |
| <ffdc>RING_ID</ffdc> |
| + <ffdc>CHIPLET_ID</ffdc> |
| + <ffdc>REM_BUF_SIZE</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| <priority>HIGH</priority> |
| @@ -108,14 +112,13 @@ |
| </hwpError> |
| <!-- ********************************************************************* --> |
| <hwpError> |
| - <rc>RC_QMEC_TOR_GET_SINGLE_RING_ERROR</rc> |
| - <description>Code bug: Error with calling tor_get_single_ring().</description> |
| + <rc>RC_QMEC_TOR_APPEND_RING_ERROR</rc> |
| + <description>Code bug: Error with calling tor_append_ring().</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>API_RC</ffdc> |
| - <ffdc>DD_LEVEL</ffdc> |
| <ffdc>RING_ID</ffdc> |
| - <ffdc>CHIPLET_INST_ID</ffdc> |
| - <ffdc>NEXT_RS4RING_BUF_SIZE</ffdc> |
| + <ffdc>CHIPLET_ID</ffdc> |
| + <ffdc>CUST_QME_RINGS_BUF_SIZE</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| <priority>HIGH</priority> |
| @@ -123,12 +126,11 @@ |
| </hwpError> |
| <!-- ********************************************************************* --> |
| <hwpError> |
| - <rc>RC_QMEC_TOR_APPEND_RING_ERROR</rc> |
| - <description>Code bug: Error with calling tor_append_ring().</description> |
| + <rc>RC_QMEC_CODE_BUG</rc> |
| + <description>Code bug: Fix code!</description> |
| <ffdc>TARGET</ffdc> |
| <ffdc>API_RC</ffdc> |
| - <ffdc>CUST_RINGS_BUF_SIZE</ffdc> |
| - <ffdc>RING_ID</ffdc> |
| + <ffdc>OCCURRENCE</ffdc> |
| <callout> |
| <procedure>CODE</procedure> |
| <priority>HIGH</priority> |
| diff --git a/src/import/chips/p10/utils/imageProcs/p10_ringId.H b/src/import/chips/p10/utils/imageProcs/p10_ringId.H |
| index b11f806..c020959 100644 |
| --- a/src/import/chips/p10/utils/imageProcs/p10_ringId.H |
| +++ b/src/import/chips/p10/utils/imageProcs/p10_ringId.H |
| @@ -54,7 +54,7 @@ |
| // circumstances exist - coordinate with infrastructure team). |
| // - To allow the MVPD group to expand without affecting the ringId sequence of |
| // the EKB rings, the beginning of the EKB ring group is pushed out to |
| -// RINGID_START_EKB. **This feature is currently inactive!** |
| +// RINGID_START_EKB. |
| // |
| // p10_ring_properties.H |
| // ===================== |
| @@ -118,15 +118,55 @@ enum Chiplets |
| |
| const ChipletType_t QME_NUM_CHIPLETS = 1; |
| |
| - |
| #include "p10_ring_properties.H" |
| |
| -static inline const char* ringid_get_ring_name(RingID i_id) |
| + |
| +// |
| +// ringid_convert_ringId_to_ringIndex() |
| +// |
| +// This function converts the enum ringId to the contiguous ringIndex that |
| +// we need for looking up ring metadata in the RING_PROPERTIES list. Since |
| +// we have a gap between the MVPD and EKB group of rings in the main enum |
| +// ringId list, and since we cannot have a huge gap of empty entries in |
| +// the RING_PROPERTIES list as that would be a waste of Seeprom space, we |
| +// convert here the ringId into the ring properties (rp) index, rpIndex. |
| +// |
| +static inline const RingId_t ringid_convert_ringId_to_rpIndex( RingId_t i_ringId ) |
| +{ |
| + if ( i_ringId >= RINGID_START_MVPD && i_ringId <= RINGID_END_MVPD ) |
| + { |
| + return i_ringId - RINGID_START_MVPD + RING_INDEX_START_MVPD; |
| + } |
| + else if ( i_ringId >= RINGID_START_EKB && i_ringId <= RINGID_END_EKB ) |
| + { |
| + return i_ringId - RINGID_START_EKB + RING_INDEX_START_EKB; |
| + } |
| + else |
| + { |
| + return UNDEFINED_RING_ID; |
| + } |
| +} |
| + |
| + |
| +static inline const char* ringid_get_ring_name(RingId_t i_ringId) |
| { |
| #ifdef __PPE__ |
| return ""; |
| #else |
| - return (i_id < NUM_RING_IDS) ? RING_PROPERTIES[i_id].ringName : "INVALID RING ID"; |
| + |
| + if ( i_ringId >= RINGID_START_MVPD && i_ringId <= RINGID_END_MVPD ) |
| + { |
| + return RING_PROPERTIES[i_ringId - RINGID_START_MVPD + RING_INDEX_START_MVPD].ringName; |
| + } |
| + else if ( i_ringId >= RINGID_START_EKB && i_ringId <= RINGID_END_EKB ) |
| + { |
| + return RING_PROPERTIES[i_ringId - RINGID_START_EKB + RING_INDEX_START_EKB].ringName; |
| + } |
| + else |
| + { |
| + return "INVALID RING ID"; |
| + } |
| + |
| #endif |
| } |
| |
| diff --git a/src/import/chips/p10/utils/imageProcs/p10_ring_id.H b/src/import/chips/p10/utils/imageProcs/p10_ring_id.H |
| index 7577454..efe5d51 100644 |
| --- a/src/import/chips/p10/utils/imageProcs/p10_ring_id.H |
| +++ b/src/import/chips/p10/utils/imageProcs/p10_ring_id.H |
| @@ -198,103 +198,103 @@ enum RingID |
| NUM_RING_IDS_MVPD = 161, |
| |
| // EKB Rings: |
| - perv_fure = 161, //0xA1 |
| - sbe_fure = 162, //0xA2 |
| - occ_fure = 163, //0xA3 |
| - perv_dpll_func = 164, //0xA4 |
| - perv_dpll_bndy = 165, //0xA5 |
| - perv_dpll_time = 166, //0xA6 |
| - perv_pll_func = 167, //0xA7 |
| - perv_pll_bndy = 168, //0xA8 |
| - n0_fure = 169, //0xA9 |
| - n1_fure = 170, //0xAA |
| - n1_nmmu1_fure = 171, //0xAB |
| - pci_fure = 172, //0xAC |
| - pci_pll_func = 173, //0xAD |
| - pci_pll_bndy = 174, //0xAE |
| - mc_fure = 175, //0xAF |
| - mc_pll_func = 176, //0xB0 |
| - mc_pll_bndy = 177, //0xB1 |
| - mc_pll_bndy_bucket_0 = 178, //0xB2 |
| - mc_pll_bndy_bucket_1 = 179, //0xB3 |
| - mc_pll_bndy_bucket_2 = 180, //0xB4 |
| - mc_pll_bndy_bucket_3 = 181, //0xB5 |
| - mc_pll_bndy_bucket_4 = 182, //0xB6 |
| - pau0_fure = 183, //0xB7 |
| - pau0_pau0_fure = 184, //0xB8 |
| - pau1_fure = 185, //0xB9 |
| - pau1_pau3_fure = 186, //0xBA |
| - pau2_fure = 187, //0xBB |
| - pau2_pau4_fure = 188, //0xBC |
| - pau2_pau5_fure = 189, //0xBD |
| - pau3_fure = 190, //0xBE |
| - pau3_pau6_fure = 191, //0xBF |
| - pau3_pau7_fure = 192, //0xC0 |
| - iohs0_fure = 193, //0xC1 |
| - iohs0_ndl_fure = 194, //0xC2 |
| - iohs0_pdl_fure = 195, //0xC3 |
| - iohs0_pll_func = 196, //0xC4 |
| - iohs0_pll_bndy = 197, //0xC5 |
| - iohs0_pll_bndy_bucket_0 = 198, //0xC6 |
| - iohs0_pll_bndy_bucket_1 = 199, //0xC7 |
| - iohs0_pll_bndy_bucket_2 = 200, //0xC8 |
| - iohs0_pll_bndy_bucket_3 = 201, //0xC9 |
| - iohs0_pll_bndy_bucket_4 = 202, //0xCA |
| - iohs0_pll_bndy_bucket_5 = 203, //0xCB |
| - iohs0_pll_bndy_bucket_6 = 204, //0xCC |
| - iohs0_pll_bndy_bucket_7 = 205, //0xCD |
| - iohs1_fure = 206, //0xCE |
| - iohs1_ndl_fure = 207, //0xCF |
| - iohs1_pdl_fure = 208, //0xD0 |
| - iohs1_pll_func = 209, //0xD1 |
| - iohs2_fure = 210, //0xD2 |
| - iohs2_ndl_fure = 211, //0xD3 |
| - iohs2_pdl_fure = 212, //0xD4 |
| - iohs2_pll_func = 213, //0xD5 |
| - iohs3_fure = 214, //0xD6 |
| - iohs3_ndl_fure = 215, //0xD7 |
| - iohs3_pdl_fure = 216, //0xD8 |
| - iohs3_pll_func = 217, //0xD9 |
| - iohs4_fure = 218, //0xDA |
| - iohs4_ndl_fure = 219, //0xDB |
| - iohs4_pdl_fure = 220, //0xDC |
| - iohs4_pll_func = 221, //0xDD |
| - iohs5_fure = 222, //0xDE |
| - iohs5_ndl_fure = 223, //0xDF |
| - iohs5_pdl_fure = 224, //0xE0 |
| - iohs5_pll_func = 225, //0xE1 |
| - iohs6_fure = 226, //0xE2 |
| - iohs6_ndl_fure = 227, //0xE3 |
| - iohs6_pdl_fure = 228, //0xE4 |
| - iohs6_pll_func = 229, //0xE5 |
| - iohs7_fure = 230, //0xE6 |
| - iohs7_ndl_fure = 231, //0xE7 |
| - iohs7_pdl_fure = 232, //0xE8 |
| - iohs7_pll_func = 233, //0xE9 |
| - eq_fure = 234, //0xEA |
| - eq_cmsk = 235, //0xEB |
| - eq_inex = 236, //0xEC |
| - eq_mode = 237, //0xED |
| - eq_clkadj_fure = 238, //0xEE |
| - eq_clkadj_cmsk = 239, //0xEF |
| - eq_clkadj_inex = 240, //0xF0 |
| - eq_clkadj_mode = 241, //0xF1 |
| - ec_cl2_fure = 242, //0xF2 |
| - ec_cl2_cmsk = 243, //0xF3 |
| - ec_cl2_inex = 244, //0xF4 |
| - ec_cl2_mode = 245, //0xF5 |
| - ec_mma_fure = 246, //0xF6 |
| - ec_mma_cmsk = 247, //0xF7 |
| - ec_mma_inex = 248, //0xF8 |
| - ec_l3_fure = 249, //0xF9 |
| - ec_l3_cmsk = 250, //0xFA |
| - ec_l3_inex = 251, //0xFB |
| - ec_l3_mode = 252, //0xFC |
| - n0_abst = 253, //0xFD |
| - n1_abst = 254, //0xFE |
| - n1_nmmu1_abst = 255, //0xFF |
| - ec_cl2_abst = 256, //0x100 |
| - ec_mma_abst = 257, //0x101 |
| + perv_fure = 256, //0x100 |
| + sbe_fure = 257, //0x101 |
| + occ_fure = 258, //0x102 |
| + perv_dpll_func = 259, //0x103 |
| + perv_dpll_bndy = 260, //0x104 |
| + perv_dpll_time = 261, //0x105 |
| + perv_pll_func = 262, //0x106 |
| + perv_pll_bndy = 263, //0x107 |
| + n0_fure = 264, //0x108 |
| + n1_fure = 265, //0x109 |
| + n1_nmmu1_fure = 266, //0x10A |
| + pci_fure = 267, //0x10B |
| + pci_pll_func = 268, //0x10C |
| + pci_pll_bndy = 269, //0x10D |
| + mc_fure = 270, //0x10E |
| + mc_pll_func = 271, //0x10F |
| + mc_pll_bndy = 272, //0x110 |
| + mc_pll_bndy_bucket_0 = 273, //0x111 |
| + mc_pll_bndy_bucket_1 = 274, //0x112 |
| + mc_pll_bndy_bucket_2 = 275, //0x113 |
| + mc_pll_bndy_bucket_3 = 276, //0x114 |
| + mc_pll_bndy_bucket_4 = 277, //0x115 |
| + pau0_fure = 278, //0x116 |
| + pau0_pau0_fure = 279, //0x117 |
| + pau1_fure = 280, //0x118 |
| + pau1_pau3_fure = 281, //0x119 |
| + pau2_fure = 282, //0x11A |
| + pau2_pau4_fure = 283, //0x11B |
| + pau2_pau5_fure = 284, //0x11C |
| + pau3_fure = 285, //0x11D |
| + pau3_pau6_fure = 286, //0x11E |
| + pau3_pau7_fure = 287, //0x11F |
| + iohs0_fure = 288, //0x120 |
| + iohs0_ndl_fure = 289, //0x121 |
| + iohs0_pdl_fure = 290, //0x122 |
| + iohs0_pll_func = 291, //0x123 |
| + iohs0_pll_bndy = 292, //0x124 |
| + iohs0_pll_bndy_bucket_0 = 293, //0x125 |
| + iohs0_pll_bndy_bucket_1 = 294, //0x126 |
| + iohs0_pll_bndy_bucket_2 = 295, //0x127 |
| + iohs0_pll_bndy_bucket_3 = 296, //0x128 |
| + iohs0_pll_bndy_bucket_4 = 297, //0x129 |
| + iohs0_pll_bndy_bucket_5 = 298, //0x12A |
| + iohs0_pll_bndy_bucket_6 = 299, //0x12B |
| + iohs0_pll_bndy_bucket_7 = 300, //0x12C |
| + iohs1_fure = 301, //0x12D |
| + iohs1_ndl_fure = 302, //0x12E |
| + iohs1_pdl_fure = 303, //0x12F |
| + iohs1_pll_func = 304, //0x130 |
| + iohs2_fure = 305, //0x131 |
| + iohs2_ndl_fure = 306, //0x132 |
| + iohs2_pdl_fure = 307, //0x133 |
| + iohs2_pll_func = 308, //0x134 |
| + iohs3_fure = 309, //0x135 |
| + iohs3_ndl_fure = 310, //0x136 |
| + iohs3_pdl_fure = 311, //0x137 |
| + iohs3_pll_func = 312, //0x138 |
| + iohs4_fure = 313, //0x139 |
| + iohs4_ndl_fure = 314, //0x13A |
| + iohs4_pdl_fure = 315, //0x13B |
| + iohs4_pll_func = 316, //0x13C |
| + iohs5_fure = 317, //0x13D |
| + iohs5_ndl_fure = 318, //0x13E |
| + iohs5_pdl_fure = 319, //0x13F |
| + iohs5_pll_func = 320, //0x140 |
| + iohs6_fure = 321, //0x141 |
| + iohs6_ndl_fure = 322, //0x142 |
| + iohs6_pdl_fure = 323, //0x143 |
| + iohs6_pll_func = 324, //0x144 |
| + iohs7_fure = 325, //0x145 |
| + iohs7_ndl_fure = 326, //0x146 |
| + iohs7_pdl_fure = 327, //0x147 |
| + iohs7_pll_func = 328, //0x148 |
| + eq_fure = 329, //0x149 |
| + eq_cmsk = 330, //0x14A |
| + eq_inex = 331, //0x14B |
| + eq_mode = 332, //0x14C |
| + eq_clkadj_fure = 333, //0x14D |
| + eq_clkadj_cmsk = 334, //0x14E |
| + eq_clkadj_inex = 335, //0x14F |
| + eq_clkadj_mode = 336, //0x150 |
| + ec_cl2_fure = 337, //0x151 |
| + ec_cl2_cmsk = 338, //0x152 |
| + ec_cl2_inex = 339, //0x153 |
| + ec_cl2_mode = 340, //0x154 |
| + ec_mma_fure = 341, //0x155 |
| + ec_mma_cmsk = 342, //0x156 |
| + ec_mma_inex = 343, //0x157 |
| + ec_l3_fure = 344, //0x158 |
| + ec_l3_cmsk = 345, //0x159 |
| + ec_l3_inex = 346, //0x15A |
| + ec_l3_mode = 347, //0x15B |
| + n0_abst = 348, //0x15C |
| + n1_abst = 349, //0x15D |
| + n1_nmmu1_abst = 350, //0x15E |
| + ec_cl2_abst = 351, //0x15F |
| + ec_mma_abst = 352, //0x160 |
| NUM_RING_IDS_EKB = 97, |
| |
| NUM_RING_IDS = 258, // = NUM_RING_IDS_MVPD + NUM_RING_IDS_EKB |
| diff --git a/src/import/chips/p10/utils/imageProcs/p10_ring_properties.H b/src/import/chips/p10/utils/imageProcs/p10_ring_properties.H |
| index 63e39f1..514eb68 100644 |
| --- a/src/import/chips/p10/utils/imageProcs/p10_ring_properties.H |
| +++ b/src/import/chips/p10/utils/imageProcs/p10_ring_properties.H |
| @@ -26,11 +26,20 @@ |
| #define _P10_RING_PROPERTIES_H_ |
| |
| static const uint8_t RING_TABLE_VERSION_DOC = 22; |
| -static const uint8_t RING_TABLE_VERSION_MVPD = 21; |
| -static const uint8_t RING_TABLE_VERSION_EKB = 21; |
| +static const uint8_t RING_TABLE_VERSION_MVPD = 22; |
| +static const uint8_t RING_TABLE_VERSION_EKB = 22; |
| |
| +// RingID values where the MVPD and EKB rings' enum values start |
| +// (Used in p10_ring_id.H) |
| #define RINGID_START_MVPD (RingId_t)0 |
| -#define RINGID_START_EKB (RingId_t)161 |
| +#define RINGID_END_MVPD (RingId_t)160 |
| +#define RINGID_START_EKB (RingId_t)256 |
| +#define RINGID_END_EKB (RingId_t)352 |
| + |
| +// Ring indices where the MVPD and EKB rings' metadata start |
| +// (Used in p10_ring_properties.H (This file)) |
| +#define RING_INDEX_START_MVPD (RingId_t)0 |
| +#define RING_INDEX_START_EKB (RingId_t)161 |
| |
| namespace PERV |
| { |
| @@ -600,266 +609,266 @@ static const ChipletData_t g_chipletData = |
| static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] = |
| { |
| // MVPD Rings: |
| - {"perv_occ_gptr" , 0x01034902, PERV::perv_occ_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 0 |
| - {"perv_occ_repr" , 0x01034906, PERV::perv_occ_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 1 |
| - {"perv_occ_time" , 0x01034907, PERV::perv_occ_time , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 2 |
| - {"pib_repr" , 0x01031006, PERV::pib_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 3 |
| - {"sbe_gptr" , 0x01032002, PERV::sbe_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 4 |
| - {"sbe_repr" , 0x01032006, PERV::sbe_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 5 |
| - {"sbe_time" , 0x01032007, PERV::sbe_time , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 6 |
| - {"invalid" , UNDEFINED_SCOM_ADDR, UNDEFINED_RING_INDEX , UNDEFINED_CHIPLET_TYPE, UNDEFINED_RING_CLASS }, // 7 |
| - {"perv_dpll_gptr" , 0x01030062, PERV::perv_dpll_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 8 |
| - {"perv_pll_gptr" , 0x01030012, PERV::perv_pll_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 9 |
| - {"n0_gptr" , 0x02036402, N0::n0_gptr , N0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 10 |
| - {"n0_repr" , 0x02036406, N0::n0_repr , N0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 11 |
| - {"n0_time" , 0x02036407, N0::n0_time , N0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 12 |
| - {"n1_gptr" , 0x03035402, N1::n1_gptr , N1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 13 |
| - {"n1_repr" , 0x03035406, N1::n1_repr , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 14 |
| - {"n1_time" , 0x03035407, N1::n1_time , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 15 |
| - {"n1_nmmu1_gptr" , 0x03030202, N1::n1_nmmu1_gptr , N1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 16 |
| - {"n1_nmmu1_repr" , 0x03030206, N1::n1_nmmu1_repr , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 17 |
| - {"n1_nmmu1_time" , 0x03030207, N1::n1_nmmu1_time , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 18 |
| - {"pci_gptr" , 0x08037F82, PCI::pci_gptr , PCI_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 19 |
| - {"pci_repr" , 0x08037F86, PCI::pci_repr , PCI_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 20 |
| - {"pci_time" , 0x08037F87, PCI::pci_time , PCI_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 21 |
| - {"pci_pll_gptr" , 0x08030012, PCI::pci_pll_gptr , PCI_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 22 |
| - {"mc_gptr" , 0x0C036F02, MC::mc_gptr , MC_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 23 |
| - {"mc_repr" , 0x0C036F06, MC::mc_repr , MC_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 24 |
| - {"mc_time" , 0x0C036F07, MC::mc_time , MC_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 25 |
| - {"mc_pll_gptr" , 0x0C030012, MC::mc_pll_gptr , MC_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 26 |
| - {"pau0_gptr" , 0x10034302, PAU0::pau0_gptr , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 27 |
| - {"pau0_repr" , 0x10034306, PAU0::pau0_repr , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 28 |
| - {"pau0_time" , 0x10034307, PAU0::pau0_time , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 29 |
| - {"pau0_pau0_gptr" , 0x10032002, PAU0::pau0_pau0_gptr , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 30 |
| - {"pau0_pau0_repr" , 0x10032006, PAU0::pau0_pau0_repr , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 31 |
| - {"pau0_pau0_time" , 0x10032007, PAU0::pau0_pau0_time , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 32 |
| - {"pau1_gptr" , 0x11034302, PAU1::pau1_gptr , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 33 |
| - {"pau1_repr" , 0x11034306, PAU1::pau1_repr , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 34 |
| - {"pau1_time" , 0x11034307, PAU1::pau1_time , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 35 |
| - {"pau1_pau3_gptr" , 0x11032002, PAU1::pau1_pau3_gptr , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 36 |
| - {"pau1_pau3_repr" , 0x11032006, PAU1::pau1_pau3_repr , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 37 |
| - {"pau1_pau3_time" , 0x11032007, PAU1::pau1_pau3_time , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 38 |
| - {"pau2_gptr" , 0x12034302, PAU2::pau2_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 39 |
| - {"pau2_repr" , 0x12034306, PAU2::pau2_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 40 |
| - {"pau2_time" , 0x12034307, PAU2::pau2_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 41 |
| - {"pau2_pau4_gptr" , 0x12032002, PAU2::pau2_pau4_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 42 |
| - {"pau2_pau4_repr" , 0x12032006, PAU2::pau2_pau4_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 43 |
| - {"pau2_pau4_time" , 0x12032007, PAU2::pau2_pau4_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 44 |
| - {"pau2_pau5_gptr" , 0x12031002, PAU2::pau2_pau5_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 45 |
| - {"pau2_pau5_repr" , 0x12031006, PAU2::pau2_pau5_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 46 |
| - {"pau2_pau5_time" , 0x12031007, PAU2::pau2_pau5_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 47 |
| - {"pau3_gptr" , 0x13034302, PAU3::pau3_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 48 |
| - {"pau3_repr" , 0x13034306, PAU3::pau3_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 49 |
| - {"pau3_time" , 0x13034307, PAU3::pau3_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 50 |
| - {"pau3_pau6_gptr" , 0x13032002, PAU3::pau3_pau6_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 51 |
| - {"pau3_pau6_repr" , 0x13032006, PAU3::pau3_pau6_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 52 |
| - {"pau3_pau6_time" , 0x13032007, PAU3::pau3_pau6_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 53 |
| - {"pau3_pau7_gptr" , 0x13031002, PAU3::pau3_pau7_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 54 |
| - {"pau3_pau7_repr" , 0x13031006, PAU3::pau3_pau7_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 55 |
| - {"pau3_pau7_time" , 0x13031007, PAU3::pau3_pau7_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 56 |
| - {"iohs0_gptr" , 0x18036002, AXON0::iohs0_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 57 |
| - {"iohs0_repr" , 0x18036006, AXON0::iohs0_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 58 |
| - {"iohs0_time" , 0x18036007, AXON0::iohs0_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 59 |
| - {"iohs0_ndl_gptr" , 0x18030402, AXON0::iohs0_ndl_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 60 |
| - {"iohs0_ndl_repr" , 0x18030406, AXON0::iohs0_ndl_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 61 |
| - {"iohs0_ndl_time" , 0x18030407, AXON0::iohs0_ndl_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 62 |
| - {"iohs0_pdl_gptr" , 0x18030202, AXON0::iohs0_pdl_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 63 |
| - {"iohs0_pdl_repr" , 0x18030206, AXON0::iohs0_pdl_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 64 |
| - {"iohs0_pdl_time" , 0x18030207, AXON0::iohs0_pdl_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 65 |
| - {"iohs0_pll_gptr" , 0x18030012, AXON0::iohs0_pll_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 66 |
| - {"iohs1_gptr" , 0x19036002, AXON1::iohs1_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 67 |
| - {"iohs1_repr" , 0x19036006, AXON1::iohs1_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 68 |
| - {"iohs1_time" , 0x19036007, AXON1::iohs1_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 69 |
| - {"iohs1_ndl_gptr" , 0x19030402, AXON1::iohs1_ndl_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 70 |
| - {"iohs1_ndl_repr" , 0x19030406, AXON1::iohs1_ndl_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 71 |
| - {"iohs1_ndl_time" , 0x19030407, AXON1::iohs1_ndl_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 72 |
| - {"iohs1_pdl_gptr" , 0x19030202, AXON1::iohs1_pdl_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 73 |
| - {"iohs1_pdl_repr" , 0x19030206, AXON1::iohs1_pdl_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 74 |
| - {"iohs1_pdl_time" , 0x19030207, AXON1::iohs1_pdl_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 75 |
| - {"iohs1_pll_gptr" , 0x19030012, AXON1::iohs1_pll_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 76 |
| - {"iohs2_gptr" , 0x1A036002, AXON2::iohs2_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 77 |
| - {"iohs2_repr" , 0x1A036006, AXON2::iohs2_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 78 |
| - {"iohs2_time" , 0x1A036007, AXON2::iohs2_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 79 |
| - {"iohs2_ndl_gptr" , 0x1A030402, AXON2::iohs2_ndl_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 80 |
| - {"iohs2_ndl_repr" , 0x1A030406, AXON2::iohs2_ndl_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 81 |
| - {"iohs2_ndl_time" , 0x1A030407, AXON2::iohs2_ndl_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 82 |
| - {"iohs2_pdl_gptr" , 0x1A030202, AXON2::iohs2_pdl_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 83 |
| - {"iohs2_pdl_repr" , 0x1A030206, AXON2::iohs2_pdl_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 84 |
| - {"iohs2_pdl_time" , 0x1A030207, AXON2::iohs2_pdl_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 85 |
| - {"iohs2_pll_gptr" , 0x1A030012, AXON2::iohs2_pll_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 86 |
| - {"iohs3_gptr" , 0x1B036002, AXON3::iohs3_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 87 |
| - {"iohs3_repr" , 0x1B036006, AXON3::iohs3_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 88 |
| - {"iohs3_time" , 0x1B036007, AXON3::iohs3_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 89 |
| - {"iohs3_ndl_gptr" , 0x1B030402, AXON3::iohs3_ndl_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 90 |
| - {"iohs3_ndl_repr" , 0x1B030406, AXON3::iohs3_ndl_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 91 |
| - {"iohs3_ndl_time" , 0x1B030407, AXON3::iohs3_ndl_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 92 |
| - {"iohs3_pdl_gptr" , 0x1B030202, AXON3::iohs3_pdl_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 93 |
| - {"iohs3_pdl_repr" , 0x1B030206, AXON3::iohs3_pdl_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 94 |
| - {"iohs3_pdl_time" , 0x1B030207, AXON3::iohs3_pdl_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 95 |
| - {"iohs3_pll_gptr" , 0x1B030012, AXON3::iohs3_pll_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 96 |
| - {"iohs4_gptr" , 0x1C036002, AXON4::iohs4_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 97 |
| - {"iohs4_repr" , 0x1C036006, AXON4::iohs4_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 98 |
| - {"iohs4_time" , 0x1C036007, AXON4::iohs4_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 99 |
| - {"iohs4_ndl_gptr" , 0x1C030402, AXON4::iohs4_ndl_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 100 |
| - {"iohs4_ndl_repr" , 0x1C030406, AXON4::iohs4_ndl_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 101 |
| - {"iohs4_ndl_time" , 0x1C030407, AXON4::iohs4_ndl_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 102 |
| - {"iohs4_pdl_gptr" , 0x1C030202, AXON4::iohs4_pdl_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 103 |
| - {"iohs4_pdl_repr" , 0x1C030206, AXON4::iohs4_pdl_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 104 |
| - {"iohs4_pdl_time" , 0x1C030207, AXON4::iohs4_pdl_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 105 |
| - {"iohs4_pll_gptr" , 0x1C030012, AXON4::iohs4_pll_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 106 |
| - {"iohs5_gptr" , 0x1D036002, AXON5::iohs5_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 107 |
| - {"iohs5_repr" , 0x1D036006, AXON5::iohs5_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 108 |
| - {"iohs5_time" , 0x1D036007, AXON5::iohs5_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 109 |
| - {"iohs5_ndl_gptr" , 0x1D030402, AXON5::iohs5_ndl_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 110 |
| - {"iohs5_ndl_repr" , 0x1D030406, AXON5::iohs5_ndl_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 111 |
| - {"iohs5_ndl_time" , 0x1D030407, AXON5::iohs5_ndl_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 112 |
| - {"iohs5_pdl_gptr" , 0x1D030202, AXON5::iohs5_pdl_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 113 |
| - {"iohs5_pdl_repr" , 0x1D030206, AXON5::iohs5_pdl_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 114 |
| - {"iohs5_pdl_time" , 0x1D030207, AXON5::iohs5_pdl_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 115 |
| - {"iohs5_pll_gptr" , 0x1D030012, AXON5::iohs5_pll_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 116 |
| - {"iohs6_gptr" , 0x1E036002, AXON6::iohs6_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 117 |
| - {"iohs6_repr" , 0x1E036006, AXON6::iohs6_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 118 |
| - {"iohs6_time" , 0x1E036007, AXON6::iohs6_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 119 |
| - {"iohs6_ndl_gptr" , 0x1E030402, AXON6::iohs6_ndl_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 120 |
| - {"iohs6_ndl_repr" , 0x1E030406, AXON6::iohs6_ndl_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 121 |
| - {"iohs6_ndl_time" , 0x1E030407, AXON6::iohs6_ndl_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 122 |
| - {"iohs6_pdl_gptr" , 0x1E030202, AXON6::iohs6_pdl_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 123 |
| - {"iohs6_pdl_repr" , 0x1E030206, AXON6::iohs6_pdl_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 124 |
| - {"iohs6_pdl_time" , 0x1E030207, AXON6::iohs6_pdl_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 125 |
| - {"iohs6_pll_gptr" , 0x1E030012, AXON6::iohs6_pll_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 126 |
| - {"iohs7_gptr" , 0x1F036002, AXON7::iohs7_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 127 |
| - {"iohs7_repr" , 0x1F036006, AXON7::iohs7_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 128 |
| - {"iohs7_time" , 0x1F036007, AXON7::iohs7_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 129 |
| - {"iohs7_ndl_gptr" , 0x1F030402, AXON7::iohs7_ndl_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 130 |
| - {"iohs7_ndl_repr" , 0x1F030406, AXON7::iohs7_ndl_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 131 |
| - {"iohs7_ndl_time" , 0x1F030407, AXON7::iohs7_ndl_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 132 |
| - {"iohs7_pdl_gptr" , 0x1F030202, AXON7::iohs7_pdl_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 133 |
| - {"iohs7_pdl_repr" , 0x1F030206, AXON7::iohs7_pdl_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 134 |
| - {"iohs7_pdl_time" , 0x1F030207, AXON7::iohs7_pdl_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 135 |
| - {"iohs7_pll_gptr" , 0x1F030012, AXON7::iohs7_pll_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 136 |
| - {"eq_gptr" , 0x20034022, EQ::eq_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 137 |
| - {"eq_repr" , 0x20034026, EQ::eq_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_EQ }, // 138 |
| - {"eq_time" , 0x20034027, EQ::eq_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 139 |
| - {"eq_clkadj_gptr" , 0x20030012, EQ::eq_clkadj_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 140 |
| - {"eq_clkadj_repr" , 0x20030016, EQ::eq_clkadj_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_EQ }, // 141 |
| - {"eq_clkadj_time" , 0x20030017, EQ::eq_clkadj_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 142 |
| - {"ec_cl2_gptr" , 0x20032002, EQ::ec_cl2_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 143 |
| - {"ec_cl2_repr" , 0x20032006, EQ::ec_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 144 |
| - {"ec_cl2_time" , 0x20032007, EQ::ec_cl2_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 145 |
| - {"ec1_cl2_repr" , 0x20031006, EQ::ec1_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 146 |
| - {"ec2_cl2_repr" , 0x20030806, EQ::ec2_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 147 |
| - {"ec3_cl2_repr" , 0x20030406, EQ::ec3_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 148 |
| - {"ec_mma_gptr" , 0x20830002, EQ::ec_mma_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 149 |
| - {"ec_mma_repr" , 0x20830006, EQ::ec_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 150 |
| - {"ec_mma_time" , 0x20830007, EQ::ec_mma_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 151 |
| - {"ec1_mma_repr" , 0x20430006, EQ::ec1_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 152 |
| - {"ec2_mma_repr" , 0x20230006, EQ::ec2_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 153 |
| - {"ec3_mma_repr" , 0x20130006, EQ::ec3_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 154 |
| - {"ec_l3_gptr" , 0x20030202, EQ::ec_l3_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 155 |
| - {"ec_l3_repr" , 0x20030206, EQ::ec_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 156 |
| - {"ec_l3_time" , 0x20030207, EQ::ec_l3_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 157 |
| - {"ec1_l3_repr" , 0x20030106, EQ::ec1_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 158 |
| - {"ec2_l3_repr" , 0x20030086, EQ::ec2_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 159 |
| - {"ec3_l3_repr" , 0x20030046, EQ::ec3_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 160 |
| + {perv_occ_gptr , "perv_occ_gptr" , 0x01034902, PERV::perv_occ_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 0 |
| + {perv_occ_repr , "perv_occ_repr" , 0x01034906, PERV::perv_occ_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 1 |
| + {perv_occ_time , "perv_occ_time" , 0x01034907, PERV::perv_occ_time , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 2 |
| + {pib_repr , "pib_repr" , 0x01031006, PERV::pib_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 3 |
| + {sbe_gptr , "sbe_gptr" , 0x01032002, PERV::sbe_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 4 |
| + {sbe_repr , "sbe_repr" , 0x01032006, PERV::sbe_repr , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 5 |
| + {sbe_time , "sbe_time" , 0x01032007, PERV::sbe_time , PERV_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 6 |
| + {HOLE_RING_ID , "invalid" , UNDEFINED_SCOM_ADDR, UNDEFINED_RING_INDEX , UNDEFINED_CHIPLET_TYPE, UNDEFINED_RING_CLASS }, // 7 |
| + {perv_dpll_gptr , "perv_dpll_gptr" , 0x01030062, PERV::perv_dpll_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 8 |
| + {perv_pll_gptr , "perv_pll_gptr" , 0x01030012, PERV::perv_pll_gptr , PERV_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 9 |
| + {n0_gptr , "n0_gptr" , 0x02036402, N0::n0_gptr , N0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 10 |
| + {n0_repr , "n0_repr" , 0x02036406, N0::n0_repr , N0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 11 |
| + {n0_time , "n0_time" , 0x02036407, N0::n0_time , N0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 12 |
| + {n1_gptr , "n1_gptr" , 0x03035402, N1::n1_gptr , N1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 13 |
| + {n1_repr , "n1_repr" , 0x03035406, N1::n1_repr , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 14 |
| + {n1_time , "n1_time" , 0x03035407, N1::n1_time , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 15 |
| + {n1_nmmu1_gptr , "n1_nmmu1_gptr" , 0x03030202, N1::n1_nmmu1_gptr , N1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 16 |
| + {n1_nmmu1_repr , "n1_nmmu1_repr" , 0x03030206, N1::n1_nmmu1_repr , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 17 |
| + {n1_nmmu1_time , "n1_nmmu1_time" , 0x03030207, N1::n1_nmmu1_time , N1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 18 |
| + {pci_gptr , "pci_gptr" , 0x08037F82, PCI::pci_gptr , PCI_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 19 |
| + {pci_repr , "pci_repr" , 0x08037F86, PCI::pci_repr , PCI_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 20 |
| + {pci_time , "pci_time" , 0x08037F87, PCI::pci_time , PCI_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 21 |
| + {pci_pll_gptr , "pci_pll_gptr" , 0x08030012, PCI::pci_pll_gptr , PCI_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 22 |
| + {mc_gptr , "mc_gptr" , 0x0C036F02, MC::mc_gptr , MC_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 23 |
| + {mc_repr , "mc_repr" , 0x0C036F06, MC::mc_repr , MC_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 24 |
| + {mc_time , "mc_time" , 0x0C036F07, MC::mc_time , MC_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 25 |
| + {mc_pll_gptr , "mc_pll_gptr" , 0x0C030012, MC::mc_pll_gptr , MC_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 26 |
| + {pau0_gptr , "pau0_gptr" , 0x10034302, PAU0::pau0_gptr , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 27 |
| + {pau0_repr , "pau0_repr" , 0x10034306, PAU0::pau0_repr , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 28 |
| + {pau0_time , "pau0_time" , 0x10034307, PAU0::pau0_time , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 29 |
| + {pau0_pau0_gptr , "pau0_pau0_gptr" , 0x10032002, PAU0::pau0_pau0_gptr , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 30 |
| + {pau0_pau0_repr , "pau0_pau0_repr" , 0x10032006, PAU0::pau0_pau0_repr , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 31 |
| + {pau0_pau0_time , "pau0_pau0_time" , 0x10032007, PAU0::pau0_pau0_time , PAU0_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 32 |
| + {pau1_gptr , "pau1_gptr" , 0x11034302, PAU1::pau1_gptr , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 33 |
| + {pau1_repr , "pau1_repr" , 0x11034306, PAU1::pau1_repr , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 34 |
| + {pau1_time , "pau1_time" , 0x11034307, PAU1::pau1_time , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 35 |
| + {pau1_pau3_gptr , "pau1_pau3_gptr" , 0x11032002, PAU1::pau1_pau3_gptr , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 36 |
| + {pau1_pau3_repr , "pau1_pau3_repr" , 0x11032006, PAU1::pau1_pau3_repr , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 37 |
| + {pau1_pau3_time , "pau1_pau3_time" , 0x11032007, PAU1::pau1_pau3_time , PAU1_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 38 |
| + {pau2_gptr , "pau2_gptr" , 0x12034302, PAU2::pau2_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 39 |
| + {pau2_repr , "pau2_repr" , 0x12034306, PAU2::pau2_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 40 |
| + {pau2_time , "pau2_time" , 0x12034307, PAU2::pau2_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 41 |
| + {pau2_pau4_gptr , "pau2_pau4_gptr" , 0x12032002, PAU2::pau2_pau4_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 42 |
| + {pau2_pau4_repr , "pau2_pau4_repr" , 0x12032006, PAU2::pau2_pau4_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 43 |
| + {pau2_pau4_time , "pau2_pau4_time" , 0x12032007, PAU2::pau2_pau4_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 44 |
| + {pau2_pau5_gptr , "pau2_pau5_gptr" , 0x12031002, PAU2::pau2_pau5_gptr , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 45 |
| + {pau2_pau5_repr , "pau2_pau5_repr" , 0x12031006, PAU2::pau2_pau5_repr , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 46 |
| + {pau2_pau5_time , "pau2_pau5_time" , 0x12031007, PAU2::pau2_pau5_time , PAU2_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 47 |
| + {pau3_gptr , "pau3_gptr" , 0x13034302, PAU3::pau3_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 48 |
| + {pau3_repr , "pau3_repr" , 0x13034306, PAU3::pau3_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 49 |
| + {pau3_time , "pau3_time" , 0x13034307, PAU3::pau3_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 50 |
| + {pau3_pau6_gptr , "pau3_pau6_gptr" , 0x13032002, PAU3::pau3_pau6_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 51 |
| + {pau3_pau6_repr , "pau3_pau6_repr" , 0x13032006, PAU3::pau3_pau6_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 52 |
| + {pau3_pau6_time , "pau3_pau6_time" , 0x13032007, PAU3::pau3_pau6_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 53 |
| + {pau3_pau7_gptr , "pau3_pau7_gptr" , 0x13031002, PAU3::pau3_pau7_gptr , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 54 |
| + {pau3_pau7_repr , "pau3_pau7_repr" , 0x13031006, PAU3::pau3_pau7_repr , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 55 |
| + {pau3_pau7_time , "pau3_pau7_time" , 0x13031007, PAU3::pau3_pau7_time , PAU3_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 56 |
| + {iohs0_gptr , "iohs0_gptr" , 0x18036002, AXON0::iohs0_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 57 |
| + {iohs0_repr , "iohs0_repr" , 0x18036006, AXON0::iohs0_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 58 |
| + {iohs0_time , "iohs0_time" , 0x18036007, AXON0::iohs0_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 59 |
| + {iohs0_ndl_gptr , "iohs0_ndl_gptr" , 0x18030402, AXON0::iohs0_ndl_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 60 |
| + {iohs0_ndl_repr , "iohs0_ndl_repr" , 0x18030406, AXON0::iohs0_ndl_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 61 |
| + {iohs0_ndl_time , "iohs0_ndl_time" , 0x18030407, AXON0::iohs0_ndl_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 62 |
| + {iohs0_pdl_gptr , "iohs0_pdl_gptr" , 0x18030202, AXON0::iohs0_pdl_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 63 |
| + {iohs0_pdl_repr , "iohs0_pdl_repr" , 0x18030206, AXON0::iohs0_pdl_repr , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 64 |
| + {iohs0_pdl_time , "iohs0_pdl_time" , 0x18030207, AXON0::iohs0_pdl_time , AXON0_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 65 |
| + {iohs0_pll_gptr , "iohs0_pll_gptr" , 0x18030012, AXON0::iohs0_pll_gptr , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 66 |
| + {iohs1_gptr , "iohs1_gptr" , 0x19036002, AXON1::iohs1_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 67 |
| + {iohs1_repr , "iohs1_repr" , 0x19036006, AXON1::iohs1_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 68 |
| + {iohs1_time , "iohs1_time" , 0x19036007, AXON1::iohs1_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 69 |
| + {iohs1_ndl_gptr , "iohs1_ndl_gptr" , 0x19030402, AXON1::iohs1_ndl_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 70 |
| + {iohs1_ndl_repr , "iohs1_ndl_repr" , 0x19030406, AXON1::iohs1_ndl_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 71 |
| + {iohs1_ndl_time , "iohs1_ndl_time" , 0x19030407, AXON1::iohs1_ndl_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 72 |
| + {iohs1_pdl_gptr , "iohs1_pdl_gptr" , 0x19030202, AXON1::iohs1_pdl_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 73 |
| + {iohs1_pdl_repr , "iohs1_pdl_repr" , 0x19030206, AXON1::iohs1_pdl_repr , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 74 |
| + {iohs1_pdl_time , "iohs1_pdl_time" , 0x19030207, AXON1::iohs1_pdl_time , AXON1_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 75 |
| + {iohs1_pll_gptr , "iohs1_pll_gptr" , 0x19030012, AXON1::iohs1_pll_gptr , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 76 |
| + {iohs2_gptr , "iohs2_gptr" , 0x1A036002, AXON2::iohs2_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 77 |
| + {iohs2_repr , "iohs2_repr" , 0x1A036006, AXON2::iohs2_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 78 |
| + {iohs2_time , "iohs2_time" , 0x1A036007, AXON2::iohs2_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 79 |
| + {iohs2_ndl_gptr , "iohs2_ndl_gptr" , 0x1A030402, AXON2::iohs2_ndl_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 80 |
| + {iohs2_ndl_repr , "iohs2_ndl_repr" , 0x1A030406, AXON2::iohs2_ndl_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 81 |
| + {iohs2_ndl_time , "iohs2_ndl_time" , 0x1A030407, AXON2::iohs2_ndl_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 82 |
| + {iohs2_pdl_gptr , "iohs2_pdl_gptr" , 0x1A030202, AXON2::iohs2_pdl_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 83 |
| + {iohs2_pdl_repr , "iohs2_pdl_repr" , 0x1A030206, AXON2::iohs2_pdl_repr , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 84 |
| + {iohs2_pdl_time , "iohs2_pdl_time" , 0x1A030207, AXON2::iohs2_pdl_time , AXON2_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 85 |
| + {iohs2_pll_gptr , "iohs2_pll_gptr" , 0x1A030012, AXON2::iohs2_pll_gptr , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 86 |
| + {iohs3_gptr , "iohs3_gptr" , 0x1B036002, AXON3::iohs3_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 87 |
| + {iohs3_repr , "iohs3_repr" , 0x1B036006, AXON3::iohs3_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 88 |
| + {iohs3_time , "iohs3_time" , 0x1B036007, AXON3::iohs3_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 89 |
| + {iohs3_ndl_gptr , "iohs3_ndl_gptr" , 0x1B030402, AXON3::iohs3_ndl_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 90 |
| + {iohs3_ndl_repr , "iohs3_ndl_repr" , 0x1B030406, AXON3::iohs3_ndl_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 91 |
| + {iohs3_ndl_time , "iohs3_ndl_time" , 0x1B030407, AXON3::iohs3_ndl_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 92 |
| + {iohs3_pdl_gptr , "iohs3_pdl_gptr" , 0x1B030202, AXON3::iohs3_pdl_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 93 |
| + {iohs3_pdl_repr , "iohs3_pdl_repr" , 0x1B030206, AXON3::iohs3_pdl_repr , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 94 |
| + {iohs3_pdl_time , "iohs3_pdl_time" , 0x1B030207, AXON3::iohs3_pdl_time , AXON3_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 95 |
| + {iohs3_pll_gptr , "iohs3_pll_gptr" , 0x1B030012, AXON3::iohs3_pll_gptr , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 96 |
| + {iohs4_gptr , "iohs4_gptr" , 0x1C036002, AXON4::iohs4_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 97 |
| + {iohs4_repr , "iohs4_repr" , 0x1C036006, AXON4::iohs4_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 98 |
| + {iohs4_time , "iohs4_time" , 0x1C036007, AXON4::iohs4_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 99 |
| + {iohs4_ndl_gptr , "iohs4_ndl_gptr" , 0x1C030402, AXON4::iohs4_ndl_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 100 |
| + {iohs4_ndl_repr , "iohs4_ndl_repr" , 0x1C030406, AXON4::iohs4_ndl_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 101 |
| + {iohs4_ndl_time , "iohs4_ndl_time" , 0x1C030407, AXON4::iohs4_ndl_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 102 |
| + {iohs4_pdl_gptr , "iohs4_pdl_gptr" , 0x1C030202, AXON4::iohs4_pdl_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 103 |
| + {iohs4_pdl_repr , "iohs4_pdl_repr" , 0x1C030206, AXON4::iohs4_pdl_repr , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 104 |
| + {iohs4_pdl_time , "iohs4_pdl_time" , 0x1C030207, AXON4::iohs4_pdl_time , AXON4_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 105 |
| + {iohs4_pll_gptr , "iohs4_pll_gptr" , 0x1C030012, AXON4::iohs4_pll_gptr , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 106 |
| + {iohs5_gptr , "iohs5_gptr" , 0x1D036002, AXON5::iohs5_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 107 |
| + {iohs5_repr , "iohs5_repr" , 0x1D036006, AXON5::iohs5_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 108 |
| + {iohs5_time , "iohs5_time" , 0x1D036007, AXON5::iohs5_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 109 |
| + {iohs5_ndl_gptr , "iohs5_ndl_gptr" , 0x1D030402, AXON5::iohs5_ndl_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 110 |
| + {iohs5_ndl_repr , "iohs5_ndl_repr" , 0x1D030406, AXON5::iohs5_ndl_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 111 |
| + {iohs5_ndl_time , "iohs5_ndl_time" , 0x1D030407, AXON5::iohs5_ndl_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 112 |
| + {iohs5_pdl_gptr , "iohs5_pdl_gptr" , 0x1D030202, AXON5::iohs5_pdl_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 113 |
| + {iohs5_pdl_repr , "iohs5_pdl_repr" , 0x1D030206, AXON5::iohs5_pdl_repr , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 114 |
| + {iohs5_pdl_time , "iohs5_pdl_time" , 0x1D030207, AXON5::iohs5_pdl_time , AXON5_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 115 |
| + {iohs5_pll_gptr , "iohs5_pll_gptr" , 0x1D030012, AXON5::iohs5_pll_gptr , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 116 |
| + {iohs6_gptr , "iohs6_gptr" , 0x1E036002, AXON6::iohs6_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 117 |
| + {iohs6_repr , "iohs6_repr" , 0x1E036006, AXON6::iohs6_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 118 |
| + {iohs6_time , "iohs6_time" , 0x1E036007, AXON6::iohs6_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 119 |
| + {iohs6_ndl_gptr , "iohs6_ndl_gptr" , 0x1E030402, AXON6::iohs6_ndl_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 120 |
| + {iohs6_ndl_repr , "iohs6_ndl_repr" , 0x1E030406, AXON6::iohs6_ndl_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 121 |
| + {iohs6_ndl_time , "iohs6_ndl_time" , 0x1E030407, AXON6::iohs6_ndl_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 122 |
| + {iohs6_pdl_gptr , "iohs6_pdl_gptr" , 0x1E030202, AXON6::iohs6_pdl_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 123 |
| + {iohs6_pdl_repr , "iohs6_pdl_repr" , 0x1E030206, AXON6::iohs6_pdl_repr , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 124 |
| + {iohs6_pdl_time , "iohs6_pdl_time" , 0x1E030207, AXON6::iohs6_pdl_time , AXON6_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 125 |
| + {iohs6_pll_gptr , "iohs6_pll_gptr" , 0x1E030012, AXON6::iohs6_pll_gptr , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 126 |
| + {iohs7_gptr , "iohs7_gptr" , 0x1F036002, AXON7::iohs7_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 127 |
| + {iohs7_repr , "iohs7_repr" , 0x1F036006, AXON7::iohs7_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 128 |
| + {iohs7_time , "iohs7_time" , 0x1F036007, AXON7::iohs7_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 129 |
| + {iohs7_ndl_gptr , "iohs7_ndl_gptr" , 0x1F030402, AXON7::iohs7_ndl_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 130 |
| + {iohs7_ndl_repr , "iohs7_ndl_repr" , 0x1F030406, AXON7::iohs7_ndl_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 131 |
| + {iohs7_ndl_time , "iohs7_ndl_time" , 0x1F030407, AXON7::iohs7_ndl_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 132 |
| + {iohs7_pdl_gptr , "iohs7_pdl_gptr" , 0x1F030202, AXON7::iohs7_pdl_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 133 |
| + {iohs7_pdl_repr , "iohs7_pdl_repr" , 0x1F030206, AXON7::iohs7_pdl_repr , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDR_NEST }, // 134 |
| + {iohs7_pdl_time , "iohs7_pdl_time" , 0x1F030207, AXON7::iohs7_pdl_time , AXON7_TYPE, RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 135 |
| + {iohs7_pll_gptr , "iohs7_pll_gptr" , 0x1F030012, AXON7::iohs7_pll_gptr , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 136 |
| + {eq_gptr , "eq_gptr" , 0x20034022, EQ::eq_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 137 |
| + {eq_repr , "eq_repr" , 0x20034026, EQ::eq_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_EQ }, // 138 |
| + {eq_time , "eq_time" , 0x20034027, EQ::eq_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 139 |
| + {eq_clkadj_gptr , "eq_clkadj_gptr" , 0x20030012, EQ::eq_clkadj_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY }, // 140 |
| + {eq_clkadj_repr , "eq_clkadj_repr" , 0x20030016, EQ::eq_clkadj_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_EQ }, // 141 |
| + {eq_clkadj_time , "eq_clkadj_time" , 0x20030017, EQ::eq_clkadj_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME }, // 142 |
| + {ec_cl2_gptr , "ec_cl2_gptr" , 0x20032002, EQ::ec_cl2_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 143 |
| + {ec_cl2_repr , "ec_cl2_repr" , 0x20032006, EQ::ec_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 144 |
| + {ec_cl2_time , "ec_cl2_time" , 0x20032007, EQ::ec_cl2_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 145 |
| + {ec1_cl2_repr , "ec1_cl2_repr" , 0x20031006, EQ::ec1_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 146 |
| + {ec2_cl2_repr , "ec2_cl2_repr" , 0x20030806, EQ::ec2_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 147 |
| + {ec3_cl2_repr , "ec3_cl2_repr" , 0x20030406, EQ::ec3_cl2_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 148 |
| + {ec_mma_gptr , "ec_mma_gptr" , 0x20830002, EQ::ec_mma_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 149 |
| + {ec_mma_repr , "ec_mma_repr" , 0x20830006, EQ::ec_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 150 |
| + {ec_mma_time , "ec_mma_time" , 0x20830007, EQ::ec_mma_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 151 |
| + {ec1_mma_repr , "ec1_mma_repr" , 0x20430006, EQ::ec1_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 152 |
| + {ec2_mma_repr , "ec2_mma_repr" , 0x20230006, EQ::ec2_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 153 |
| + {ec3_mma_repr , "ec3_mma_repr" , 0x20130006, EQ::ec3_mma_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 154 |
| + {ec_l3_gptr , "ec_l3_gptr" , 0x20030202, EQ::ec_l3_gptr , EQ_TYPE , RMRK_ROOT | RCLS_EKB_MVPD_PDG_OVLY | RMRK_SCAN_BY_QME }, // 155 |
| + {ec_l3_repr , "ec_l3_repr" , 0x20030206, EQ::ec_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 156 |
| + {ec_l3_time , "ec_l3_time" , 0x20030207, EQ::ec_l3_time , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDG_TIME | RMRK_SCAN_BY_QME }, // 157 |
| + {ec1_l3_repr , "ec1_l3_repr" , 0x20030106, EQ::ec1_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 158 |
| + {ec2_l3_repr , "ec2_l3_repr" , 0x20030086, EQ::ec2_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 159 |
| + {ec3_l3_repr , "ec3_l3_repr" , 0x20030046, EQ::ec3_l3_repr , EQ_TYPE , RMRK_ROOT | RCLS_MVPD_PDR_CORE | RMRK_SCAN_BY_QME }, // 160 |
| |
| // EKB Rings: |
| - {"perv_fure" , 0x0103410F, PERV::perv_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 161 |
| - {"sbe_fure" , 0x0103200F, PERV::sbe_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 162 |
| - {"occ_fure" , 0x0103080F, PERV::occ_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 163 |
| - {"perv_dpll_func" , 0x01030060, PERV::perv_dpll_func , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 164 |
| - {"perv_dpll_bndy" , 0x01030068, PERV::perv_dpll_bndy , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 165 |
| - {"perv_dpll_time" , 0x01030067, PERV::perv_dpll_time , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 166 |
| - {"perv_pll_func" , 0x01030010, PERV::perv_pll_func , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 167 |
| - {"perv_pll_bndy" , 0x01030018, PERV::perv_pll_bndy , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 168 |
| - {"n0_fure" , 0x0203640F, N0::n0_fure , N0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 169 |
| - {"n1_fure" , 0x0303540F, N1::n1_fure , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 170 |
| - {"n1_nmmu1_fure" , 0x0303020F, N1::n1_nmmu1_fure , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 171 |
| - {"pci_fure" , 0x08037F8F, PCI::pci_fure , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 172 |
| - {"pci_pll_func" , 0x08030010, PCI::pci_pll_func , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 173 |
| - {"pci_pll_bndy" , 0x08030018, PCI::pci_pll_bndy , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 174 |
| - {"mc_fure" , 0x0C036F0F, MC::mc_fure , MC_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 175 |
| - {"mc_pll_func" , 0x0C030010, MC::mc_pll_func , MC_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 176 |
| - {"mc_pll_bndy" , 0x0C030018, MC::mc_pll_bndy , MC_TYPE , RMRK_ROOT | RMRK_HAS_DERIVS | RCLS_EKB_RINGS }, // 177 |
| - {"mc_pll_bndy_bucket_0" , 0x0C030018, MC::mc_pll_bndy_bucket_0 , MC_TYPE , RCLS_EKB_RINGS }, // 178 |
| - {"mc_pll_bndy_bucket_1" , 0x0C030018, MC::mc_pll_bndy_bucket_1 , MC_TYPE , RCLS_EKB_RINGS }, // 179 |
| - {"mc_pll_bndy_bucket_2" , 0x0C030018, MC::mc_pll_bndy_bucket_2 , MC_TYPE , RCLS_EKB_RINGS }, // 180 |
| - {"mc_pll_bndy_bucket_3" , 0x0C030018, MC::mc_pll_bndy_bucket_3 , MC_TYPE , RCLS_EKB_RINGS }, // 181 |
| - {"mc_pll_bndy_bucket_4" , 0x0C030018, MC::mc_pll_bndy_bucket_4 , MC_TYPE , RCLS_EKB_RINGS }, // 182 |
| - {"pau0_fure" , 0x1003430F, PAU0::pau0_fure , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 183 |
| - {"pau0_pau0_fure" , 0x1003200F, PAU0::pau0_pau0_fure , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 184 |
| - {"pau1_fure" , 0x1103430F, PAU1::pau1_fure , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 185 |
| - {"pau1_pau3_fure" , 0x1103200F, PAU1::pau1_pau3_fure , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 186 |
| - {"pau2_fure" , 0x1203430F, PAU2::pau2_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 187 |
| - {"pau2_pau4_fure" , 0x1203200F, PAU2::pau2_pau4_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 188 |
| - {"pau2_pau5_fure" , 0x1203100F, PAU2::pau2_pau5_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 189 |
| - {"pau3_fure" , 0x1303430F, PAU3::pau3_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 190 |
| - {"pau3_pau6_fure" , 0x1303200F, PAU3::pau3_pau6_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 191 |
| - {"pau3_pau7_fure" , 0x1303100F, PAU3::pau3_pau7_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 192 |
| - {"iohs0_fure" , 0x1803600F, AXON0::iohs0_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 193 |
| - {"iohs0_ndl_fure" , 0x1803040F, AXON0::iohs0_ndl_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 194 |
| - {"iohs0_pdl_fure" , 0x1803020F, AXON0::iohs0_pdl_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 195 |
| - {"iohs0_pll_func" , 0x18030010, AXON0::iohs0_pll_func , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 196 |
| - {"iohs0_pll_bndy" , 0x18030018, AXON0::iohs0_pll_bndy , AXON0_TYPE, RMRK_ROOT | RMRK_HAS_DERIVS | RCLS_EKB_RINGS }, // 197 |
| - {"iohs0_pll_bndy_bucket_0" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_0, AXON0_TYPE, RCLS_EKB_RINGS }, // 198 |
| - {"iohs0_pll_bndy_bucket_1" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_1, AXON0_TYPE, RCLS_EKB_RINGS }, // 199 |
| - {"iohs0_pll_bndy_bucket_2" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_2, AXON0_TYPE, RCLS_EKB_RINGS }, // 200 |
| - {"iohs0_pll_bndy_bucket_3" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_3, AXON0_TYPE, RCLS_EKB_RINGS }, // 201 |
| - {"iohs0_pll_bndy_bucket_4" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_4, AXON0_TYPE, RCLS_EKB_RINGS }, // 202 |
| - {"iohs0_pll_bndy_bucket_5" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_5, AXON0_TYPE, RCLS_EKB_RINGS }, // 203 |
| - {"iohs0_pll_bndy_bucket_6" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_6, AXON0_TYPE, RCLS_EKB_RINGS }, // 204 |
| - {"iohs0_pll_bndy_bucket_7" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_7, AXON0_TYPE, RCLS_EKB_RINGS }, // 205 |
| - {"iohs1_fure" , 0x1903600F, AXON1::iohs1_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 206 |
| - {"iohs1_ndl_fure" , 0x1903040F, AXON1::iohs1_ndl_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 207 |
| - {"iohs1_pdl_fure" , 0x1903020F, AXON1::iohs1_pdl_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 208 |
| - {"iohs1_pll_func" , 0x19030010, AXON1::iohs1_pll_func , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 209 |
| - {"iohs2_fure" , 0x1A03600F, AXON2::iohs2_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 210 |
| - {"iohs2_ndl_fure" , 0x1A03040F, AXON2::iohs2_ndl_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 211 |
| - {"iohs2_pdl_fure" , 0x1A03020F, AXON2::iohs2_pdl_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 212 |
| - {"iohs2_pll_func" , 0x1A030010, AXON2::iohs2_pll_func , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 213 |
| - {"iohs3_fure" , 0x1B03600F, AXON3::iohs3_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 214 |
| - {"iohs3_ndl_fure" , 0x1B03040F, AXON3::iohs3_ndl_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 215 |
| - {"iohs3_pdl_fure" , 0x1B03020F, AXON3::iohs3_pdl_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 216 |
| - {"iohs3_pll_func" , 0x1B030010, AXON3::iohs3_pll_func , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 217 |
| - {"iohs4_fure" , 0x1C03600F, AXON4::iohs4_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 218 |
| - {"iohs4_ndl_fure" , 0x1C03040F, AXON4::iohs4_ndl_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 219 |
| - {"iohs4_pdl_fure" , 0x1C03020F, AXON4::iohs4_pdl_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 220 |
| - {"iohs4_pll_func" , 0x1C030010, AXON4::iohs4_pll_func , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 221 |
| - {"iohs5_fure" , 0x1D03600F, AXON5::iohs5_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 222 |
| - {"iohs5_ndl_fure" , 0x1D03040F, AXON5::iohs5_ndl_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 223 |
| - {"iohs5_pdl_fure" , 0x1D03020F, AXON5::iohs5_pdl_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 224 |
| - {"iohs5_pll_func" , 0x1D030010, AXON5::iohs5_pll_func , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 225 |
| - {"iohs6_fure" , 0x1E03600F, AXON6::iohs6_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 226 |
| - {"iohs6_ndl_fure" , 0x1E03040F, AXON6::iohs6_ndl_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 227 |
| - {"iohs6_pdl_fure" , 0x1E03020F, AXON6::iohs6_pdl_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 228 |
| - {"iohs6_pll_func" , 0x1E030010, AXON6::iohs6_pll_func , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 229 |
| - {"iohs7_fure" , 0x1F03600F, AXON7::iohs7_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 230 |
| - {"iohs7_ndl_fure" , 0x1F03040F, AXON7::iohs7_ndl_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 231 |
| - {"iohs7_pdl_fure" , 0x1F03020F, AXON7::iohs7_pdl_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 232 |
| - {"iohs7_pll_func" , 0x1F030010, AXON7::iohs7_pll_func , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 233 |
| - {"eq_fure" , 0x2003402F, EQ::eq_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 234 |
| - {"eq_cmsk" , 0x2003402A, EQ::eq_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 235 |
| - {"eq_inex" , 0x2003402B, EQ::eq_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 236 |
| - {"eq_mode" , 0x20034021, EQ::eq_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 237 |
| - {"eq_clkadj_fure" , 0x2003001F, EQ::eq_clkadj_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 238 |
| - {"eq_clkadj_cmsk" , 0x2003001A, EQ::eq_clkadj_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 239 |
| - {"eq_clkadj_inex" , 0x2003001B, EQ::eq_clkadj_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 240 |
| - {"eq_clkadj_mode" , 0x20030011, EQ::eq_clkadj_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 241 |
| - {"ec_cl2_fure" , 0x2003200F, EQ::ec_cl2_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 242 |
| - {"ec_cl2_cmsk" , 0x2003200A, EQ::ec_cl2_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 243 |
| - {"ec_cl2_inex" , 0x2003200B, EQ::ec_cl2_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 244 |
| - {"ec_cl2_mode" , 0x20032001, EQ::ec_cl2_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 245 |
| - {"ec_mma_fure" , 0x2083000F, EQ::ec_mma_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 246 |
| - {"ec_mma_cmsk" , 0x2083000A, EQ::ec_mma_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 247 |
| - {"ec_mma_inex" , 0x2083000B, EQ::ec_mma_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 248 |
| - {"ec_l3_fure" , 0x2003020F, EQ::ec_l3_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 249 |
| - {"ec_l3_cmsk" , 0x2003020A, EQ::ec_l3_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 250 |
| - {"ec_l3_inex" , 0x2003020B, EQ::ec_l3_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 251 |
| - {"ec_l3_mode" , 0x20030201, EQ::ec_l3_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 252 |
| - {"n0_abst" , 0x02036405, N0::n0_abst , N0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 253 |
| - {"n1_abst" , 0x03035405, N1::n1_abst , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 254 |
| - {"n1_nmmu1_abst" , 0x03030205, N1::n1_nmmu1_abst , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 255 |
| - {"ec_cl2_abst" , 0x20032005, EQ::ec_cl2_abst , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 256 |
| - {"ec_mma_abst" , 0x20830005, EQ::ec_mma_abst , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 257 |
| + {perv_fure , "perv_fure" , 0x0103410F, PERV::perv_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 256 |
| + {sbe_fure , "sbe_fure" , 0x0103200F, PERV::sbe_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 257 |
| + {occ_fure , "occ_fure" , 0x0103080F, PERV::occ_fure , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 258 |
| + {perv_dpll_func , "perv_dpll_func" , 0x01030060, PERV::perv_dpll_func , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 259 |
| + {perv_dpll_bndy , "perv_dpll_bndy" , 0x01030068, PERV::perv_dpll_bndy , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 260 |
| + {perv_dpll_time , "perv_dpll_time" , 0x01030067, PERV::perv_dpll_time , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 261 |
| + {perv_pll_func , "perv_pll_func" , 0x01030010, PERV::perv_pll_func , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 262 |
| + {perv_pll_bndy , "perv_pll_bndy" , 0x01030018, PERV::perv_pll_bndy , PERV_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 263 |
| + {n0_fure , "n0_fure" , 0x0203640F, N0::n0_fure , N0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 264 |
| + {n1_fure , "n1_fure" , 0x0303540F, N1::n1_fure , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 265 |
| + {n1_nmmu1_fure , "n1_nmmu1_fure" , 0x0303020F, N1::n1_nmmu1_fure , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 266 |
| + {pci_fure , "pci_fure" , 0x08037F8F, PCI::pci_fure , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 267 |
| + {pci_pll_func , "pci_pll_func" , 0x08030010, PCI::pci_pll_func , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 268 |
| + {pci_pll_bndy , "pci_pll_bndy" , 0x08030018, PCI::pci_pll_bndy , PCI_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 269 |
| + {mc_fure , "mc_fure" , 0x0C036F0F, MC::mc_fure , MC_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 270 |
| + {mc_pll_func , "mc_pll_func" , 0x0C030010, MC::mc_pll_func , MC_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 271 |
| + {mc_pll_bndy , "mc_pll_bndy" , 0x0C030018, MC::mc_pll_bndy , MC_TYPE , RMRK_ROOT | RMRK_HAS_DERIVS | RCLS_EKB_RINGS }, // 272 |
| + {mc_pll_bndy_bucket_0 , "mc_pll_bndy_bucket_0" , 0x0C030018, MC::mc_pll_bndy_bucket_0 , MC_TYPE , RCLS_EKB_RINGS }, // 273 |
| + {mc_pll_bndy_bucket_1 , "mc_pll_bndy_bucket_1" , 0x0C030018, MC::mc_pll_bndy_bucket_1 , MC_TYPE , RCLS_EKB_RINGS }, // 274 |
| + {mc_pll_bndy_bucket_2 , "mc_pll_bndy_bucket_2" , 0x0C030018, MC::mc_pll_bndy_bucket_2 , MC_TYPE , RCLS_EKB_RINGS }, // 275 |
| + {mc_pll_bndy_bucket_3 , "mc_pll_bndy_bucket_3" , 0x0C030018, MC::mc_pll_bndy_bucket_3 , MC_TYPE , RCLS_EKB_RINGS }, // 276 |
| + {mc_pll_bndy_bucket_4 , "mc_pll_bndy_bucket_4" , 0x0C030018, MC::mc_pll_bndy_bucket_4 , MC_TYPE , RCLS_EKB_RINGS }, // 277 |
| + {pau0_fure , "pau0_fure" , 0x1003430F, PAU0::pau0_fure , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 278 |
| + {pau0_pau0_fure , "pau0_pau0_fure" , 0x1003200F, PAU0::pau0_pau0_fure , PAU0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 279 |
| + {pau1_fure , "pau1_fure" , 0x1103430F, PAU1::pau1_fure , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 280 |
| + {pau1_pau3_fure , "pau1_pau3_fure" , 0x1103200F, PAU1::pau1_pau3_fure , PAU1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 281 |
| + {pau2_fure , "pau2_fure" , 0x1203430F, PAU2::pau2_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 282 |
| + {pau2_pau4_fure , "pau2_pau4_fure" , 0x1203200F, PAU2::pau2_pau4_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 283 |
| + {pau2_pau5_fure , "pau2_pau5_fure" , 0x1203100F, PAU2::pau2_pau5_fure , PAU2_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 284 |
| + {pau3_fure , "pau3_fure" , 0x1303430F, PAU3::pau3_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 285 |
| + {pau3_pau6_fure , "pau3_pau6_fure" , 0x1303200F, PAU3::pau3_pau6_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 286 |
| + {pau3_pau7_fure , "pau3_pau7_fure" , 0x1303100F, PAU3::pau3_pau7_fure , PAU3_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 287 |
| + {iohs0_fure , "iohs0_fure" , 0x1803600F, AXON0::iohs0_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 288 |
| + {iohs0_ndl_fure , "iohs0_ndl_fure" , 0x1803040F, AXON0::iohs0_ndl_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 289 |
| + {iohs0_pdl_fure , "iohs0_pdl_fure" , 0x1803020F, AXON0::iohs0_pdl_fure , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 290 |
| + {iohs0_pll_func , "iohs0_pll_func" , 0x18030010, AXON0::iohs0_pll_func , AXON0_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 291 |
| + {iohs0_pll_bndy , "iohs0_pll_bndy" , 0x18030018, AXON0::iohs0_pll_bndy , AXON0_TYPE, RMRK_ROOT | RMRK_HAS_DERIVS | RCLS_EKB_RINGS }, // 292 |
| + {iohs0_pll_bndy_bucket_0, "iohs0_pll_bndy_bucket_0" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_0, AXON0_TYPE, RCLS_EKB_RINGS }, // 293 |
| + {iohs0_pll_bndy_bucket_1, "iohs0_pll_bndy_bucket_1" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_1, AXON0_TYPE, RCLS_EKB_RINGS }, // 294 |
| + {iohs0_pll_bndy_bucket_2, "iohs0_pll_bndy_bucket_2" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_2, AXON0_TYPE, RCLS_EKB_RINGS }, // 295 |
| + {iohs0_pll_bndy_bucket_3, "iohs0_pll_bndy_bucket_3" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_3, AXON0_TYPE, RCLS_EKB_RINGS }, // 296 |
| + {iohs0_pll_bndy_bucket_4, "iohs0_pll_bndy_bucket_4" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_4, AXON0_TYPE, RCLS_EKB_RINGS }, // 297 |
| + {iohs0_pll_bndy_bucket_5, "iohs0_pll_bndy_bucket_5" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_5, AXON0_TYPE, RCLS_EKB_RINGS }, // 298 |
| + {iohs0_pll_bndy_bucket_6, "iohs0_pll_bndy_bucket_6" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_6, AXON0_TYPE, RCLS_EKB_RINGS }, // 299 |
| + {iohs0_pll_bndy_bucket_7, "iohs0_pll_bndy_bucket_7" , 0x18030018, AXON0::iohs0_pll_bndy_bucket_7, AXON0_TYPE, RCLS_EKB_RINGS }, // 300 |
| + {iohs1_fure , "iohs1_fure" , 0x1903600F, AXON1::iohs1_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 301 |
| + {iohs1_ndl_fure , "iohs1_ndl_fure" , 0x1903040F, AXON1::iohs1_ndl_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 302 |
| + {iohs1_pdl_fure , "iohs1_pdl_fure" , 0x1903020F, AXON1::iohs1_pdl_fure , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 303 |
| + {iohs1_pll_func , "iohs1_pll_func" , 0x19030010, AXON1::iohs1_pll_func , AXON1_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 304 |
| + {iohs2_fure , "iohs2_fure" , 0x1A03600F, AXON2::iohs2_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 305 |
| + {iohs2_ndl_fure , "iohs2_ndl_fure" , 0x1A03040F, AXON2::iohs2_ndl_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 306 |
| + {iohs2_pdl_fure , "iohs2_pdl_fure" , 0x1A03020F, AXON2::iohs2_pdl_fure , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 307 |
| + {iohs2_pll_func , "iohs2_pll_func" , 0x1A030010, AXON2::iohs2_pll_func , AXON2_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 308 |
| + {iohs3_fure , "iohs3_fure" , 0x1B03600F, AXON3::iohs3_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 309 |
| + {iohs3_ndl_fure , "iohs3_ndl_fure" , 0x1B03040F, AXON3::iohs3_ndl_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 310 |
| + {iohs3_pdl_fure , "iohs3_pdl_fure" , 0x1B03020F, AXON3::iohs3_pdl_fure , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 311 |
| + {iohs3_pll_func , "iohs3_pll_func" , 0x1B030010, AXON3::iohs3_pll_func , AXON3_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 312 |
| + {iohs4_fure , "iohs4_fure" , 0x1C03600F, AXON4::iohs4_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 313 |
| + {iohs4_ndl_fure , "iohs4_ndl_fure" , 0x1C03040F, AXON4::iohs4_ndl_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 314 |
| + {iohs4_pdl_fure , "iohs4_pdl_fure" , 0x1C03020F, AXON4::iohs4_pdl_fure , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 315 |
| + {iohs4_pll_func , "iohs4_pll_func" , 0x1C030010, AXON4::iohs4_pll_func , AXON4_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 316 |
| + {iohs5_fure , "iohs5_fure" , 0x1D03600F, AXON5::iohs5_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 317 |
| + {iohs5_ndl_fure , "iohs5_ndl_fure" , 0x1D03040F, AXON5::iohs5_ndl_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 318 |
| + {iohs5_pdl_fure , "iohs5_pdl_fure" , 0x1D03020F, AXON5::iohs5_pdl_fure , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 319 |
| + {iohs5_pll_func , "iohs5_pll_func" , 0x1D030010, AXON5::iohs5_pll_func , AXON5_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 320 |
| + {iohs6_fure , "iohs6_fure" , 0x1E03600F, AXON6::iohs6_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 321 |
| + {iohs6_ndl_fure , "iohs6_ndl_fure" , 0x1E03040F, AXON6::iohs6_ndl_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 322 |
| + {iohs6_pdl_fure , "iohs6_pdl_fure" , 0x1E03020F, AXON6::iohs6_pdl_fure , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 323 |
| + {iohs6_pll_func , "iohs6_pll_func" , 0x1E030010, AXON6::iohs6_pll_func , AXON6_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 324 |
| + {iohs7_fure , "iohs7_fure" , 0x1F03600F, AXON7::iohs7_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 325 |
| + {iohs7_ndl_fure , "iohs7_ndl_fure" , 0x1F03040F, AXON7::iohs7_ndl_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 326 |
| + {iohs7_pdl_fure , "iohs7_pdl_fure" , 0x1F03020F, AXON7::iohs7_pdl_fure , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 327 |
| + {iohs7_pll_func , "iohs7_pll_func" , 0x1F030010, AXON7::iohs7_pll_func , AXON7_TYPE, RMRK_ROOT | RCLS_EKB_RINGS }, // 328 |
| + {eq_fure , "eq_fure" , 0x2003402F, EQ::eq_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 329 |
| + {eq_cmsk , "eq_cmsk" , 0x2003402A, EQ::eq_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 330 |
| + {eq_inex , "eq_inex" , 0x2003402B, EQ::eq_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 331 |
| + {eq_mode , "eq_mode" , 0x20034021, EQ::eq_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 332 |
| + {eq_clkadj_fure , "eq_clkadj_fure" , 0x2003001F, EQ::eq_clkadj_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 333 |
| + {eq_clkadj_cmsk , "eq_clkadj_cmsk" , 0x2003001A, EQ::eq_clkadj_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 334 |
| + {eq_clkadj_inex , "eq_clkadj_inex" , 0x2003001B, EQ::eq_clkadj_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 335 |
| + {eq_clkadj_mode , "eq_clkadj_mode" , 0x20030011, EQ::eq_clkadj_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 336 |
| + {ec_cl2_fure , "ec_cl2_fure" , 0x2003200F, EQ::ec_cl2_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 337 |
| + {ec_cl2_cmsk , "ec_cl2_cmsk" , 0x2003200A, EQ::ec_cl2_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 338 |
| + {ec_cl2_inex , "ec_cl2_inex" , 0x2003200B, EQ::ec_cl2_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 339 |
| + {ec_cl2_mode , "ec_cl2_mode" , 0x20032001, EQ::ec_cl2_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 340 |
| + {ec_mma_fure , "ec_mma_fure" , 0x2083000F, EQ::ec_mma_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 341 |
| + {ec_mma_cmsk , "ec_mma_cmsk" , 0x2083000A, EQ::ec_mma_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 342 |
| + {ec_mma_inex , "ec_mma_inex" , 0x2083000B, EQ::ec_mma_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 343 |
| + {ec_l3_fure , "ec_l3_fure" , 0x2003020F, EQ::ec_l3_fure , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 344 |
| + {ec_l3_cmsk , "ec_l3_cmsk" , 0x2003020A, EQ::ec_l3_cmsk , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 345 |
| + {ec_l3_inex , "ec_l3_inex" , 0x2003020B, EQ::ec_l3_inex , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 346 |
| + {ec_l3_mode , "ec_l3_mode" , 0x20030201, EQ::ec_l3_mode , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS | RMRK_SCAN_BY_QME }, // 347 |
| + {n0_abst , "n0_abst" , 0x02036405, N0::n0_abst , N0_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 348 |
| + {n1_abst , "n1_abst" , 0x03035405, N1::n1_abst , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 349 |
| + {n1_nmmu1_abst , "n1_nmmu1_abst" , 0x03030205, N1::n1_nmmu1_abst , N1_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 350 |
| + {ec_cl2_abst , "ec_cl2_abst" , 0x20032005, EQ::ec_cl2_abst , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 351 |
| + {ec_mma_abst , "ec_mma_abst" , 0x20830005, EQ::ec_mma_abst , EQ_TYPE , RMRK_ROOT | RCLS_EKB_RINGS }, // 352 |
| }; |
| #endif |
| |
| @@ -1030,103 +1039,103 @@ static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] = |
| {EQ::ec3_l3_repr , EQ_TYPE }, // 160 |
| |
| // EKB Rings: |
| - {PERV::perv_fure , PERV_TYPE }, // 161 |
| - {PERV::sbe_fure , PERV_TYPE }, // 162 |
| - {PERV::occ_fure , PERV_TYPE }, // 163 |
| - {PERV::perv_dpll_func , PERV_TYPE }, // 164 |
| - {PERV::perv_dpll_bndy , PERV_TYPE }, // 165 |
| - {PERV::perv_dpll_time , PERV_TYPE }, // 166 |
| - {PERV::perv_pll_func , PERV_TYPE }, // 167 |
| - {PERV::perv_pll_bndy , PERV_TYPE }, // 168 |
| - {N0::n0_fure , N0_TYPE }, // 169 |
| - {N1::n1_fure , N1_TYPE }, // 170 |
| - {N1::n1_nmmu1_fure , N1_TYPE }, // 171 |
| - {PCI::pci_fure , PCI_TYPE }, // 172 |
| - {PCI::pci_pll_func , PCI_TYPE }, // 173 |
| - {PCI::pci_pll_bndy , PCI_TYPE }, // 174 |
| - {MC::mc_fure , MC_TYPE }, // 175 |
| - {MC::mc_pll_func , MC_TYPE }, // 176 |
| - {MC::mc_pll_bndy , MC_TYPE }, // 177 |
| - {MC::mc_pll_bndy_bucket_0 , MC_TYPE }, // 178 |
| - {MC::mc_pll_bndy_bucket_1 , MC_TYPE }, // 179 |
| - {MC::mc_pll_bndy_bucket_2 , MC_TYPE }, // 180 |
| - {MC::mc_pll_bndy_bucket_3 , MC_TYPE }, // 181 |
| - {MC::mc_pll_bndy_bucket_4 , MC_TYPE }, // 182 |
| - {PAU0::pau0_fure , PAU0_TYPE }, // 183 |
| - {PAU0::pau0_pau0_fure , PAU0_TYPE }, // 184 |
| - {PAU1::pau1_fure , PAU1_TYPE }, // 185 |
| - {PAU1::pau1_pau3_fure , PAU1_TYPE }, // 186 |
| - {PAU2::pau2_fure , PAU2_TYPE }, // 187 |
| - {PAU2::pau2_pau4_fure , PAU2_TYPE }, // 188 |
| - {PAU2::pau2_pau5_fure , PAU2_TYPE }, // 189 |
| - {PAU3::pau3_fure , PAU3_TYPE }, // 190 |
| - {PAU3::pau3_pau6_fure , PAU3_TYPE }, // 191 |
| - {PAU3::pau3_pau7_fure , PAU3_TYPE }, // 192 |
| - {AXON0::iohs0_fure , AXON0_TYPE}, // 193 |
| - {AXON0::iohs0_ndl_fure , AXON0_TYPE}, // 194 |
| - {AXON0::iohs0_pdl_fure , AXON0_TYPE}, // 195 |
| - {AXON0::iohs0_pll_func , AXON0_TYPE}, // 196 |
| - {AXON0::iohs0_pll_bndy , AXON0_TYPE}, // 197 |
| - {AXON0::iohs0_pll_bndy_bucket_0, AXON0_TYPE}, // 198 |
| - {AXON0::iohs0_pll_bndy_bucket_1, AXON0_TYPE}, // 199 |
| - {AXON0::iohs0_pll_bndy_bucket_2, AXON0_TYPE}, // 200 |
| - {AXON0::iohs0_pll_bndy_bucket_3, AXON0_TYPE}, // 201 |
| - {AXON0::iohs0_pll_bndy_bucket_4, AXON0_TYPE}, // 202 |
| - {AXON0::iohs0_pll_bndy_bucket_5, AXON0_TYPE}, // 203 |
| - {AXON0::iohs0_pll_bndy_bucket_6, AXON0_TYPE}, // 204 |
| - {AXON0::iohs0_pll_bndy_bucket_7, AXON0_TYPE}, // 205 |
| - {AXON1::iohs1_fure , AXON1_TYPE}, // 206 |
| - {AXON1::iohs1_ndl_fure , AXON1_TYPE}, // 207 |
| - {AXON1::iohs1_pdl_fure , AXON1_TYPE}, // 208 |
| - {AXON1::iohs1_pll_func , AXON1_TYPE}, // 209 |
| - {AXON2::iohs2_fure , AXON2_TYPE}, // 210 |
| - {AXON2::iohs2_ndl_fure , AXON2_TYPE}, // 211 |
| - {AXON2::iohs2_pdl_fure , AXON2_TYPE}, // 212 |
| - {AXON2::iohs2_pll_func , AXON2_TYPE}, // 213 |
| - {AXON3::iohs3_fure , AXON3_TYPE}, // 214 |
| - {AXON3::iohs3_ndl_fure , AXON3_TYPE}, // 215 |
| - {AXON3::iohs3_pdl_fure , AXON3_TYPE}, // 216 |
| - {AXON3::iohs3_pll_func , AXON3_TYPE}, // 217 |
| - {AXON4::iohs4_fure , AXON4_TYPE}, // 218 |
| - {AXON4::iohs4_ndl_fure , AXON4_TYPE}, // 219 |
| - {AXON4::iohs4_pdl_fure , AXON4_TYPE}, // 220 |
| - {AXON4::iohs4_pll_func , AXON4_TYPE}, // 221 |
| - {AXON5::iohs5_fure , AXON5_TYPE}, // 222 |
| - {AXON5::iohs5_ndl_fure , AXON5_TYPE}, // 223 |
| - {AXON5::iohs5_pdl_fure , AXON5_TYPE}, // 224 |
| - {AXON5::iohs5_pll_func , AXON5_TYPE}, // 225 |
| - {AXON6::iohs6_fure , AXON6_TYPE}, // 226 |
| - {AXON6::iohs6_ndl_fure , AXON6_TYPE}, // 227 |
| - {AXON6::iohs6_pdl_fure , AXON6_TYPE}, // 228 |
| - {AXON6::iohs6_pll_func , AXON6_TYPE}, // 229 |
| - {AXON7::iohs7_fure , AXON7_TYPE}, // 230 |
| - {AXON7::iohs7_ndl_fure , AXON7_TYPE}, // 231 |
| - {AXON7::iohs7_pdl_fure , AXON7_TYPE}, // 232 |
| - {AXON7::iohs7_pll_func , AXON7_TYPE}, // 233 |
| - {EQ::eq_fure , EQ_TYPE }, // 234 |
| - {EQ::eq_cmsk , EQ_TYPE }, // 235 |
| - {EQ::eq_inex , EQ_TYPE }, // 236 |
| - {EQ::eq_mode , EQ_TYPE }, // 237 |
| - {EQ::eq_clkadj_fure , EQ_TYPE }, // 238 |
| - {EQ::eq_clkadj_cmsk , EQ_TYPE }, // 239 |
| - {EQ::eq_clkadj_inex , EQ_TYPE }, // 240 |
| - {EQ::eq_clkadj_mode , EQ_TYPE }, // 241 |
| - {EQ::ec_cl2_fure , EQ_TYPE }, // 242 |
| - {EQ::ec_cl2_cmsk , EQ_TYPE }, // 243 |
| - {EQ::ec_cl2_inex , EQ_TYPE }, // 244 |
| - {EQ::ec_cl2_mode , EQ_TYPE }, // 245 |
| - {EQ::ec_mma_fure , EQ_TYPE }, // 246 |
| - {EQ::ec_mma_cmsk , EQ_TYPE }, // 247 |
| - {EQ::ec_mma_inex , EQ_TYPE }, // 248 |
| - {EQ::ec_l3_fure , EQ_TYPE }, // 249 |
| - {EQ::ec_l3_cmsk , EQ_TYPE }, // 250 |
| - {EQ::ec_l3_inex , EQ_TYPE }, // 251 |
| - {EQ::ec_l3_mode , EQ_TYPE }, // 252 |
| - {N0::n0_abst , N0_TYPE }, // 253 |
| - {N1::n1_abst , N1_TYPE }, // 254 |
| - {N1::n1_nmmu1_abst , N1_TYPE }, // 255 |
| - {EQ::ec_cl2_abst , EQ_TYPE }, // 256 |
| - {EQ::ec_mma_abst , EQ_TYPE }, // 257 |
| + {PERV::perv_fure , PERV_TYPE }, // 256 |
| + {PERV::sbe_fure , PERV_TYPE }, // 257 |
| + {PERV::occ_fure , PERV_TYPE }, // 258 |
| + {PERV::perv_dpll_func , PERV_TYPE }, // 259 |
| + {PERV::perv_dpll_bndy , PERV_TYPE }, // 260 |
| + {PERV::perv_dpll_time , PERV_TYPE }, // 261 |
| + {PERV::perv_pll_func , PERV_TYPE }, // 262 |
| + {PERV::perv_pll_bndy , PERV_TYPE }, // 263 |
| + {N0::n0_fure , N0_TYPE }, // 264 |
| + {N1::n1_fure , N1_TYPE }, // 265 |
| + {N1::n1_nmmu1_fure , N1_TYPE }, // 266 |
| + {PCI::pci_fure , PCI_TYPE }, // 267 |
| + {PCI::pci_pll_func , PCI_TYPE }, // 268 |
| + {PCI::pci_pll_bndy , PCI_TYPE }, // 269 |
| + {MC::mc_fure , MC_TYPE }, // 270 |
| + {MC::mc_pll_func , MC_TYPE }, // 271 |
| + {MC::mc_pll_bndy , MC_TYPE }, // 272 |
| + {MC::mc_pll_bndy_bucket_0 , MC_TYPE }, // 273 |
| + {MC::mc_pll_bndy_bucket_1 , MC_TYPE }, // 274 |
| + {MC::mc_pll_bndy_bucket_2 , MC_TYPE }, // 275 |
| + {MC::mc_pll_bndy_bucket_3 , MC_TYPE }, // 276 |
| + {MC::mc_pll_bndy_bucket_4 , MC_TYPE }, // 277 |
| + {PAU0::pau0_fure , PAU0_TYPE }, // 278 |
| + {PAU0::pau0_pau0_fure , PAU0_TYPE }, // 279 |
| + {PAU1::pau1_fure , PAU1_TYPE }, // 280 |
| + {PAU1::pau1_pau3_fure , PAU1_TYPE }, // 281 |
| + {PAU2::pau2_fure , PAU2_TYPE }, // 282 |
| + {PAU2::pau2_pau4_fure , PAU2_TYPE }, // 283 |
| + {PAU2::pau2_pau5_fure , PAU2_TYPE }, // 284 |
| + {PAU3::pau3_fure , PAU3_TYPE }, // 285 |
| + {PAU3::pau3_pau6_fure , PAU3_TYPE }, // 286 |
| + {PAU3::pau3_pau7_fure , PAU3_TYPE }, // 287 |
| + {AXON0::iohs0_fure , AXON0_TYPE}, // 288 |
| + {AXON0::iohs0_ndl_fure , AXON0_TYPE}, // 289 |
| + {AXON0::iohs0_pdl_fure , AXON0_TYPE}, // 290 |
| + {AXON0::iohs0_pll_func , AXON0_TYPE}, // 291 |
| + {AXON0::iohs0_pll_bndy , AXON0_TYPE}, // 292 |
| + {AXON0::iohs0_pll_bndy_bucket_0, AXON0_TYPE}, // 293 |
| + {AXON0::iohs0_pll_bndy_bucket_1, AXON0_TYPE}, // 294 |
| + {AXON0::iohs0_pll_bndy_bucket_2, AXON0_TYPE}, // 295 |
| + {AXON0::iohs0_pll_bndy_bucket_3, AXON0_TYPE}, // 296 |
| + {AXON0::iohs0_pll_bndy_bucket_4, AXON0_TYPE}, // 297 |
| + {AXON0::iohs0_pll_bndy_bucket_5, AXON0_TYPE}, // 298 |
| + {AXON0::iohs0_pll_bndy_bucket_6, AXON0_TYPE}, // 299 |
| + {AXON0::iohs0_pll_bndy_bucket_7, AXON0_TYPE}, // 300 |
| + {AXON1::iohs1_fure , AXON1_TYPE}, // 301 |
| + {AXON1::iohs1_ndl_fure , AXON1_TYPE}, // 302 |
| + {AXON1::iohs1_pdl_fure , AXON1_TYPE}, // 303 |
| + {AXON1::iohs1_pll_func , AXON1_TYPE}, // 304 |
| + {AXON2::iohs2_fure , AXON2_TYPE}, // 305 |
| + {AXON2::iohs2_ndl_fure , AXON2_TYPE}, // 306 |
| + {AXON2::iohs2_pdl_fure , AXON2_TYPE}, // 307 |
| + {AXON2::iohs2_pll_func , AXON2_TYPE}, // 308 |
| + {AXON3::iohs3_fure , AXON3_TYPE}, // 309 |
| + {AXON3::iohs3_ndl_fure , AXON3_TYPE}, // 310 |
| + {AXON3::iohs3_pdl_fure , AXON3_TYPE}, // 311 |
| + {AXON3::iohs3_pll_func , AXON3_TYPE}, // 312 |
| + {AXON4::iohs4_fure , AXON4_TYPE}, // 313 |
| + {AXON4::iohs4_ndl_fure , AXON4_TYPE}, // 314 |
| + {AXON4::iohs4_pdl_fure , AXON4_TYPE}, // 315 |
| + {AXON4::iohs4_pll_func , AXON4_TYPE}, // 316 |
| + {AXON5::iohs5_fure , AXON5_TYPE}, // 317 |
| + {AXON5::iohs5_ndl_fure , AXON5_TYPE}, // 318 |
| + {AXON5::iohs5_pdl_fure , AXON5_TYPE}, // 319 |
| + {AXON5::iohs5_pll_func , AXON5_TYPE}, // 320 |
| + {AXON6::iohs6_fure , AXON6_TYPE}, // 321 |
| + {AXON6::iohs6_ndl_fure , AXON6_TYPE}, // 322 |
| + {AXON6::iohs6_pdl_fure , AXON6_TYPE}, // 323 |
| + {AXON6::iohs6_pll_func , AXON6_TYPE}, // 324 |
| + {AXON7::iohs7_fure , AXON7_TYPE}, // 325 |
| + {AXON7::iohs7_ndl_fure , AXON7_TYPE}, // 326 |
| + {AXON7::iohs7_pdl_fure , AXON7_TYPE}, // 327 |
| + {AXON7::iohs7_pll_func , AXON7_TYPE}, // 328 |
| + {EQ::eq_fure , EQ_TYPE }, // 329 |
| + {EQ::eq_cmsk , EQ_TYPE }, // 330 |
| + {EQ::eq_inex , EQ_TYPE }, // 331 |
| + {EQ::eq_mode , EQ_TYPE }, // 332 |
| + {EQ::eq_clkadj_fure , EQ_TYPE }, // 333 |
| + {EQ::eq_clkadj_cmsk , EQ_TYPE }, // 334 |
| + {EQ::eq_clkadj_inex , EQ_TYPE }, // 335 |
| + {EQ::eq_clkadj_mode , EQ_TYPE }, // 336 |
| + {EQ::ec_cl2_fure , EQ_TYPE }, // 337 |
| + {EQ::ec_cl2_cmsk , EQ_TYPE }, // 338 |
| + {EQ::ec_cl2_inex , EQ_TYPE }, // 339 |
| + {EQ::ec_cl2_mode , EQ_TYPE }, // 340 |
| + {EQ::ec_mma_fure , EQ_TYPE }, // 341 |
| + {EQ::ec_mma_cmsk , EQ_TYPE }, // 342 |
| + {EQ::ec_mma_inex , EQ_TYPE }, // 343 |
| + {EQ::ec_l3_fure , EQ_TYPE }, // 344 |
| + {EQ::ec_l3_cmsk , EQ_TYPE }, // 345 |
| + {EQ::ec_l3_inex , EQ_TYPE }, // 346 |
| + {EQ::ec_l3_mode , EQ_TYPE }, // 347 |
| + {N0::n0_abst , N0_TYPE }, // 348 |
| + {N1::n1_abst , N1_TYPE }, // 349 |
| + {N1::n1_nmmu1_abst , N1_TYPE }, // 350 |
| + {EQ::ec_cl2_abst , EQ_TYPE }, // 351 |
| + {EQ::ec_mma_abst , EQ_TYPE }, // 352 |
| }; |
| #endif // __PPE__ |
| |
| diff --git a/src/import/chips/p10/utils/imageProcs/p10_tor.C b/src/import/chips/p10/utils/imageProcs/p10_tor.C |
| index 2a5009a..c89c707 100644 |
| --- a/src/import/chips/p10/utils/imageProcs/p10_tor.C |
| +++ b/src/import/chips/p10/utils/imageProcs/p10_tor.C |
| @@ -60,6 +60,7 @@ int _tor_access_ring( void* io_ringSection, // Ring section ptr |
| TorOffset_t ringOffset16; // Offset to actual ring container (for PUT operation) |
| uint32_t torSlotNum; // TOR slot number (within a chiplet section) |
| uint32_t rs4Size; // Size of RS4 ring container/block. |
| + RingId_t rpIndex = UNDEFINED_RING_ID; |
| RingId_t numRings; |
| ChipletType_t chipletType = UNDEFINED_CHIPLET_TYPE; |
| ChipletType_t chipletIndex = UNDEFINED_CHIPLET_TYPE; // Effective chiplet index |
| @@ -85,7 +86,13 @@ int _tor_access_ring( void* io_ringSection, // Ring section ptr |
| return rc; |
| } |
| |
| - chipletType = ringProps[i_ringId].chipletType; |
| + // Get the ring properties (rp) index |
| + rpIndex = ringid_convert_ringId_to_rpIndex(i_ringId); |
| + |
| + // Note: Prior to entering _tor_access_ring(), we must call _tor_header_check() |
| + // which also verifies valid ringId. So no need to check ringId again. |
| + |
| + chipletType = ringProps[rpIndex].chipletType; |
| |
| // |
| // Get all other metadata for the chipletType |
| @@ -131,7 +138,7 @@ int _tor_access_ring( void* io_ringSection, // Ring section ptr |
| // |
| // Determine whether Common or Instance section based on the INSTANCE_RING_MARK |
| // |
| - if ( ringProps[i_ringId].idxRing & INSTANCE_RING_MARK ) |
| + if ( ringProps[rpIndex].idxRing & INSTANCE_RING_MARK ) |
| { |
| bInstCase = 1; |
| } |
| @@ -144,7 +151,7 @@ int _tor_access_ring( void* io_ringSection, // Ring section ptr |
| chipletData->numInstanceRings : |
| chipletData->numCommonRings; |
| |
| - idxRingEff = ringProps[i_ringId].idxRing & INSTANCE_RING_MASK; // Always safe |
| + idxRingEff = ringProps[rpIndex].idxRing & INSTANCE_RING_MASK; // Always safe |
| |
| // |
| // Check that chipletId is within chiplet's range (Note that we care only about Instance |
| @@ -371,18 +378,15 @@ int _tor_header_and_ring_check( void* i_ringSection, // Ring section |
| |
| if ( rc != TOR_SUCCESS ) |
| { |
| - if ( rc == TOR_HOLE_RING_ID ) |
| - { |
| - // "hole" ring. Not an error. No info to retrieve. |
| - return rc; |
| - } |
| - else if ( rc == TOR_INVALID_RING_ID || rc == TOR_INVALID_CHIP_ID ) |
| + // Only trace out what we know could be an error. |
| + if ( rc == TOR_INVALID_CHIP_ID ) |
| { |
| - MY_ERR("ERROR: TOR ringId check: ringid_check_ringId() failed w/rc=0x%08x\n" |
| - " So either invalid ringId(=0x%x) or invalid chipId(=0x%x)\n", |
| - rc, i_ringId, torHeader->chipId); |
| - return rc; |
| + MY_ERR("ERROR: TOR ringId check: ringid_check_ringId() failed w/rc=0x%08x" |
| + " which is an invalid chipId(=0x%x)\n", |
| + rc, torHeader->chipId); |
| } |
| + |
| + return rc; |
| } |
| |
| // Check TOR header |
| @@ -438,12 +442,18 @@ int tor_get_single_ring ( void* i_ringSection, // Ring section ptr |
| i_dbgl ); |
| |
| // Explanation to the "list" of RCs that we exclude from tracing out: |
| - // TOR_HOLE_RING_ID: Normal scenario when rings are removed from the ring list |
| - if ( rc && |
| - rc != TOR_HOLE_RING_ID ) |
| + // TOR_HOLE_RING_ID: Can happen if a ring has been removed from the ring list |
| + // TOR_INVALID_RING_ID: CAn happen if caller carelessly cycles through ringIds |
| + if ( rc ) |
| { |
| - MY_ERR("ERROR: tor_get_single_ring(): _tor_header_and_ring_check() failed w/rc=0x%08x\n", |
| - rc); |
| + if ( rc != TOR_HOLE_RING_ID && |
| + rc != TOR_INVALID_RING_ID ) |
| + { |
| + MY_ERR("ERROR: tor_get_single_ring: _tor_header_and_ring_check() failed" |
| + " w/rc=0x%08x\n", |
| + rc); |
| + } |
| + |
| return rc; |
| } |
| |
| @@ -458,8 +468,6 @@ int tor_get_single_ring ( void* i_ringSection, // Ring section ptr |
| |
| // Explanation to the "list" of RCs that we exclude from tracing out: |
| // TOR_RING_IS_EMPTY: Normal scenario (will occur frequently). |
| - // TOR_HOLE_RING_ID: Normal scenario when rings are removed from the ring list |
| - // and leaves behind a "hole". |
| // TOR_RING_HAS_NO_TOR_SLOT: Will be caused a lot by ipl_image_tool, but is an error if |
| // called by any other user. |
| // TOR_INVALID_CHIPLET_ID: Not necessarily an error as a user may be sweeping through a |
| @@ -472,13 +480,12 @@ int tor_get_single_ring ( void* i_ringSection, // Ring section ptr |
| // in both ipl_image_tool and ipl_customize (RT_QME phase). |
| if ( rc && |
| rc != TOR_RING_IS_EMPTY && |
| - rc != TOR_HOLE_RING_ID && |
| rc != TOR_RING_HAS_NO_TOR_SLOT && |
| rc != TOR_INVALID_CHIPLET_ID && |
| rc != TOR_INVALID_CHIPLET_TYPE ) |
| { |
| - MY_ERR("ERROR: tor_get_single_ring(): _tor_access_ring() failed w/rc=0x%08x\n", rc); |
| - |
| + MY_ERR("ERROR: tor_get_single_ring: _tor_access_ring() failed w/rc=0x%08x\n", |
| + rc); |
| return rc; |
| } |
| |
| @@ -507,7 +514,7 @@ int tor_append_ring( void* io_ringSection, // Ring section ptr |
| |
| if (rc) |
| { |
| - MY_ERR("ERROR: tor_append_ring(): _tor_header_and_ring_check() failed w/rc=0x%08x\n", |
| + MY_ERR("ERROR: tor_append_ring: _tor_header_and_ring_check() failed w/rc=0x%08x\n", |
| rc); |
| return rc; |
| } |
| @@ -539,7 +546,7 @@ int tor_append_ring( void* io_ringSection, // Ring section ptr |
| if ( rc && |
| rc != TOR_INVALID_CHIPLET_TYPE ) |
| { |
| - MY_ERR("ERROR: tor_append_ring(): _tor_access_ring() failed w/rc=0x%08x for" |
| + MY_ERR("ERROR: tor_append_ring: _tor_access_ring() failed w/rc=0x%08x for" |
| " ringId=0x%x\n", |
| rc, i_ringId); |
| return rc; |
| @@ -768,19 +775,15 @@ int dyn_get_ring( void* i_ringSection, |
| |
| if ( rc != TOR_SUCCESS ) |
| { |
| - if ( rc == TOR_HOLE_RING_ID ) |
| + // Only trace out what we know could be an error. |
| + if ( rc == TOR_INVALID_CHIP_ID ) |
| { |
| - // "hole" ring. Not an error. No info to retrieve. |
| - return rc; |
| + MY_ERR("ERROR: dyn_get_ring: ringid_check_ringId() failed w/rc=0x%08x" |
| + " which is an invalid chipId(=0x%x)\n", |
| + rc, torHeader->chipId); |
| } |
| - else if ( rc == TOR_INVALID_RING_ID || rc == TOR_INVALID_CHIP_ID ) |
| - { |
| - MY_ERR("ERROR: dyn_get_ring(): ringid_check_ringId() failed w/rc=0x%08x\n" |
| - " So either invalid ringId(=0x%x) or invalid chipId(=0x%x)\n", |
| - rc, i_ringId, torHeader->chipId); |
| |
| - return rc; |
| - } |
| + return rc; |
| } |
| |
| // TOR header check |
| @@ -791,7 +794,7 @@ int dyn_get_ring( void* i_ringSection, |
| torHeader->ddLevel != i_ddLevel || |
| torHeader->rtVersion != RING_TABLE_VERSION_HWIMG ) |
| { |
| - MY_ERR("ERROR: dyn_get_ring(): TOR header check failed as follows:\n" |
| + MY_ERR("ERROR: dyn_get_ring: TOR header check failed as follows:\n" |
| " torHeader->magic(=0x%08x) != TOR_MAGIC_DYN(=0x%08x)\n" |
| " torHeader->version(=%u) != TOR_VERSION(=%u)\n" |
| " torHeader->ddLevel(=0x%02x) != i_ddLevel(=0x%02x)\n" |
| -- |
| 1.8.2.2 |
| |