summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/mc_config
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-06-10 09:33:27 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-06-19 18:01:24 -0500
commit27ad3b81551ad9642c63103ab79e19155150490c (patch)
tree77c43e43e7082d3e1b0ff688680dee197952722f /src/usr/hwpf/hwp/mc_config
parent649ef8c06007157123abad8cf72bec53cd5eae11 (diff)
downloadtalos-hostboot-27ad3b81551ad9642c63103ab79e19155150490c.tar.gz
talos-hostboot-27ad3b81551ad9642c63103ab79e19155150490c.zip
Change to HWPs to support dynamic mirror base address
Change-Id: Ic0d247725b9f97ee77c756254ed768a2968791ce Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11530 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/mc_config')
-rw-r--r--src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.C32
-rw-r--r--src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.H7
2 files changed, 24 insertions, 15 deletions
diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.C
index 873b541d5..a031316bb 100644
--- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.C
+++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.C
@@ -20,7 +20,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: opt_memmap.C,v 1.16 2013/10/28 21:17:47 jmcgill Exp $
+// $Id: opt_memmap.C,v 1.18 2014-06-19 14:06:34 dcrowell Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/opt_memmap.C,v $
@@ -34,8 +34,7 @@
// *! DESCRIPTION : Layout non-mirrored/mirrored address map (FAPI)
// *!
// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com
-// *! BACKUP NAME : Mark Bellows Email: bellows@us.ibm.com
-// *! BACKUP NAME : Van Lee Email: vanlee@us.ibm.com
+// *! BACKUP NAME : ??? Email: ???@us.ibm.com
// *!
//------------------------------------------------------------------------------
@@ -44,6 +43,7 @@
//------------------------------------------------------------------------------
// Version:| Author: | Date: | Comment:
//---------|----------|---------|-----------------------------------------------
+// 1.17 | dcrowell | 06/19/14| Switch from #define to attr for mirror origin
// 1.16 | jmcgill | 10/28/13| Offset drawers by 32TB rather than 1TB
// 1.15 | jmcgill | 09/17/13| Add logic to offset memory map based on
// | | | drawer number (required for multi-drawer
@@ -492,8 +492,18 @@ ReturnCode opt_memmap(std::vector<fapi::Target> & i_procs, bool i_init)
break;
}
- FAPI_INF("opt_memmap called with i_init = %d, mirror_policy: %d",
- (i_init)?(1):(0), l_mirror_policy);
+ uint64_t l_mirror_origin = 0;
+ rc = FAPI_ATTR_GET(ATTR_MIRROR_BASE_ADDRESS,
+ NULL,
+ l_mirror_origin);
+ if (!rc.ok())
+ {
+ FAPI_ERR("Error querying ATTR_MIRROR_BASE_ADDRESS");
+ break;
+ }
+
+ FAPI_INF("opt_memmap called with i_init = %d, mirror_policy: %d, origin=%llX",
+ (i_init)?(1):(0), l_mirror_policy, l_mirror_origin);
// first pass of execution
if (i_init)
@@ -505,12 +515,12 @@ ReturnCode opt_memmap(std::vector<fapi::Target> & i_procs, bool i_init)
ENUM_ATTR_MEM_MIRROR_PLACEMENT_POLICY_NORMAL)
{
mem_base = OPT_MEMMAP_BASE_ORIGIN;
- mirror_base = OPT_MEMMAP_OFFSET_ORIGIN;
+ mirror_base = l_mirror_origin;
}
else if (l_mirror_policy ==
ENUM_ATTR_MEM_MIRROR_PLACEMENT_POLICY_FLIPPED)
{
- mem_base = OPT_MEMMAP_OFFSET_ORIGIN;
+ mem_base = l_mirror_origin;
mirror_base = OPT_MEMMAP_BASE_ORIGIN;
}
else if (l_mirror_policy ==
@@ -542,7 +552,7 @@ ReturnCode opt_memmap(std::vector<fapi::Target> & i_procs, bool i_init)
}
mem_base = drawer_id * 32 * OPT_MEMMAP_TB;
- mirror_base = OPT_MEMMAP_OFFSET_ORIGIN + (mem_base / 2);
+ mirror_base = l_mirror_origin + (mem_base / 2);
}
rc = FAPI_ATTR_SET(ATTR_PROC_MEM_BASE,
@@ -581,13 +591,13 @@ ReturnCode opt_memmap(std::vector<fapi::Target> & i_procs, bool i_init)
{
// non-mirrored at zero, mirrored at offset
l_nm_base_curr = OPT_MEMMAP_BASE_ORIGIN;
- l_m_base_curr = OPT_MEMMAP_OFFSET_ORIGIN;
+ l_m_base_curr = l_mirror_origin;
}
else if (l_mirror_policy ==
ENUM_ATTR_MEM_MIRROR_PLACEMENT_POLICY_FLIPPED)
{
// mirrored at zero, non-mirrored at offset
- l_nm_base_curr = OPT_MEMMAP_OFFSET_ORIGIN;
+ l_nm_base_curr = l_mirror_origin;
l_m_base_curr = OPT_MEMMAP_BASE_ORIGIN;
}
else if (l_mirror_policy ==
@@ -618,7 +628,7 @@ ReturnCode opt_memmap(std::vector<fapi::Target> & i_procs, bool i_init)
}
l_nm_base_curr = drawer_id * 32 * OPT_MEMMAP_TB;
- l_m_base_curr = OPT_MEMMAP_OFFSET_ORIGIN + (l_nm_base_curr / 2);
+ l_m_base_curr = l_mirror_origin + (l_nm_base_curr / 2);
}
ProcChipMemmap p(&(*l_iter), l_mirror_policy);
diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.H b/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.H
index 0892086bc..685fc7e07 100644
--- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.H
+++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/opt_memmap.H
@@ -20,7 +20,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: opt_memmap.H,v 1.8 2013/09/26 17:55:25 jmcgill Exp $
+// $Id: opt_memmap.H,v 1.9 2014-06-19 14:06:35 dcrowell Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/opt_memmap.H,v $ */
@@ -34,8 +34,7 @@
// *! DESCRIPTION : Layout non-mirrored/mirrored address map (FAPI)
// *!
// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com
-// *! BACKUP NAME : Mark Bellows Email: bellows@us.ibm.com
-// *! BACKUP NAME : Van Lee Email: vanlee@us.ibm.com
+// *! BACKUP NAME : ??? Email: ???@us.ibm.com
// *!
//------------------------------------------------------------------------------
@@ -44,6 +43,7 @@
//------------------------------------------------------------------------------
// Version:| Author: | Date: | Comment:
//---------|----------|---------|-----------------------------------------------
+// 1.9 | dcrowell | 06/19/14| Remove OPT_MEMMAP_OFFSET_ORIGIN
// 1.7 | jmcgill | 07/10/13| Update to match new attributes, selective
// | | | aligment policy changes
// 1.6 | jmcgill | 05/24/13| Correct index name
@@ -74,7 +74,6 @@ const uint64_t OPT_MEMMAP_TB = 0x0000010000000000ULL;
// default origin for non-mirrored/mirrored address regions
const uint64_t OPT_MEMMAP_BASE_ORIGIN = 0; // 0
-const uint64_t OPT_MEMMAP_OFFSET_ORIGIN = 0x0002000000000000LL; // 512TB
const uint64_t OPT_MEMMAP_SELECTIVE_ORIGIN = 0x0000080000000000LL; // 8TB
// maximum non-mirrored/mirrored regions supported
OpenPOWER on IntegriCloud