summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf
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
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')
-rw-r--r--src/usr/hwpf/hwp/dram_initialization/dram_initialization.C2
-rw-r--r--src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars_memory_attributes.xml20
-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
4 files changed, 42 insertions, 19 deletions
diff --git a/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C b/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
index 7d5f77d14..b5e5e26ab 100644
--- a/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
+++ b/src/usr/hwpf/hwp/dram_initialization/dram_initialization.C
@@ -771,7 +771,7 @@ void* call_proc_exit_cache_contained( void *io_pArgs )
ATTR_MIRROR_BASE_ADDRESS_type l_mirrorBaseAddr = 0;
if(!is_sapphire_load())
{
- l_mirrorBaseAddr = l_sys->getAttr<ATTR_MIRROR_BASE_ADDRESS>();
+ l_mirrorBaseAddr = l_sys->getAttr<TARGETING::ATTR_MIRROR_BASE_ADDRESS>();
}
// Verify there is memory at the mirrored location
diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars_memory_attributes.xml b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars_memory_attributes.xml
index d98863052..096d3b57d 100644
--- a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars_memory_attributes.xml
+++ b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/proc_setup_bars_memory_attributes.xml
@@ -20,7 +20,7 @@
<!-- permissions and limitations under the License. -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: proc_setup_bars_memory_attributes.xml,v 1.10 2013/09/23 22:20:29 jmcgill Exp $ -->
+<!-- $Id: proc_setup_bars_memory_attributes.xml,v 1.14 2014-06-19 14:26:21 dcrowell Exp $ -->
<!-- proc_setup_bars_memory_attributes.xml -->
<attributes>
<!-- ********************************************************************* -->
@@ -35,20 +35,34 @@
NORMAL = non-mirrored start: 0, mirrored start: 512TB
FLIPPED = mirrored start: 0, non-mirrored start: 512TB
SELECTIVE = non-mirrored/mirrored start (interleaved): 0
- DRAWER = non-mirrored start: 1TB*drawer, mirrored start: 512TB+(1TB*drawer/2)
+ DRAWER = non-mirrored start: 32TB*drawer, mirrored start: 512TB+(32TB*drawer)
+ FLIPPED_DRAWER = mirrored start: 32TB * drawer, non-mirrored start: 512TB+(32TB*drawer)
</description>
<valueType>uint8</valueType>
<enum>
NORMAL = 0x0,
FLIPPED = 0x1,
SELECTIVE = 0x2,
- DRAWER = 0x3
+ DRAWER = 0x3,
+ FLIPPED_DRAWER = 0x4
</enum>
<platInit/>
<persistRuntime/>
</attribute>
<!-- ********************************************************************* -->
<attribute>
+ <id>ATTR_MIRROR_BASE_ADDRESS</id>
+ <targetType>TARGET_TYPE_SYSTEM</targetType>
+ <description>
+ System-level base address for the start of mirrored memory.
+ Defined by platform as part of the global memory map.
+ </description>
+ <valueType>uint64</valueType>
+ <platInit/>
+ <persistRuntime/>
+ </attribute>
+ <!-- ********************************************************************* -->
+ <attribute>
<id>ATTR_PROC_MEM_BASE</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>Base address for non-mirrored memory regions
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