bhyve: Sleep briefly in the VMEXIT_DEBUG handler
As of commit0bda8d3e9f
("vmm: permit some IPIs to be handled by userspace") and commit9cc9abf409
("bhyve: create all vcpus on startup"), we have a misbehaviour where AP vCPU threads spin until they receive a SIPI. In particular, since they are "suspended", they simply call the VMEXIT_DEBUG handler in a loop, but the handler is a no-op by default. This is tricky to fix since the gdb stub isn't aware of whether a given vCPU is supposed to be running. For 13.2's sake, introduce a simple workaround wherein the VMEXIT_DEBUG handler sleeps for a short period. This ensures that host CPU usage remains sane when VMs are starting without penalizing users of VMEXIT_DEBUG too much. Reviewed by: corvink, jhb MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39174
This commit is contained in:
parent
0f5b6f9a04
commit
ef0ac973db
@ -911,6 +911,11 @@ vmexit_debug(struct vmctx *ctx __unused, struct vm_exit *vme __unused,
|
||||
#ifdef BHYVE_SNAPSHOT
|
||||
checkpoint_cpu_resume(*pvcpu);
|
||||
#endif
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user