aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2022-03-09 23:39:08 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2022-03-09 23:39:08 +0000
commit7261f82156fb35d4a5e928769041c5987f700cda (patch)
tree17deaa535aab95b8dc7bab510f548d02bf60af13
parent340a293f9147a37bb71c80a767e37794ca277a28 (diff)
downloadsrc-7261f82156fb35d4a5e928769041c5987f700cda.tar.gz
src-7261f82156fb35d4a5e928769041c5987f700cda.zip
bhyve: Allocate dynamic arrays to hold per-VCPU state.
This avoids hardcoding VM_MAXCPU in userspace. Reviewed by: grehan Differential Revision: https://reviews.freebsd.org/D34491
-rw-r--r--usr.sbin/bhyve/bhyverun.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c
index 0f3c6e60e1d9..72e95c0e4627 100644
--- a/usr.sbin/bhyve/bhyverun.c
+++ b/usr.sbin/bhyve/bhyverun.c
@@ -196,7 +196,7 @@ static cpuset_t cpumask;
static void vm_loop(struct vmctx *ctx, int vcpu, uint64_t rip);
-static struct vm_exit vmexit[VM_MAXCPU];
+static struct vm_exit *vmexit;
struct bhyvestats {
uint64_t vmexit_bogus;
@@ -213,9 +213,9 @@ struct mt_vmm_info {
pthread_t mt_thr;
struct vmctx *mt_ctx;
int mt_vcpu;
-} mt_vmm_info[VM_MAXCPU];
+} *mt_vmm_info;
-static cpuset_t *vcpumap[VM_MAXCPU] = { NULL };
+static cpuset_t **vcpumap;
static void
usage(int code)
@@ -472,6 +472,7 @@ build_vcpumaps(void)
const char *value;
int vcpu;
+ vcpumap = calloc(guest_ncpus, sizeof(*vcpumap));
for (vcpu = 0; vcpu < guest_ncpus; vcpu++) {
snprintf(key, sizeof(key), "vcpu.%d.cpuset", vcpu);
value = get_config_value(key);
@@ -1574,6 +1575,10 @@ main(int argc, char *argv[])
vm_restore_time(ctx);
#endif
+ /* Allocate per-VCPU resources. */
+ vmexit = calloc(guest_ncpus, sizeof(*vmexit));
+ mt_vmm_info = calloc(guest_ncpus, sizeof(*mt_vmm_info));
+
/*
* Add CPU 0
*/