Make size of hypervisor heap a build parameter.
Bug: 117270899
Change-Id: Ie9fd8db6a795f65637035773cfb43cbf1b89b6ec
diff --git a/build/BUILD.gn b/build/BUILD.gn
index 1c753ff..822720d 100644
--- a/build/BUILD.gn
+++ b/build/BUILD.gn
@@ -40,6 +40,7 @@
]
defines = [
+ "HEAP_PAGES=${plat_heap_pages}",
"MAX_CPUS=${plat_max_cpus}",
"MAX_VMS=${plat_max_vms}",
]
diff --git a/build/toolchain/embedded.gni b/build/toolchain/embedded.gni
index 290f163..8971029 100644
--- a/build/toolchain/embedded.gni
+++ b/build/toolchain/embedded.gni
@@ -160,6 +160,8 @@
"\"tool_prefix\" must be defined for ${target_name}.")
assert(defined(invoker.origin_address),
"\"origin_address\" must be defined for ${target_name}.")
+ assert(defined(invoker.heap_pages),
+ "\"heap_pages\" must be defined for ${target_name}.")
assert(defined(invoker.max_cpus),
"\"max_cpus\" must be defined for ${target_name}.")
assert(defined(invoker.max_vms),
@@ -188,6 +190,7 @@
use_platform = true
plat_name = invoker.target_name
plat_arch = invoker.arch
+ plat_heap_pages = invoker.heap_pages
plat_max_cpus = invoker.max_cpus
plat_max_vms = invoker.max_vms
if (defined(invoker.toolchain_args)) {
@@ -205,6 +208,7 @@
use_platform = true
plat_name = invoker.target_name
plat_arch = invoker.arch
+ plat_heap_pages = invoker.heap_pages
plat_max_cpus = invoker.max_cpus
plat_max_vms = invoker.max_vms
if (defined(invoker.toolchain_args)) {
@@ -222,6 +226,8 @@
"\"origin_address\" must be defined for ${target_name}.")
assert(defined(invoker.use_pl011),
"\"use_pl011\" must be defined for ${target_name}.")
+ assert(defined(invoker.heap_pages),
+ "\"heap_pages\" must be defined for ${target_name}.")
assert(defined(invoker.max_cpus),
"\"max_cpus\" must be defined for ${target_name}.")
assert(defined(invoker.max_vms),
@@ -231,6 +237,7 @@
forward_variables_from(invoker,
[
"origin_address",
+ "heap_pages",
"max_cpus",
"max_vms",
])
diff --git a/build/toolchain/host.gni b/build/toolchain/host.gni
index 11bf388..ff6a2d4 100644
--- a/build/toolchain/host.gni
+++ b/build/toolchain/host.gni
@@ -126,6 +126,8 @@
assert(defined(invoker.use_platform),
"\"use_platform\" must be defined for ${target_name}.")
if (invoker.use_platform) {
+ assert(defined(invoker.heap_pages),
+ "\"heap_pages\" must be defined for ${target_name}.")
assert(defined(invoker.max_cpus),
"\"max_cpus\" must be defined for ${target_name}.")
assert(defined(invoker.max_vms),
@@ -148,6 +150,7 @@
# When building for the ${target_name}, use the fake architecture to make things
# testable.
plat_arch = "fake"
+ plat_heap_pages = invoker.heap_pages
plat_max_cpus = invoker.max_cpus
plat_max_vms = invoker.max_vms
}
@@ -170,6 +173,7 @@
# When building for the ${target_name}, use the fake architecture to make things
# testable.
plat_arch = "fake"
+ plat_heap_pages = invoker.heap_pages
plat_max_cpus = invoker.max_cpus
plat_max_vms = invoker.max_vms
}
diff --git a/build/toolchain/platform.gni b/build/toolchain/platform.gni
index 4bcfdc3..e2fa6a4 100644
--- a/build/toolchain/platform.gni
+++ b/build/toolchain/platform.gni
@@ -20,6 +20,9 @@
# The architecture of the platform.
plat_arch = ""
+ # The number of pages to allocate for the hypervisor heap.
+ plat_heap_pages = 0
+
# The maximum number of CPUs available on the platform.
plat_max_cpus = 0
diff --git a/project/reference b/project/reference
index 2d527c2..f1838a8 160000
--- a/project/reference
+++ b/project/reference
@@ -1 +1 @@
-Subproject commit 2d527c2ecd4a071621db77275cb4bb795f3076b5
+Subproject commit f1838a83dd68fa47df061d8c68abaed98c002039
diff --git a/src/main.c b/src/main.c
index 7c02e6d..e800a1a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,7 +31,7 @@
#include "vmapi/hf/call.h"
-char ptable_buf[PAGE_SIZE * 40];
+char ptable_buf[PAGE_SIZE * HEAP_PAGES];
/**
* Blocks the hypervisor.