diff options
author | Missy Connell <missyc@us.ibm.com> | 2012-09-10 16:05:01 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-10-09 17:10:32 -0500 |
commit | 1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39 (patch) | |
tree | c266815232142e67f15a61ffcbdf09407737f259 /src/include/kernel/vmmmgr.H | |
parent | fb1836fd7b1b8839815595db08ae740ec7b86347 (diff) | |
download | talos-hostboot-1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39.tar.gz talos-hostboot-1bf8c6b8376efacd03e3ec62d5ded5b2be4bff39.zip |
Extend VMM to 32M
Add mmLinearMap to create block at a specified phys addr.
Added iv_MaptoPhy in the block to indicate we are physically mapped
block and to not apply the HRMOR.
Change-Id: I75ddb19b82ae9a2035ff873edff8a34a33c74639
RTC:43401
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1846
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/kernel/vmmmgr.H')
-rw-r--r-- | src/include/kernel/vmmmgr.H | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/include/kernel/vmmmgr.H b/src/include/kernel/vmmmgr.H index 0c11ffeb8..7b8bd07bc 100644 --- a/src/include/kernel/vmmmgr.H +++ b/src/include/kernel/vmmmgr.H @@ -185,6 +185,22 @@ class VmmManager */ static uint64_t findKernelAddress(uint64_t i_vaddr); + /** + * @brief Allocates a block of virtual memory that extends the VMM + * space upto 32MEG of Mainstore. + */ + static int mmExtend( void); + + /** @fn mm_linear_map() + * @brief Allocates a block of memory of the given size + * to at a specified address (direct pa to va mapping) + * @param[in] i_paddr - physical address of the location for the block + * @param[in] i_size - size of the block requested + * + * @return int - 0 for successful add, non-zero otherwise + */ + static int mmLinearMap(void *i_paddr, uint64_t i_size); + protected: VmmManager(); ~VmmManager() {}; @@ -223,11 +239,17 @@ class VmmManager int _mmRemovePages(VmmManager::PAGE_REMOVAL_OPS i_op,void* i_vaddr, uint64_t i_size,task_t* i_task); + /** See mmExtend */ + int _mmExtend( void ); + /** See devMap */ void* _devMap(void* ra, uint64_t i_devDataSize); /** See devUnmap */ int _devUnmap(void* ea); + /** See mmLinearMap */ + int _mmLinearMap(void*, uint64_t); + public: friend class Block; friend class StackSegment; |