Skip to content

Commit

Permalink
p9_mss_eff_grouping -- fix multi-group mirrored mapping bug introduce…
Browse files Browse the repository at this point in the history
…d by 49290

Change-Id: I9fdfc8b097d05b57766c221020d4f5eddb841f8b
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/50549
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Dev-Ready: Joseph J. McGill <jmcgill@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: LENNARD G. STREAT <lstreat@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/50550
Reviewed-by: Hostboot Team <hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
  • Loading branch information
jjmcgill authored and crgeddes committed Dec 14, 2017
1 parent 4da087d commit 547e7f8
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.C
Expand Up @@ -2770,6 +2770,9 @@ fapi2::ReturnCode grouping_calcRegions(
bool l_map_mirror = i_cfgMirror &&
(io_groupData.iv_data[pos][PORTS_IN_GROUP] > 1);

FAPI_DBG("pos: %d, l_map_mirror: %d",
pos, l_map_mirror);

// first group goes in first region
if (pos == 0)
{
Expand Down Expand Up @@ -2809,6 +2812,8 @@ fapi2::ReturnCode grouping_calcRegions(
// assign mirrored base address
if (l_map_mirror)
{
FAPI_DBG("Assigning mirrored base address (=%016lX) for pos: %d in first group",
l_cur_m_base_addr, pos + MIRR_OFFSET);
io_groupData.iv_data[pos + MIRR_OFFSET][BASE_ADDR] =
l_cur_m_base_addr >> 30;
}
Expand Down Expand Up @@ -2840,6 +2845,8 @@ fapi2::ReturnCode grouping_calcRegions(
"Unable to map mirrored group!");
io_groupData.iv_data[pos + MIRR_OFFSET][BASE_ADDR] =
l_cur_m_base_addr >> 30;
FAPI_DBG("Assigning mirrored base address (=%016lX) for pos: %d in curr region",
l_cur_m_base_addr, pos + MIRR_OFFSET);
}
}
else
Expand Down Expand Up @@ -2884,6 +2891,8 @@ fapi2::ReturnCode grouping_calcRegions(

// reset mirror base address
l_cur_m_base_addr = i_procAttrs.iv_mirrorBaseAddr[l_cur_m_region_idx];
FAPI_DBG("Resetting mirror base address: %016lX",
l_cur_m_base_addr);

// assign non mirrored base address
io_groupData.iv_data[pos][BASE_ADDR] =
Expand All @@ -2894,17 +2903,23 @@ fapi2::ReturnCode grouping_calcRegions(
{
io_groupData.iv_data[pos + MIRR_OFFSET][BASE_ADDR] =
l_cur_m_base_addr >> 30;
FAPI_DBG("Assigning mirrored base address (=%016lX) for pos: %d in new region",
l_cur_m_base_addr, pos + MIRR_OFFSET);
}
}
}

// update remaining size in region
l_nm_region_size_left -= io_groupData.iv_data[pos][GROUP_SIZE];
l_m_region_size_left -= (io_groupData.iv_data[pos][GROUP_SIZE] / 2);
FAPI_DBG("l_nm_region_size_left: %016lX, l_m_region_size_left: %016lX",
l_nm_region_size_left, l_m_region_size_left);

// increment mirrored address (regardless of whether mapped
// for this group)
l_cur_m_base_addr += io_groupData.iv_data[pos][GROUP_SIZE] / 2;
l_cur_m_base_addr += (((uint64_t) io_groupData.iv_data[pos][GROUP_SIZE] << 30) / 2);
FAPI_DBG("l_cur_m_base_addr: %016lX",
l_cur_m_base_addr);

// set alt region information directly based on base region mapping
for (uint8_t ii = 0; ii < NUM_OF_ALT_MEM_REGIONS; ii++)
Expand Down

0 comments on commit 547e7f8

Please sign in to comment.