summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2017-07-27 00:11:34 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-08-31 09:52:13 -0400
commitb560b1da8a6ee6350315ac2c8ad4bafd22ea54c5 (patch)
treed5079cfe38255660e0fd9e0c893fefa87e9e443b /src
parent68cc9f79fbafd80ded80a0ee66bf7eab5e85d6b9 (diff)
downloadtalos-hostboot-b560b1da8a6ee6350315ac2c8ad4bafd22ea54c5.tar.gz
talos-hostboot-b560b1da8a6ee6350315ac2c8ad4bafd22ea54c5.zip
Increase max hostboot memory to 48 MB
- Extends hostboot memory from 32 to 48 MB to handle large code loads - Dump 48 MB in hostboot dump script - Support 48 MB hostboot size in debug framework Change-Id: I3e64e85a7e2455bc4add2f2db9b48f57db433c7d Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43735 Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+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: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/build/debug/Hostboot/Dump.pm12
-rwxr-xr-xsrc/build/debug/fsp-memdump.sh20
-rw-r--r--src/build/debug/simics-debug-framework.py4
-rw-r--r--src/include/kernel/basesegment.H6
-rw-r--r--src/include/kernel/memstate.H4
-rw-r--r--src/include/kernel/vmmmgr.H2
-rw-r--r--src/include/usr/vmmconst.h18
-rw-r--r--src/kernel/basesegment.C12
-rw-r--r--src/kernel/syscall.C2
-rw-r--r--src/lib/syscall_mm.C4
-rw-r--r--src/usr/isteps/istep14/call_proc_exit_cache_contained.C6
11 files changed, 53 insertions, 37 deletions
diff --git a/src/build/debug/Hostboot/Dump.pm b/src/build/debug/Hostboot/Dump.pm
index e7c1c78de..cf1b684a7 100755
--- a/src/build/debug/Hostboot/Dump.pm
+++ b/src/build/debug/Hostboot/Dump.pm
@@ -36,7 +36,7 @@ use constant MEMSTATE_NO_MEM => 0x0;
use constant MEMSTATE_HALF_CACHE => 0x4;
use constant MEMSTATE_REDUCED_CACHE => 0x8;
use constant MEMSTATE_FULL_CACHE => 0xa;
-use constant MEMSTATE_MS_32MEG => 0x20;
+use constant MEMSTATE_MS_48MEG => 0x30;
use constant _KB => 1024;
use constant _MB => 1024 * 1024;
@@ -71,9 +71,9 @@ our %memory_maps = (
[ 8 * _MB, 1 * _MB,
9 * _MB, 1 * _MB
],
- MEMSTATE_MS_32MEG() =>
- # Add next 22MB after we expand to memory.
- [ 10 * _MB, 22 * _MB
+ MEMSTATE_MS_48MEG() =>
+ # Add next 38MB after we expand to memory.
+ [ 10 * _MB, 38 * _MB
]
);
@@ -88,9 +88,9 @@ our %memory_states = (
MEMSTATE_FULL_CACHE() => [ MEMSTATE_NO_MEM,
MEMSTATE_HALF_CACHE, MEMSTATE_REDUCED_CACHE,
MEMSTATE_FULL_CACHE ],
- MEMSTATE_MS_32MEG() => [ MEMSTATE_NO_MEM,
+ MEMSTATE_MS_48MEG() => [ MEMSTATE_NO_MEM,
MEMSTATE_HALF_CACHE, MEMSTATE_REDUCED_CACHE,
- MEMSTATE_FULL_CACHE, MEMSTATE_MS_32MEG ]
+ MEMSTATE_FULL_CACHE, MEMSTATE_MS_48MEG ]
);
sub main
diff --git a/src/build/debug/fsp-memdump.sh b/src/build/debug/fsp-memdump.sh
index 49e57fa9a..89f48c015 100755
--- a/src/build/debug/fsp-memdump.sh
+++ b/src/build/debug/fsp-memdump.sh
@@ -85,7 +85,7 @@ discover()
limit_memory()
{
case ${STATE} in
- 20)
+ 30)
STATE=08
;;
*)
@@ -147,7 +147,7 @@ do
dump 9437184 1048576
STATE=08
;;
- 20)
+ 30)
dump 10485760 1048576
dump 11534336 1048576
dump 12582912 1048576
@@ -170,6 +170,22 @@ do
dump 30408704 1048576
dump 31457280 1048576
dump 32505856 1048576
+ dump 33554432 1048576
+ dump 34603008 1048576
+ dump 35651584 1048576
+ dump 36700160 1048576
+ dump 37748736 1048576
+ dump 38797312 1048576
+ dump 39845888 1048576
+ dump 40894464 1048576
+ dump 41943040 1048576
+ dump 42991616 1048576
+ dump 44040192 1048576
+ dump 45088768 1048576
+ dump 46137344 1048576
+ dump 47185920 1048576
+ dump 48234496 1048576
+ dump 49283072 1048576
STATE=0A
;;
discover) # Call discover function to determine state.
diff --git a/src/build/debug/simics-debug-framework.py b/src/build/debug/simics-debug-framework.py
index 26cc90176..1dc342adb 100644
--- a/src/build/debug/simics-debug-framework.py
+++ b/src/build/debug/simics-debug-framework.py
@@ -614,10 +614,10 @@ def magic_instruction_callback(user_arg, cpu, arg):
# 0=base, 1=name, 4=size 5=mirrored target, 6=priority
#print ">> %d:%s" % (entry[0], entry[1])
#check if base == hrmor, or if memory space encompasses the
- #entire base memory which is: hrmor + 0x2000000 (32 MB)
+ #entire base memory which is: hrmor + 0x3000000 (48 MB)
if ((entry[0] == hb_hrmor) or
((entry[0] < hb_hrmor) and
- (entry[0] + entry[4] >= hb_hrmor + 0x2000000) or
+ (entry[0] + entry[4] >= hb_hrmor + 0x3000000) or
(entry[0] == 134217728) or
(entry[0] == 136314880))): #0x8000000 or 0x8200000
target = entry[5]
diff --git a/src/include/kernel/basesegment.H b/src/include/kernel/basesegment.H
index 7d5e5450a..7629473f0 100644
--- a/src/include/kernel/basesegment.H
+++ b/src/include/kernel/basesegment.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2015 */
+/* Contributors Listed Below - COPYRIGHT 2011,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -136,7 +136,7 @@ class BaseSegment : public Segment
/**
* @brief Allocates a block of virtual memory that extends the VMM
- * space up to 32MEG of Mainstore.
+ * space up to 48MEG of Mainstore.
*/
static int mmExtend(void);
@@ -206,7 +206,7 @@ class BaseSegment : public Segment
/**
* @brief Allocates a block of virtual memory that extends the VMM
- * space up to 32MEG of Mainstore.
+ * space up to 48MEG of Mainstore.
*/
int _mmExtend(void);
diff --git a/src/include/kernel/memstate.H b/src/include/kernel/memstate.H
index 84acf3b4e..a01fdcc32 100644
--- a/src/include/kernel/memstate.H
+++ b/src/include/kernel/memstate.H
@@ -45,7 +45,7 @@ namespace KernelMemState
- - 4 = Hostboot is using half a cache
- - 8 = Hostboot is using reduced cache
- - 10 = Hostboot is using the full cache
- - - 32 = Hostboot is using 32 MB of mainstore*/
+ - - 48 = Hostboot is using 48 MB of mainstore*/
enum MemLocation
@@ -62,7 +62,7 @@ namespace KernelMemState
HALF_CACHE = 0x00000004,
REDUCED_CACHE = 0x00000008,
FULL_CACHE = 0x0000000A,
- MS_32MEG = 0x00000020,
+ MS_48MEG = 0x00000030,
};
struct mem_location
diff --git a/src/include/kernel/vmmmgr.H b/src/include/kernel/vmmmgr.H
index 5cc370e69..11d8199e8 100644
--- a/src/include/kernel/vmmmgr.H
+++ b/src/include/kernel/vmmmgr.H
@@ -192,7 +192,7 @@ class VmmManager
/**
* @brief Allocates a block of virtual memory that extends the VMM
- * space up to 32MEG of Mainstore.
+ * space up to 48MEG of Mainstore.
*/
static int mmExtend( void);
diff --git a/src/include/usr/vmmconst.h b/src/include/usr/vmmconst.h
index dc422a1f9..81c1b6a1a 100644
--- a/src/include/usr/vmmconst.h
+++ b/src/include/usr/vmmconst.h
@@ -71,7 +71,7 @@
#define VMM_ADDR_EXTEND_BLOCK (VMM_ADDR_BASE_BLOCK + VMM_BASE_BLOCK_SIZE)
/** Maximize size of Base Segment Memory after expansion */
-#define VMM_MEMORY_SIZE (32*MEGABYTE)
+#define VMM_MEMORY_SIZE (48*MEGABYTE)
/** Base Segment Extended Memory Block Size */
#define VMM_EXTEND_BLOCK_SIZE (VMM_MEMORY_SIZE-VMM_BASE_BLOCK_SIZE)
@@ -141,7 +141,7 @@ enum BlockPriority
/** Hardwired offsets from HRMOR to HOMER images in real mem */
/** HOMER starts immediately after our HB memory */
-/** <n0p0 HRMOR = 128MB> + <memory size = 32MB> = 160MB */
+/** <n0p0 HRMOR = 128MB> + <memory size = 48MB> = 176 MB */
/** HOMER is 4 MB per proc, 8 procs = 32MB */
/** Each HOMER must start on a 4MB offset to meet OCC requirements */
#define VMM_HOMER_REGION_START_OFFSET (VMM_MEMORY_SIZE)
@@ -151,18 +151,18 @@ enum BlockPriority
#define VMM_HOMER_REGION_SIZE (VMM_HOMER_INSTANCE_SIZE*8)
#define VMM_HOMER_REGION_END_OFFSET \
(VMM_HOMER_REGION_START_OFFSET + VMM_HOMER_REGION_SIZE)
-/** HOMER_REGION_END = 192MB */
+/** HOMER_REGION_END = 208MB */
/** Physical Memory for OCC common space - 8MB total */
/** OCC Common must be on an 8MB offset */
-/** Start = End of Homer, currently 192MB */
+/** Start = End of Homer, currently 208MB */
#define VMM_OCC_COMMON_START_OFFSET VMM_HOMER_REGION_END_OFFSET
#define VMM_OCC_COMMON_SIZE_IN_MB 8
#define VMM_OCC_COMMON_SIZE \
(VMM_OCC_COMMON_SIZE_IN_MB*MEGABYTE)
#define VMM_OCC_COMMON_END_OFFSET \
(VMM_OCC_COMMON_START_OFFSET + VMM_OCC_COMMON_SIZE)
-/** End of Common Area = 200MB */
+/** End of Common Area = 216MB */
/** Total Memory required for HOMERs and OCC Common */
#define VMM_ALL_HOMER_OCC_MEMORY_SIZE \
@@ -171,17 +171,17 @@ enum BlockPriority
/** Memory for attribute data */
#define VMM_ATTR_DATA_START_OFFSET VMM_OCC_COMMON_END_OFFSET
#define VMM_ATTR_DATA_SIZE (1*MEGABYTE)
-/** End of Attr Area = 201MB */
+/** End of Attr Area = 217MB */
/** Chunk of physical memory used for Dump Source Table */
#define DUMP_TEST_MEMORY_ADDR \
- (VMM_ATTR_DATA_START_OFFSET + VMM_ATTR_DATA_SIZE) /* currently 201MB */
+ (VMM_ATTR_DATA_START_OFFSET + VMM_ATTR_DATA_SIZE) /* currently 217MB */
#define DUMP_TEST_MEMORY_SIZE (4*MEGABYTE)
-/** End of Dump Source Table = 205MB */
+/** End of Dump Source Table = 221MB */
/** Memory for hostboot data Table of Contents */
#define VMM_HB_DATA_TOC_START_OFFSET \
- (DUMP_TEST_MEMORY_ADDR + DUMP_TEST_MEMORY_SIZE) /* currently 205MB */
+ (DUMP_TEST_MEMORY_ADDR + DUMP_TEST_MEMORY_SIZE) /* currently 221MB */
/** Variable Attribute overrides and Attributes memory here **/
diff --git a/src/kernel/basesegment.C b/src/kernel/basesegment.C
index 90d61f1b2..2de6973e0 100644
--- a/src/kernel/basesegment.C
+++ b/src/kernel/basesegment.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2016 */
+/* Contributors Listed Below - COPYRIGHT 2011,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -236,16 +236,16 @@ int BaseSegment::mmExtend(void)
/**
* Allocates a block of virtual memory of the given size
- * to extend the VMM to 32MEG in size in mainstore
+ * to extend the VMM to 48MEG in size in mainstore
*/
int BaseSegment::_mmExtend(void)
{
// The base address of the extended memory is 8Mg.. The first x pages is
- // for the SPTE.. The remaining pages from 8MG + SPTE to 32MEG is added to
+ // for the SPTE.. The remaining pages from 8MG + SPTE to 48MEG is added to
// the HEAP..
uint64_t l_vaddr = VMM_ADDR_EXTEND_BLOCK; // 8MEG
- uint64_t l_size = VMM_EXTEND_BLOCK_SIZE; // 32MEG - 8MB (base block)
+ uint64_t l_size = VMM_EXTEND_BLOCK_SIZE; // 48MEG - 8MB (base block)
// Call to allocate a block passing in the requested address of where the
// SPTEs should be created
@@ -283,14 +283,14 @@ int BaseSegment::_mmExtend(void)
PageManager::addMemory(l_vaddr + (spte_pages*PAGESIZE),
l_size/PAGESIZE - spte_pages);
- // Update the physical Memory size to now be 32MEG. by adding the extended
+ // Update the physical Memory size to now be 48MEG. by adding the extended
// block size to the physical mem size.
iv_physMemSize += VMM_EXTEND_BLOCK_SIZE;
// Call to set the Hostboot MemSize and location needed for DUMP.
KernelMemState::setMemScratchReg(KernelMemState::MEM_CONTAINED_MS,
- KernelMemState::MS_32MEG);
+ KernelMemState::MS_48MEG);
return 0;
}
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index bf92fe913..580b30d84 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -898,7 +898,7 @@ namespace Systemcalls
*
* Depending on the syscall parameter, we will either switch from 4MB
* to a cache-contained mode (either full 10MB or reduced 8MB) or will
- * expand into 32MB of space using real system memory.
+ * expand into 48MB of space using real system memory.
* @param[in] t: The task used to extend Memory
*/
diff --git a/src/lib/syscall_mm.C b/src/lib/syscall_mm.C
index f6aaa75de..102075e40 100644
--- a/src/lib/syscall_mm.C
+++ b/src/lib/syscall_mm.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2015 */
+/* Contributors Listed Below - COPYRIGHT 2011,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -95,7 +95,7 @@ uint64_t mm_virt_to_phys( void* i_vaddr )
}
/**
- * System call to extend Memory to 32Meg.
+ * System call to extend Memory to 48Meg.
*/
int mm_extend(MM_EXTEND_SIZE i_size)
{
diff --git a/src/usr/isteps/istep14/call_proc_exit_cache_contained.C b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
index 60cb13285..abbc8fcdd 100644
--- a/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
+++ b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
@@ -74,7 +74,7 @@ void* call_proc_exit_cache_contained (void *io_pArgs)
// figure out what targets we need
// customize any other inputs
// set up loops to go through all targets (if parallel, spin off a task)
- // extend the memory space from 8MEG to 32Meg
+ // extend the memory space from 8MEG to 48Meg
//if mirrored then check that there is going to be memory at that location.
//For sapphire with mirrored location flipped and at zero,
@@ -360,7 +360,7 @@ void* call_proc_exit_cache_contained (void *io_pArgs)
errlCommit( l_errl, HWPF_COMP_ID );
}
- // Call the function to extend VMM to 32MEG
+ // Call the function to extend VMM to 48MEG
int rc = mm_extend();
if (rc!=0)
@@ -372,7 +372,7 @@ void* call_proc_exit_cache_contained (void *io_pArgs)
* @userdata1 rc from mm_extend
* @userdata2 <UNUSED>
*
- * @devdesc Failure extending memory to 32MEG after
+ * @devdesc Failure extending memory to 48MEG after
* exiting cache contained mode.
*/
l_errl = new ERRORLOG::ErrlEntry
OpenPOWER on IntegriCloud