diff options
-rw-r--r-- | src/hwpf/plat_ring_traverse.C | 140 | ||||
-rw-r--r-- | src/hwpf/plat_ring_traverse.H | 2 | ||||
-rw-r--r-- | src/import/chips/centaur/utils/imageProcs/cen_ringId.C | 8 | ||||
-rw-r--r-- | src/import/chips/centaur/utils/imageProcs/cen_ringId.H | 4 | ||||
-rw-r--r-- | src/import/chips/common/utils/imageProcs/common_ringId.C | 232 | ||||
-rw-r--r-- | src/import/chips/common/utils/imageProcs/common_ringId.H | 52 | ||||
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_ringId.C | 38 | ||||
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_ringId.H | 8 | ||||
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_tor.C | 1 | ||||
-rw-r--r-- | src/import/chips/p9/xip/p9_xip_tool.C | 25 | ||||
-rw-r--r-- | src/import/tools/imageProcs/p9_ipl_build.C | 4 |
11 files changed, 357 insertions, 157 deletions
diff --git a/src/hwpf/plat_ring_traverse.C b/src/hwpf/plat_ring_traverse.C index 98e391b1..0056cb6b 100644 --- a/src/hwpf/plat_ring_traverse.C +++ b/src/hwpf/plat_ring_traverse.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -39,7 +39,6 @@ const uint32_t RISK_LEVEL_MODE = 1; #define RISK_LEVEL_MODE_OFFSET_IN_TOR 2 #define OVERRIDE_VARIANT_SIZE 1 - /// /// @brief This is a plat pecific (SBE Plat) function that locates the /// Ring Container in the image and calls the functin to decompress the @@ -73,15 +72,9 @@ fapi2::ReturnCode findRS4InImageAndApply( break; } - uint8_t l_torHdrSz; TorHeader_t* torHeader = (TorHeader_t*)(g_seepromAddr + l_section->iv_offset); - - if (torHeader->magic == TOR_MAGIC_SBE) - { - l_torHdrSz = sizeof(TorHeader_t); - } - else + if (torHeader->magic != TOR_MAGIC_SBE) { SBE_ERROR("ERROR: TOR magic header (=0x%08x) != TOR_MAGIC_SBE (=0x%08x)", torHeader->magic, TOR_MAGIC_SBE); @@ -90,12 +83,11 @@ fapi2::ReturnCode findRS4InImageAndApply( } SectionTOR* l_sectionTOR = (SectionTOR*)(g_seepromAddr + - l_section->iv_offset + - l_torHdrSz); + l_section->iv_offset); l_rc = getRS4ImageFromTor(i_target, i_ringID, l_sectionTOR, l_applyOverride, - l_section->iv_offset + l_torHdrSz, + l_section->iv_offset, i_ringMode); if(l_rc != fapi2::FAPI2_RC_SUCCESS) @@ -105,7 +97,6 @@ fapi2::ReturnCode findRS4InImageAndApply( //Apply scanring from .ring section l_applyOverride = true; - l_section = NULL; l_section = &(l_hdr->iv_section[P9_XIP_SECTION_SBE_OVERRIDES]); @@ -115,15 +106,13 @@ fapi2::ReturnCode findRS4InImageAndApply( break; } - l_sectionTOR = NULL; l_sectionTOR = (SectionTOR*)(g_seepromAddr + - l_section->iv_offset + - l_torHdrSz); + l_section->iv_offset); l_rc = getRS4ImageFromTor(i_target, i_ringID, l_sectionTOR, l_applyOverride, - l_section->iv_offset + l_torHdrSz, + l_section->iv_offset, i_ringMode); } while(0); @@ -140,10 +129,15 @@ fapi2::ReturnCode getRS4ImageFromTor( const fapi2::RingMode i_ringMode) { + uint8_t l_torHdrSz = sizeof(TorHeader_t); + uint8_t l_torVersion = ((TorHeader_t*)i_sectionTOR)->version; + SectionTOR* l_sectionTOR = (SectionTOR*)((uint8_t*)i_sectionTOR + l_torHdrSz); + uint8_t l_numVarAdjust = 0; + // Determine the Offset ID and Ring Type for the given Ring ID. uint32_t l_torOffset = 0; RingType_t l_ringType = COMMON_RING; - ChipletType_t l_chipLetType = INVALID_CHIPLET_TYPE; + ChipletType_t l_chipLetType = UNDEFINED_CHIPLET_TYPE; fapi2::ReturnCode l_rc = fapi2::FAPI2_RC_SUCCESS; do @@ -177,154 +171,132 @@ fapi2::ReturnCode getRS4ImageFromTor( { case PERV_TYPE: // PERV l_chipletData = PERV::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_PERV_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_PERV_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_PERV_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_PERV_INSTANCE_RING; } break; case N0_TYPE: // Nest - N0 l_chipletData = N0::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_N0_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_N0_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_N0_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_N0_INSTANCE_RING; } break; case N1_TYPE: // Nest - N1 l_chipletData = N1::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_N1_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_N1_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_N1_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_N1_INSTANCE_RING; } break; case N2_TYPE: // Nest - N2 l_chipletData = N2::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_N2_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_N2_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_N2_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_N2_INSTANCE_RING; } break; case N3_TYPE: // Nest - N3 l_chipletData = N3::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_N3_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_N3_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_N3_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_N3_INSTANCE_RING; } break; case XB_TYPE: // XB - XBus2 l_chipletData = XB::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_XB_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_XB_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_XB_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_XB_INSTANCE_RING; } break; case MC_TYPE: // MC - MC23 l_chipletData = MC::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_MC_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_MC_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_MC_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_MC_INSTANCE_RING; } break; case OB0_TYPE: // OB0 l_chipletData = OB0::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_OB0_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_OB0_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_OB0_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_OB0_INSTANCE_RING; } break; case OB1_TYPE: // OB1 l_chipletData = OB1::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_OB1_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_OB1_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_OB1_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_OB1_INSTANCE_RING; } break; case OB2_TYPE: // OB2 l_chipletData = OB2::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_OB2_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_OB2_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_OB2_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_OB2_INSTANCE_RING; } break; case OB3_TYPE: // OB3 l_chipletData = OB3::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_OB3_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_OB3_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_OB3_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_OB3_INSTANCE_RING; } break; @@ -332,75 +304,72 @@ fapi2::ReturnCode getRS4ImageFromTor( case PCI0_TYPE: // PCI - PCI0 l_chipletData = PCI0::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_PCI0_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI0_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_PCI0_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI0_INSTANCE_RING; } break; case PCI1_TYPE: // PCI - PCI1 l_chipletData = PCI1::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_PCI1_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI1_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_PCI1_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI1_INSTANCE_RING; } break; case PCI2_TYPE: // PCI - PCI2 l_chipletData = PCI2::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - l_sectionOffset = i_sectionTOR->TOC_PCI2_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI2_COMMON_RING; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_PCI2_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_PCI2_INSTANCE_RING; } break; case EQ_TYPE: // EQ - Quad 0 - Quad 5 l_chipletData = EQ::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; - + if (l_torVersion < 6) + { + l_numVarAdjust = 1; + } - l_sectionOffset = i_sectionTOR->TOC_EQ_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_EQ_COMMON_RING; l_CC_offset = 1; l_RL_offset = 2; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_EQ_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_EQ_INSTANCE_RING; } break; case EC_TYPE: // EC - Core 0 - 23 l_chipletData = EC::g_chipletData; - l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : - l_chipletData.iv_num_ring_variants; + if (l_torVersion < 6) + { + l_numVarAdjust = 1; + } - l_sectionOffset = i_sectionTOR->TOC_EC_COMMON_RING; + l_sectionOffset = l_sectionTOR->TOC_EC_COMMON_RING; l_CC_offset = 1; l_RL_offset = 2; if(INSTANCE_RING == l_ringType) { - l_sectionOffset = i_sectionTOR->TOC_EC_INSTANCE_RING; + l_sectionOffset = l_sectionTOR->TOC_EC_INSTANCE_RING; } break; @@ -416,11 +385,14 @@ fapi2::ReturnCode getRS4ImageFromTor( { break; } + + l_cpltRingVariantSz = i_applyOverride ? OVERRIDE_VARIANT_SIZE : + (l_chipletData.iv_num_ring_variants - l_numVarAdjust); FAPI_INF("l_sectionOffset %08x", l_sectionOffset); // Determine the section TOR address for the ring uint32_t* l_sectionAddr = reinterpret_cast<uint32_t*>(g_seepromAddr + - i_sectionOffset + l_sectionOffset); + i_sectionOffset + l_torHdrSz + l_sectionOffset); SBE_TRACE ("l_sectionAddr %08X", (uint32_t)l_sectionAddr); diff --git a/src/hwpf/plat_ring_traverse.H b/src/hwpf/plat_ring_traverse.H index 71e01ef3..e2782046 100644 --- a/src/hwpf/plat_ring_traverse.H +++ b/src/hwpf/plat_ring_traverse.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C index 19163824..ef34d38f 100644 --- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C +++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2017 */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -145,7 +145,7 @@ const GenRingIdList RING_ID_LIST_COMMON[] = {"tp_pll_bndy_bucket_8", 0x6a, 0x01, 0x01, CEN_RING, 0x01030088}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; // namespace CEN @@ -160,14 +160,14 @@ ChipletType_t CEN_RID::ringid_get_chiplet(RingId_t i_ringId) } void CEN_RID::ringid_get_chiplet_properties( - ChipletType_t i_chiplet, + ChipletType_t i_chipletType, ChipletData_t** o_cpltData, GenRingIdList** o_ringComm, GenRingIdList** o_ringInst, RingVariantOrder** o_varOrder, uint8_t* o_varNumb) { - switch (i_chiplet) + switch (i_chipletType) { case CEN_TYPE : *o_cpltData = (ChipletData_t*) &CEN::g_chipletData; diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H index a5f2d3ce..79a5ac00 100644 --- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H +++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -406,7 +406,7 @@ ringid_get_chiplet(RingId_t i_ringId); // as determined by ringId void ringid_get_chiplet_properties( - ChipletType_t i_chiplet, + ChipletType_t i_chipletType, ChipletData_t** o_cpltData, GenRingIdList** o_ringComm, GenRingIdList** o_ringInst, diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.C b/src/import/chips/common/utils/imageProcs/common_ringId.C index 3fa7aac5..13a5014b 100644 --- a/src/import/chips/common/utils/imageProcs/common_ringId.C +++ b/src/import/chips/common/utils/imageProcs/common_ringId.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2017 */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -44,11 +44,212 @@ const char* ppeTypeName[] = { "SBE", const char* ringVariantName[] = { "BASE", "CC", "RL", - "OVRD", - "OVLY" + "RL2", }; +#ifndef __HOSTBOOT_MODULE // This is only used by ring_apply in EKB +static int get_ipl_base_param( char*& l_ringPath ) +{ + l_ringPath = getenv("IPL_BASE"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: IPL_BASE environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} + +static int get_ipl_cache_contained_param( char*& l_ringPath) +{ + l_ringPath = getenv("IPL_CACHE_CONTAINED"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: IPL_CACHE_CONTAINED environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} + +static int get_ipl_risk_param( char*& l_ringPath) +{ + l_ringPath = getenv("IPL_RISK"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: IPL_RISK environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} + +static int get_runtime_base_param( char*& l_ringPath) +{ + l_ringPath = getenv("RUNTIME_BASE"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: RUNTIME_BASE environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} +static int get_runtime_risk_param( char*& l_ringPath) +{ + l_ringPath = getenv("RUNTIME_RISK"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: RUNTIME_RISK environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} + +static int get_runtime_risk2_param( char*& l_ringPath) +{ + l_ringPath = getenv("RUNTIME_RISK2"); + + if (l_ringPath == NULL) + { + MY_ERR("p9_ring_apply.C: ring path: RUNTIME_RISK2 environment parameter not set.\n"); + return INFRASTRUCT_RC_ENV_ERROR; + } + + return INFRASTRUCT_RC_SUCCESS; +} + +int ringid_get_raw_ring_file_path( uint32_t i_magic, + RingVariant_t i_ringVariant, + char* io_ringPath ) +{ + int rc = INFRASTRUCT_RC_SUCCESS; + char* l_ringDir = NULL; + + do + { + + if ( i_magic == TOR_MAGIC_SBE ) + { + if ( i_ringVariant == RV_BASE ) + { + rc = get_ipl_base_param(l_ringDir); + } + else if ( i_ringVariant == RV_CC ) + { + rc = get_ipl_cache_contained_param(l_ringDir); + } + else if ( i_ringVariant == RV_RL ) + { + rc = get_ipl_risk_param(l_ringDir); + } + else if ( i_ringVariant == RV_RL2 ) + { + // Valid RV for Quad chiplets but there's just no RL2 rings for SBE phase (by convention). + rc = TOR_NO_RINGS_FOR_VARIANT; + break; + } + else + { + MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", + i_ringVariant, i_magic); + rc = TOR_INVALID_VARIANT; + } + + if (rc) + { + break; + } + + strcat(io_ringPath, l_ringDir); + strcat(io_ringPath, "/"); + } + else if ( i_magic == TOR_MAGIC_CME || + i_magic == TOR_MAGIC_SGPE ) + { + if ( i_ringVariant == RV_BASE ) + { + rc = get_runtime_base_param(l_ringDir); + } + else if ( i_ringVariant == RV_CC ) + { + // Valid RV for Quad chiplets but there's just no CC rings for runtime phases (by convention). + rc = TOR_NO_RINGS_FOR_VARIANT; + break; + } + else if ( i_ringVariant == RV_RL ) + { + rc = get_runtime_risk_param(l_ringDir); + } + else if ( i_ringVariant == RV_RL2 ) + { + rc = get_runtime_risk2_param(l_ringDir); + } + else + { + MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", + i_ringVariant, i_magic); + rc = TOR_INVALID_VARIANT; + } + + if (rc) + { + break; + } + + strcat(io_ringPath, l_ringDir); + strcat(io_ringPath, "/"); + } + else if ( i_magic == TOR_MAGIC_CEN ) + { + if ( i_ringVariant == RV_BASE ) + { + rc = get_ipl_base_param(l_ringDir); + } + else if ( i_ringVariant == RV_RL ) + { + rc = get_ipl_risk_param(l_ringDir); + } + else + { + MY_ERR("Invalid ringVariant(=%d) for TOR magic=0x%08x\n", + i_ringVariant, i_magic); + rc = TOR_INVALID_VARIANT; + } + + if (rc) + { + break; + } + + strcat(io_ringPath, l_ringDir); + strcat(io_ringPath, "/"); + } + else if ( i_magic == TOR_MAGIC_OVRD || + i_magic == TOR_MAGIC_OVLY ) + { + // Path already fully qualified. Return io_ringPath as is. + } + else + { + MY_ERR("Unsupported value of TOR magic(=0x%X)\n", i_magic); + rc = TOR_INVALID_MAGIC_NUMBER; + } + + } + while(0); + + return rc; +} + +#endif // End of ifndef __HOSTBOOT_MODULE int ringid_get_noof_chiplets( ChipType_t i_chipType, uint32_t i_torMagic, @@ -58,6 +259,7 @@ int ringid_get_noof_chiplets( ChipType_t i_chipType, { case CT_P9N: case CT_P9C: + case CT_P9A: if ( i_torMagic == TOR_MAGIC_SBE || i_torMagic == TOR_MAGIC_OVRD || i_torMagic == TOR_MAGIC_OVLY ) @@ -105,7 +307,8 @@ int ringid_get_noof_chiplets( ChipType_t i_chipType, int ringid_get_properties( ChipType_t i_chipType, uint32_t i_torMagic, - ChipletType_t i_chiplet, + uint8_t i_torVersion, + ChipletType_t i_chipletType, ChipletData_t** o_chipletData, GenRingIdList** o_ringIdListCommon, GenRingIdList** o_ringIdListInstance, @@ -117,18 +320,25 @@ int ringid_get_properties( ChipType_t i_chipType, { case CT_P9N: case CT_P9C: + case CT_P9A: if ( i_torMagic == TOR_MAGIC_SBE || i_torMagic == TOR_MAGIC_OVRD || i_torMagic == TOR_MAGIC_OVLY ) { P9_RID::ringid_get_chiplet_properties( - i_chiplet, + i_chipletType, o_chipletData, o_ringIdListCommon, o_ringIdListInstance, o_ringVariantOrder, o_numVariants ); + if ( i_torVersion < 6 && + (i_chipletType == P9_RID::EQ_TYPE || i_chipletType == P9_RID::EC_TYPE) ) + { + *o_numVariants = *o_numVariants - 1; + } + if ( i_torMagic == TOR_MAGIC_OVRD || i_torMagic == TOR_MAGIC_OVLY ) { @@ -142,6 +352,11 @@ int ringid_get_properties( ChipType_t i_chipType, *o_ringIdListInstance = (GenRingIdList*)P9_RID::EC::RING_ID_LIST_INSTANCE; *o_ringVariantOrder = (RingVariantOrder*)P9_RID::EC::RING_VARIANT_ORDER; *o_numVariants = P9_RID::EC::g_chipletData.iv_num_ring_variants; + + if (i_torVersion < 6) + { + *o_numVariants = *o_numVariants - 1; + } } else if ( i_torMagic == TOR_MAGIC_SGPE ) { @@ -150,6 +365,11 @@ int ringid_get_properties( ChipType_t i_chipType, *o_ringIdListInstance = (GenRingIdList*)P9_RID::EQ::RING_ID_LIST_INSTANCE; *o_ringVariantOrder = (RingVariantOrder*)P9_RID::EQ::RING_VARIANT_ORDER; *o_numVariants = P9_RID::EQ::g_chipletData.iv_num_ring_variants; + + if (i_torVersion < 6) + { + *o_numVariants = *o_numVariants - 1; + } } else { @@ -166,7 +386,7 @@ int ringid_get_properties( ChipType_t i_chipType, i_torMagic == TOR_MAGIC_OVRD ) { CEN_RID::ringid_get_chiplet_properties( - i_chiplet, + i_chipletType, o_chipletData, o_ringIdListCommon, o_ringIdListInstance, diff --git a/src/import/chips/common/utils/imageProcs/common_ringId.H b/src/import/chips/common/utils/imageProcs/common_ringId.H index aae2b767..af496be1 100644 --- a/src/import/chips/common/utils/imageProcs/common_ringId.H +++ b/src/import/chips/common/utils/imageProcs/common_ringId.H @@ -54,14 +54,20 @@ typedef uint32_t TorCpltOffset_t; // Type for offset value to chiplet's CMN or typedef uint8_t myBoolean_t; // false:0, true:1, undefined:UNDEFINED_BOOLEAN #define UNDEFINED_RING_ID (RingId_t)0xffff -#define INVALID_RING_TYPE (RingType_t)0xff -#define INVALID_CHIPLET_TYPE (ChipletType_t)0xff +#define UNDEFINED_CHIPLET_TYPE (ChipletType_t)0xff #define UNDEFINED_PPE_TYPE (PpeType_t)0xff #define UNDEFINED_CHIP_TYPE (ChipType_t)0xff +#define INVALID_RING_TYPE (RingType_t)0xff +#define UNDEFINED_RING_VARIANT (RingVariant_t)0xff #define UNDEFINED_RING_BLOCK_TYPE (RingBlockType_t)0xff; + +#define UNDEFINED_DD_LEVEL (uint8_t)0xff + #define MAX_TOR_RING_OFFSET (uint16_t)(256*256-1) // Max val of uint16 + +#define MAX_RING_PATH_LENGTH (uint8_t)500 #define MAX_RING_NAME_LENGTH (uint8_t)50 -#define UNDEFINED_DD_LEVEL (uint8_t)0xff + #define UNDEFINED_BOOLEAN (myBoolean_t)0xff // // @@ -132,6 +138,7 @@ typedef uint16_t TorRingOffset_t; // Offset value to actual ring //#define TOR_VERSION 3 // Added TOR magic header. //#define TOR_VERSION 4 // TOR API code restructuring. #define TOR_VERSION 5 // Removed TOR-level DD handling. +//#define TOR_VERSION 6 // Added additional runtime risk level (RL2) // TOR Magic values for top-level TOR ringSection and sub-ringSections enum TorMagicNum @@ -206,8 +213,9 @@ typedef struct uint32_t scanScomAddress; } GenRingIdList; -// PPE types supported. Note that this enum also reflects the -// order with which they appear in the HW image's .rings section. +// P9 PPE types supported. +// - This enum also reflects the order with which they appear in the HW image's .rings section. +// - Do NOT make changes to the values or order of this enum. enum PpeType { PT_SBE = 0x00, @@ -216,17 +224,16 @@ enum PpeType NUM_PPE_TYPES = 0x03 }; -// Do NOT make changes to the values or order of this enum. Some user -// codes, like xip_tool, make assumptions about range and order. +// P9 ring variants supported. +// - This enum also reflects the order with which they appear in various images' .rings section. +// - Do NOT make changes to the values or order of this enum. enum RingVariant { - BASE = 0x00, - CC = 0x01, - RL = 0x02, - OVERRIDE = 0x03, - OVERLAY = 0x04, - NUM_RING_VARIANTS = 0x05, - NOT_VALID = 0xff + RV_BASE = 0x00, + RV_CC = 0x01, + RV_RL = 0x02, + RV_RL2 = 0x03, + NUM_RING_VARIANTS = 0x04, }; extern const char* ppeTypeName[]; @@ -234,10 +241,13 @@ extern const char* ringVariantName[]; typedef struct { - RingVariant_t variant[3]; + RingVariant_t variant[4]; } RingVariantOrder; +// P9 ring types supported. +// - This enum also reflects the order with which they appear in various images' .rings section. +// - Do NOT make changes to the values or order of this enum. enum RingType { COMMON_RING = 0, @@ -289,7 +299,7 @@ typedef struct { uint8_t iv_torOffSet; #ifndef __PPE__ - char iv_name[50]; + char iv_name[MAX_RING_NAME_LENGTH]; #endif ChipletType_t iv_type; } RingProperties_t; @@ -302,6 +312,7 @@ typedef struct #define INFRASTRUCT_RC_FAILURE 1 #define INFRASTRUCT_RC_CODE_BUG 2 #define INFRASTRUCT_RC_USER_ERROR 3 +#define INFRASTRUCT_RC_ENV_ERROR 4 #define INFRASTRUCT_RC_NOOF_CODES 5 // Do not use as RC code // // TOR specific error codes @@ -332,7 +343,13 @@ typedef struct #define TOR_BUFFER_TOO_SMALL INFRASTRUCT_RC_NOOF_CODES + 21 #define TOR_TOO_MANY_DD_LEVELS INFRASTRUCT_RC_NOOF_CODES + 22 #define TOR_OFFSET_TOO_BIG INFRASTRUCT_RC_NOOF_CODES + 23 +#define TOR_NO_RINGS_FOR_VARIANT INFRASTRUCT_RC_NOOF_CODES + 24 +#ifndef __HOSTBOOT_MODULE // Only needed by ring_apply in EKB +int ringid_get_raw_ring_file_path( uint32_t i_magic, + RingVariant_t i_ringVariant, + char* io_directory ); +#endif int ringid_get_noof_chiplets( ChipType_t i_chipType, uint32_t i_torMagic, @@ -340,7 +357,8 @@ int ringid_get_noof_chiplets( ChipType_t i_chipType, int ringid_get_properties( ChipType_t i_chipType, uint32_t i_torMagic, - ChipletType_t i_chiplet, + uint8_t i_torVersion, + ChipletType_t i_chipletType, ChipletData_t** o_chipletData, GenRingIdList** o_ringIdListCommon, GenRingIdList** o_ringIdListInstance, diff --git a/src/import/chips/p9/utils/imageProcs/p9_ringId.C b/src/import/chips/p9/utils/imageProcs/p9_ringId.C index c0fff7dc..2dfe2cfa 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_ringId.C +++ b/src/import/chips/p9/utils/imageProcs/p9_ringId.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -61,7 +61,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"perv_repr" , 0x13, 0x01, 0x01, VPD_RING , 0x01034006}, {"occ_repr" , 0x14, 0x01, 0x01, VPD_RING , 0x01030806}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -85,7 +85,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"n0_nx_repr" , 0x0a, 0x02, 0x02, VPD_RING , 0x02032006}, {"n0_cxa0_repr" , 0x0b, 0x02, 0x02, VPD_RING , 0x02031006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID}; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT}; }; @@ -113,7 +113,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"n1_ioo1_repr" , 0x0e, 0x03, 0x03, VPD_RING , 0x03030406}, {"n1_mcs23_repr" , 0x0f, 0x03, 0x03, VPD_RING , 0x03030206}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID}; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT}; }; @@ -137,7 +137,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"n2_cxa1_repr" , 0x0a, 0x04, 0x04, VPD_RING , 0x04032006}, {"n2_psi_repr" , 0x0b, 0x04, 0x04, VPD_RING , 0x04030206}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -162,7 +162,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"n3_mcs01_repr" , 0x0b, 0x05, 0x05, VPD_RING , 0x05030106}, {"n3_np_repr" , 0x0c, 0x05, 0x05, VPD_RING , 0x05030806}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -193,7 +193,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"xb_io1_repr" , 0x15, 0x06, 0x06, VPD_RING , 0x06031106}, {"xb_io2_repr" , 0x16, 0x06, 0x06, VPD_RING , 0x06030886}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -224,7 +224,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"mc_iom01_repr" , 0x11, 0x07, 0x08, VPD_RING , 0x07031006}, {"mc_iom23_repr" , 0x12, 0x07, 0x08, VPD_RING , 0x07030806}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -244,7 +244,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"ob0_repr" , 0x07, 0x09, 0x09, VPD_RING , 0x09037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -264,7 +264,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"ob1_repr" , 0x07, 0x0a, 0x0a, VPD_RING , 0x0A037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -284,7 +284,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"ob2_repr" , 0x07, 0x0b, 0x0b, VPD_RING , 0x0B037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -304,7 +304,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"ob3_repr" , 0x07, 0x0c, 0x0c, VPD_RING , 0x0C037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -322,7 +322,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"pci0_repr" , 0x05, 0x0d, 0x0d, VPD_RING , 0x0D037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -340,7 +340,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"pci1_repr" , 0x05, 0x0e, 0x0e, VPD_RING , 0x0E037806}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -358,7 +358,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { {"pci2_repr" , 0x05, 0x0F, 0x0F, VPD_RING , 0x0F037C06}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_RL, UNDEFINED_RING_VARIANT, UNDEFINED_RING_VARIANT }; }; @@ -441,7 +441,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = {"ex_l3_refr_repr" , 0x45, 0x10, 0x1b, VPD_RING , 0x10030046}, {"ex_l3_refr_time" , 0x46, 0x10, 0x1b, VPD_RING , 0x10030047}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, CC, RL }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2 }; }; @@ -460,7 +460,7 @@ const GenRingIdList RING_ID_LIST_INSTANCE[] = { { "ec_repr" , 0x05, 0x20, 0x37, VPD_RING , 0x20037006}, }; -const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, CC, RL }; +const RingVariantOrder RING_VARIANT_ORDER[] = { RV_BASE, RV_CC, RV_RL, RV_RL2 }; }; @@ -475,14 +475,14 @@ ChipletType_t P9_RID::ringid_get_chiplet(RingId_t i_ringId) } void P9_RID::ringid_get_chiplet_properties( - ChipletType_t i_chiplet, + ChipletType_t i_chipletType, ChipletData_t** o_cpltData, GenRingIdList** o_ringComm, GenRingIdList** o_ringInst, RingVariantOrder** o_varOrder, uint8_t* o_varNumb) { - switch (i_chiplet) + switch (i_chipletType) { case PERV_TYPE : *o_cpltData = (ChipletData_t*) &PERV::g_chipletData; diff --git a/src/import/chips/p9/utils/imageProcs/p9_ringId.H b/src/import/chips/p9/utils/imageProcs/p9_ringId.H index 5811830a..cf379816 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_ringId.H +++ b/src/import/chips/p9/utils/imageProcs/p9_ringId.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -686,7 +686,7 @@ static const ChipletData_t g_chipletData = 66, // 66 common rings for Quad chiplet. 5, // 5 instance specific rings for each EQ chiplet 9, // 9 different rings since 2 per EX ring and 1 per EQ - 3, // 3 ring variants: BASE, CC, RL + 4, // 4 ring variants: BASE, CC, RL, RL2 }; }; // end of namespace EQ @@ -711,7 +711,7 @@ static const ChipletData_t g_chipletData = 6, // 6 common rings for Core chiplet 1, // 1 instance specific ring for each Core chiplet 1, - 3, // 3 ring variants: BASE, CC, RL + 4, // 4 ring variants: BASE, CC, RL, RL2 }; }; // end of namespace EC @@ -1252,7 +1252,7 @@ ringid_get_chiplet(RingId_t i_ringId); // as determined by ringId void ringid_get_chiplet_properties( - ChipletType_t i_chiplet, + ChipletType_t i_chipletType, ChipletData_t** o_cpltData, GenRingIdList** o_ringComm, GenRingIdList** o_ringInst, diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.C b/src/import/chips/p9/utils/imageProcs/p9_tor.C index 8d8af340..56919312 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_tor.C +++ b/src/import/chips/p9/utils/imageProcs/p9_tor.C @@ -92,6 +92,7 @@ int get_ring_from_ring_section( void* i_ringSection, // Ring secti { rc = ringid_get_properties( chipType, torMagic, + torHeader->version, iCplt, &cpltData, &ringIdListCommon, diff --git a/src/import/chips/p9/xip/p9_xip_tool.C b/src/import/chips/p9/xip/p9_xip_tool.C index 935867fe..3955b62d 100644 --- a/src/import/chips/p9/xip/p9_xip_tool.C +++ b/src/import/chips/p9/xip/p9_xip_tool.C @@ -40,8 +40,6 @@ #include <unistd.h> #include <string> -#undef P9_XIP_TOOL_VERBOSE - #include "p9_xip_image.h" #include "common_ringId.H" #ifndef __PPE__ // Needed on ppe side to avoid having to include various APIs @@ -2066,17 +2064,17 @@ int dissectRingSectionTor( uint8_t* i_ringSection, //-------------------- // Ring variant loop. // - Base, cache, risk or just "base" if no ring variant - for (ringVariant = 0; ringVariant < OVERRIDE; ringVariant++) + for (ringVariant = 0; ringVariant < NUM_RING_VARIANTS; ringVariant++) { - if ((torMagic == TOR_MAGIC_OVRD && ringVariant != BASE) || - (torMagic == TOR_MAGIC_OVLY && ringVariant != BASE) || - (torMagic == TOR_MAGIC_CEN && ringVariant == CC)) + if ((torMagic == TOR_MAGIC_OVRD && ringVariant != RV_BASE) || + (torMagic == TOR_MAGIC_OVLY && ringVariant != RV_BASE) || + (torMagic == TOR_MAGIC_CEN && ringVariant == RV_CC)) { continue; } //---------------------- - // Unique ring ID loop. + // Ring ID loop. for (ringId = 0; ringId < numRingIds; ringId++) { @@ -2087,21 +2085,12 @@ int dissectRingSectionTor( uint8_t* i_ringSection, // with the input value of instanceId, instanceInputId. // - Start looping safely from 0 so that if instanceId is adjusted // in tor_access_ring, i.e. in case it's an instance ring, it will - // return a non-zeor value for instanceId. + // return a non-zero value for instanceId. uint8_t instanceInputId; for (instanceId = 0; instanceId <= INSTANCE_ID_MAX; instanceId++) { instanceInputId = instanceId; -#ifdef P9_XIP_TOOL_VERBOSE - fprintf( stderr, "Processing: " - "DD=0x%02x " - "PPE=%s " - "Variant=%s " - "RingID=%d " - "InstanceID=0x%02x\n", - ddLevel, ppeTypeName[ppeType], ringVariantName[ringVariant], ringId, instanceId); -#endif ringBlockSize = MAX_RING_BUF_SIZE_TOOL; rc = tor_access_ring( i_ringSection, @@ -2904,7 +2893,7 @@ int check_sbe_ring_section_size( void* i_hwImage, rc = tor_get_block_of_rings( ringsSection, i_ddLevel, PT_SBE, - NOT_VALID, + UNDEFINED_RING_VARIANT, l_blockPtr, l_blockSize); diff --git a/src/import/tools/imageProcs/p9_ipl_build.C b/src/import/tools/imageProcs/p9_ipl_build.C index 7e742ddc..e4b69117 100644 --- a/src/import/tools/imageProcs/p9_ipl_build.C +++ b/src/import/tools/imageProcs/p9_ipl_build.C @@ -126,7 +126,7 @@ int get_dd_level_rings_from_hw_image( char* i_hwImage, rc = tor_get_block_of_rings( ringsSection, i_ddLevel, PT_SBE, - NOT_VALID, + UNDEFINED_RING_VARIANT, o_ringBlock, o_blockSize ); @@ -152,7 +152,7 @@ int get_dd_level_rings_from_hw_image( char* i_hwImage, rc = tor_get_block_of_rings( ringsSection, i_ddLevel, PT_SBE, - NOT_VALID, + UNDEFINED_RING_VARIANT, o_ringBlock, o_blockSize ); |