diff --git a/openpower/package/hostboot-p10/0001-Mvpd-Ekb-ringId-gap-discontinuity-support.patch b/openpower/package/hostboot-p10/0001-Mvpd-Ekb-ringId-gap-discontinuity-support.patch
deleted file mode 100644
index 97858a3..0000000
--- a/openpower/package/hostboot-p10/0001-Mvpd-Ekb-ringId-gap-discontinuity-support.patch
+++ /dev/null
@@ -1,3494 +0,0 @@
-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
-
diff --git a/openpower/package/hostboot-p10/Config.in b/openpower/package/hostboot-p10/Config.in
index 5c68031..a7de170 100644
--- a/openpower/package/hostboot-p10/Config.in
+++ b/openpower/package/hostboot-p10/Config.in
@@ -25,7 +25,7 @@
 
 config BR2_HOSTBOOT_P10_VERSION
 	string
-	default "0d960df7b71ac04870f5cdab061c42e7fa29f301" if BR2_HOSTBOOT_P10_LATEST_VERSION
+	default "34e514df68cc7c9d81132bf90d78b25ca83e4d9d" if BR2_HOSTBOOT_P10_LATEST_VERSION
 	default BR2_HOSTBOOT_P10_CUSTOM_VERSION_VALUE \
 		if BR2_HOSTBOOT_P10_CUSTOM_VERSION
 
