mirror of
https://git.freebsd.org/ports.git
synced 2025-06-30 00:50:29 -04:00
- Old VirtualBox OSE 5.2.44 preserved as "-legacy" versions of the ports (repocopied) - Add back extra patch removed in r528258, actually required to build DEBUG kmod - Correctly define WITH_DEBUG when enabling the DEBUG option, so binaries are not stripped Please note that this new version supports only amd64 CPUs. If you need to use older hardware please install the legacy ports. Note that moving VM snapshots across major updates is unsupported, it's strongly suggested to properly shutdown VMs before upgrading, please check UPDATING for further details. This update is the result of work from many people, and thanks to all who gave feedback and tested things. Patch based on work from: Mario Lobo <lobo@bsd.com.br> and jkim. PR: 234878 Submitted by: kunda <chitty_cloud@me.com> Approved by: vbox (implicit) Reviewed by: decke Tested by: jwb, martin ilavsky <ilavsky.martin@gmail.com>, Mario Lobo <lobo@bsd.com.br> Relnotes: https://www.virtualbox.org/wiki/Changelog-6.1 Differential Revision: https://reviews.freebsd.org/D28871
20 lines
1,004 B
C
20 lines
1,004 B
C
Without this patch any waits for periods shorter than a single tick return
|
|
immediately leading to a lot of unnecessary spinning. For example, I observe that
|
|
my guest's idle loop does a lot of sleeps with periods slightly shorter than 1 ms
|
|
(1/hz), e.g. 900us. All that waiting turns into pure spinning and VirtualBox eats
|
|
100% of a core.
|
|
The patch improves the situation significantly. Also, it (approximately) follows
|
|
what tvtohz does.
|
|
|
|
Submitted by: Andriy Gapon <avg@FreeBSD.org>
|
|
--- src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h.orig 2020-05-13 19:44:32 UTC
|
|
+++ src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h
|
|
@@ -82,6 +82,8 @@ DECLINLINE(uint32_t) rtR0SemBsdWaitUpdateTimeout(PRTR0
|
|
uint64_t cTicks = ASMMultU64ByU32DivByU32(uTimeout, hz, UINT32_C(1000000000));
|
|
if (cTicks >= INT_MAX)
|
|
return RTSEMWAIT_FLAGS_INDEFINITE;
|
|
+ else if (cTicks == 0 && uTimeout > 0)
|
|
+ pWait->iTimeout = 1;
|
|
else
|
|
pWait->iTimeout = (int)cTicks;
|
|
#endif
|