summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspashabk-in <shakeebbk@in.ibm.com>2018-03-23 06:09:42 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2018-04-16 12:39:23 -0400
commitbe846edf5a2fae95ffdb81b626410d35d435fcd7 (patch)
tree47b81cdb995faa747e9a9c080ad4aa0d1f8e2986
parentaa83a786a35d5fc48f90c1a5de13d6e818a77404 (diff)
downloadtalos-sbe-be846edf5a2fae95ffdb81b626410d35d435fcd7.tar.gz
talos-sbe-be846edf5a2fae95ffdb81b626410d35d435fcd7.zip
Consume PROC_MEM_TO_USE for alt memory config
Change-Id: Ideb3c3d2bbdbce8b773d51b86d9f97f2e654ca56 RTC:189091 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56197 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56203
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.C39
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.H4
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_sbe_load_bootloader.C4
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_sbe_mcs_setup.C4
-rw-r--r--src/sbefw/app/power/ipl_table.C55
5 files changed, 51 insertions, 55 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.C b/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.C
index feea764d..ee602beb 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.C
@@ -67,6 +67,12 @@ const uint8_t FABRIC_ADDR_LS_GROUP_ID_END_BIT = 18;
// chip ID (large system)
const uint8_t FABRIC_ADDR_LS_CHIP_ID_START_BIT = 19;
const uint8_t FABRIC_ADDR_LS_CHIP_ID_END_BIT = 21;
+// memory group/chip ID
+const uint8_t FABRIC_ADDR_MEMORY_GROUP_ID_START_BIT = 0;
+const uint8_t FABRIC_ADDR_MEMORY_GROUP_ID_LEN = 3;
+const uint8_t FABRIC_ADDR_MEMORY_CHIP_ID_START_BIT = 3;
+const uint8_t FABRIC_ADDR_MEMORY_CHIP_ID_LEN = 3;
+
//------------------------------------------------------------------------------
@@ -158,6 +164,7 @@ fapi2::ReturnCode p9_fbc_utils_get_chip_base_address_no_aliases(
uint8_t l_fabric_chip_id = 0;
uint8_t l_mirror_policy;
fapi2::buffer<uint64_t> l_base_address;
+ fapi2::buffer<uint8_t> l_proc_chip_mem_to_use = 0;
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM> FAPI_SYSTEM;
FAPI_DBG("Start");
@@ -167,34 +174,28 @@ fapi2::ReturnCode p9_fbc_utils_get_chip_base_address_no_aliases(
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_SYSTEM_ID, i_target, l_fabric_system_id),
"Error from FAPI_ATTR_GET (ATTR_FABRIC_SYSTEM_ID)");
- // set group ID
- if ((i_addr_mode == ABS_FBC_GRP_CHIP_IDS) ||
- (i_addr_mode == ABS_FBC_GRP_ID_ONLY))
+ if (i_addr_mode == HB_GRP_CHIP_IDS)
{
- // absolute
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_GROUP_ID, i_target, l_fabric_group_id),
+ // HB group/chip ID
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_MEM_TO_USE,
+ i_target,
+ l_proc_chip_mem_to_use),
"Error from FAPI_ATTR_GET (ATTR_FABRIC_GROUP_ID)");
- }
- else
- {
- // effective
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EFF_FABRIC_GROUP_ID, i_target, l_fabric_group_id),
- "Error from FAPI_ATTR_GET (ATTR_EFF_FABRIC_GROUP_ID)");
- }
- // set chip ID
- if (i_addr_mode == ABS_FBC_GRP_CHIP_IDS)
- {
- // absolute
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_CHIP_ID, i_target, l_fabric_chip_id),
- "Error from FAPI_ATTR_GET (ATTR_FABRIC_CHIP_ID)");
+ l_proc_chip_mem_to_use.extract<FABRIC_ADDR_MEMORY_GROUP_ID_START_BIT,
+ FABRIC_ADDR_MEMORY_GROUP_ID_LEN,
+ 0>(l_fabric_group_id);
+ l_proc_chip_mem_to_use.extract<FABRIC_ADDR_MEMORY_CHIP_ID_START_BIT,
+ FABRIC_ADDR_MEMORY_CHIP_ID_LEN,
+ 0>(l_fabric_chip_id);
}
else if (i_addr_mode == EFF_FBC_GRP_CHIP_IDS)
{
// effective
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EFF_FABRIC_GROUP_ID, i_target, l_fabric_group_id),
+ "Error from FAPI_ATTR_GET (ATTR_EFF_FABRIC_GROUP_ID)");
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EFF_FABRIC_CHIP_ID, i_target, l_fabric_chip_id),
"Error from FAPI_ATTR_GET (ATTR_EFF_FABRIC_CHIP_ID)");
-
}
// else, leave chip ID=0 for the purposes of establishing drawer base address
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.H b/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.H
index 6a0c0a35..d1f64d1f 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.H
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_fbc_utils.H
@@ -52,9 +52,7 @@
enum p9_fbc_utils_addr_mode_t
{
EFF_FBC_GRP_CHIP_IDS, // effective FBC group/chip ID attributes
- EFF_FBC_GRP_ID_ONLY, // effective FBC group ID attribute (chip ID=0)
- ABS_FBC_GRP_CHIP_IDS, // absolute FBC group/chip ID attributes
- ABS_FBC_GRP_ID_ONLY // absolute FBC group ID attribute (chip ID=0)
+ HB_GRP_CHIP_IDS, // group/chip ID of the memory
};
//------------------------------------------------------------------------------
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_load_bootloader.C b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_load_bootloader.C
index 74d35da0..365a9393 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_load_bootloader.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_load_bootloader.C
@@ -312,7 +312,7 @@ calc_image_footprint(
// (bootloader offset)
FAPI_TRY(p9_fbc_utils_get_chip_base_address_no_aliases(
i_master_chip_target,
- ABS_FBC_GRP_ID_ONLY,
+ HB_GRP_CHIP_IDS,
l_drawer_base_address_nm0,
l_drawer_base_address_nm1,
l_drawer_base_address_m,
@@ -406,7 +406,7 @@ get_bootloader_config_data(
// read platform initialized attributes to determine struct content
FAPI_TRY(p9_fbc_utils_get_chip_base_address_no_aliases(i_master_chip_target,
- EFF_FBC_GRP_CHIP_IDS,
+ HB_GRP_CHIP_IDS,
l_chip_base_address_nm0,
l_chip_base_address_nm1,
l_chip_base_address_m,
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_mcs_setup.C b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_mcs_setup.C
index 3bd71971..dfd5d970 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_mcs_setup.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_mcs_setup.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER sbe Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -227,7 +227,7 @@ p9_sbe_mcs_setup(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
// = (drawer non-mirrored base address) + (hostboot HRMOR offset)
// min MCS base size is 4GB, local HB will always be below
FAPI_TRY(p9_fbc_utils_get_chip_base_address_no_aliases(i_target,
- ABS_FBC_GRP_ID_ONLY,
+ HB_GRP_CHIP_IDS,
l_chip_base_address_nm0,
l_chip_base_address_nm1,
l_chip_base_address_m,
diff --git a/src/sbefw/app/power/ipl_table.C b/src/sbefw/app/power/ipl_table.C
index 6cdda196..da1d3cb2 100644
--- a/src/sbefw/app/power/ipl_table.C
+++ b/src/sbefw/app/power/ipl_table.C
@@ -603,7 +603,7 @@ ReturnCode istepLoadBootLoader( voidfuncptr_t i_hwp)
l_hostboot_hrmor_offset);
rc = p9_fbc_utils_get_chip_base_address_no_aliases(
proc,
- ABS_FBC_GRP_ID_ONLY,
+ HB_GRP_CHIP_IDS,
drawer_base_address_nm0,
drawer_base_address_nm1,
drawer_base_address_m,
@@ -807,24 +807,23 @@ ReturnCode istepWithExL2Flush( voidfuncptr_t i_hwp)
break;
}
// check the position of EX i.e. Ex0 or Ex1
- if(!(l2IsScomable[((exTgt.getChipletNumber()) % 2)]))
+ if(l2IsScomable[((exTgt.getChipletNumber()) % 2)])
{
- SBE_INFO(SBE_FUNC "Ex chipletId [%d] not l2 scomable, so no purge",
- exTgt.getChipletNumber());
- // TODO via RTC 191254
- // Enable this code back once stop states are enabled
- // This is temporary hack to debug SW422447
- // continue;
+ p9core::purgeData_t l_purgeData;
+ SBE_EXEC_HWP(rc,
+ reinterpret_cast<sbeIstepHwpExL2Flush_t>(i_hwp),
+ exTgt,
+ l_purgeData)
+ if(rc != FAPI2_RC_SUCCESS)
+ {
+ SBE_ERROR(SBE_FUNC " p9_l2_flush failed, RC=[0x%08X]", rc);
+ break;
+ }
}
- p9core::purgeData_t l_purgeData;
- SBE_EXEC_HWP(rc,
- reinterpret_cast<sbeIstepHwpExL2Flush_t>(i_hwp),
- exTgt,
- l_purgeData)
- if(rc != FAPI2_RC_SUCCESS)
+ else
{
- SBE_ERROR(SBE_FUNC " p9_l2_flush failed, RC=[0x%08X]", rc);
- break;
+ SBE_INFO(SBE_FUNC "Ex chipletId [%d] not l2 scomable, so no purge",
+ exTgt.getChipletNumber());
}
}
SBE_EXIT(SBE_FUNC);
@@ -864,22 +863,20 @@ ReturnCode istepWithExL3Flush( voidfuncptr_t i_hwp)
}
// check the position of EX i.e. Ex0 or Ex1
- if(!(l3IsScomable[((exTgt.getChipletNumber()) % 2)]))
+ if(l3IsScomable[((exTgt.getChipletNumber()) % 2)])
{
- SBE_INFO(SBE_FUNC "Ex chipletId [%d] not l3 scomable, so no purge",
- exTgt.getChipletNumber());
- // TODO via RTC 191254
- // Enable this code back once stop states are enabled
- // This is temporary hack to debug SW422447
- // continue;
+ SBE_EXEC_HWP(rc, reinterpret_cast<sbeIstepHwpExL3Flush_t>(i_hwp),
+ exTgt, L3_FULL_PURGE, 0x0)
+ if(rc != FAPI2_RC_SUCCESS)
+ {
+ SBE_ERROR(SBE_FUNC " p9_l3_flush failed, RC=[0x%08X]", rc);
+ break;
+ }
}
-
- SBE_EXEC_HWP(rc, reinterpret_cast<sbeIstepHwpExL3Flush_t>(i_hwp),
- exTgt, L3_FULL_PURGE, 0x0)
- if(rc != FAPI2_RC_SUCCESS)
+ else
{
- SBE_ERROR(SBE_FUNC " p9_l3_flush failed, RC=[0x%08X]", rc);
- break;
+ SBE_INFO(SBE_FUNC "Ex chipletId [%d] not l2 scomable, so no purge",
+ exTgt.getChipletNumber());
}
}
SBE_EXIT(SBE_FUNC);
OpenPOWER on IntegriCloud