summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2011-08-22 11:42:20 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2011-08-24 10:55:54 -0500
commit0977c6da14b8fc1623043daa429041863498aeae (patch)
tree23b6676a21fe407340db23cd2dfd75346a88a9a6 /src/kernel
parentfa7d388f1a121d42769ea0289e3c043fe229b4d2 (diff)
downloadtalos-hostboot-0977c6da14b8fc1623043daa429041863498aeae.tar.gz
talos-hostboot-0977c6da14b8fc1623043daa429041863498aeae.zip
Allocate zero'd page in block.
Change-Id: Ieb56aa89190d7efd56c357245b24a979ee7ad79a Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/270 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/block.C9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/kernel/block.C b/src/kernel/block.C
index 9426e54ae..19d2962f8 100644
--- a/src/kernel/block.C
+++ b/src/kernel/block.C
@@ -22,6 +22,7 @@
// IBM_PROLOG_END
#include <limits.h>
#include <assert.h>
+#include <string.h>
#include <sys/msg.h>
@@ -93,6 +94,14 @@ bool Block::handlePageFault(task_t* i_task, uint64_t i_addr)
//Done(waiting for response)
return true;
}
+ else if (pte->allocate_from_zero)
+ {
+ void* l_page = PageManager::allocatePage();
+ memset(l_page, '\0', PAGESIZE);
+
+ pte->setPageAddr(reinterpret_cast<uint64_t>(l_page));
+ pte->setPresent(true);
+ }
else
{
return false; //TODO - Swap kernel base block pages for user pages
OpenPOWER on IntegriCloud