git: 7261f82156fb - main - bhyve: Allocate dynamic arrays to hold per-VCPU state.

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 09 Mar 2022 23:57:33 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=7261f82156fb35d4a5e928769041c5987f700cda

commit 7261f82156fb35d4a5e928769041c5987f700cda
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-03-09 23:39:08 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-03-09 23:39:08 +0000

    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
---
 usr.sbin/bhyve/bhyverun.c | 11 ++++++++---
 1 file 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
 	 */