git: 2e2b8afa52da - main - bhyve: Sleep for a short period after VM_EXITCODE_DEBUG exits

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Wed, 31 Jul 2024 23:44:40 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=2e2b8afa52da6e2cd08482bcd512e016aa264ddb

commit 2e2b8afa52da6e2cd08482bcd512e016aa264ddb
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-07-31 22:41:28 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-07-31 22:41:28 +0000

    bhyve: Sleep for a short period after VM_EXITCODE_DEBUG exits
    
    As on amd64, APs will repeatedly exit until they are brought online, so this
    hack helps avoid burning CPU time during guest bootup.
    
    Reviewed by:    jhb
    MFC after:      2 weeks
    Sponsored by:   Innovate UK
    Differential Revision:  https://reviews.freebsd.org/D46195
---
 usr.sbin/bhyve/aarch64/vmexit.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c
index a47df27e54fc..7f0cfe672c55 100644
--- a/usr.sbin/bhyve/aarch64/vmexit.c
+++ b/usr.sbin/bhyve/aarch64/vmexit.c
@@ -43,6 +43,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 
 #include <vmmapi.h>
 
@@ -132,6 +133,11 @@ vmexit_debug(struct vmctx *ctx __unused, struct vcpu *vcpu,
     struct vm_run *vmrun __unused)
 {
 	gdb_cpu_suspend(vcpu);
+	/*
+	 * XXX-MJ sleep for a short period to avoid chewing up the CPU in the
+	 * window between activation of the vCPU thread and the STARTUP IPI.
+	 */
+	usleep(1000);
 	return (VMEXIT_CONTINUE);
 }