Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] virtualbox-ose: update to 6.1.34.
@ 2022-07-16 13:05 sgn
  2022-07-16 16:14 ` [PR PATCH] [Updated] " sgn
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: sgn @ 2022-07-16 13:05 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1254 bytes --]

There is a new pull request by sgn against master on the void-packages repository

https://github.com/sgn/void-packages virtual-ose
https://github.com/void-linux/void-packages/pull/38096

virtualbox-ose: update to 6.1.34.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/38096.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-virtual-ose-38096.patch --]
[-- Type: text/x-diff, Size: 25502 bytes --]

From 4b8e205e92518ed55cf2e8b0302f1f7f04c15e6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Sat, 16 Jul 2022 20:03:42 +0700
Subject: [PATCH] virtualbox-ose: update to 6.1.34.

---
 .../patches/005-gsoap-build.patch             |   6 +-
 .../patches/008-no-vboxvideo.patch            |   6 +-
 .../virtualbox-ose/patches/013-Makefile.patch |   4 +-
 .../patches/016-disable-cloud.patch           |   1 -
 .../patches/017-libvdeplug-soname.patch       |   3 -
 .../patches/vbox-linux-5.18.patch             | 254 +++++++++++++
 .../patches/vbox-linux-5.19.patch             | 356 ++++++++++++++++++
 srcpkgs/virtualbox-ose/template               |   4 +-
 8 files changed, 619 insertions(+), 15 deletions(-)
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch

diff --git a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
index 17022f01b920..a2855354f5e2 100644
--- a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
+++ b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Main/webservice/Makefile.kmk	2016-08-16 22:00:21.000000000 +0200
-+++ b/src/VBox/Main/webservice/Makefile.kmk	2016-08-18 10:05:45.548857031 +0200
-@@ -724,7 +724,7 @@
+--- a/src/VBox/Main/webservice/Makefile.kmk
++++ b/src/VBox/Main/webservice/Makefile.kmk
+@@ -771,7 +771,7 @@ $(VBOXWEB_OUT_DIR)/gsoap_generate_all_ts
  		$(RECOMPILE_ON_MAKEFILE_CURRENT) | $$(dir $$@)
  	$(call MSG_GENERATE,,lots of files,$(GSOAPH_RELEVANT))
  	$(RM) -f $@
diff --git a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
index 967c9d47362a..6f646ac02eeb 100644
--- a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
+++ b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:23.184986182 +0100
-+++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:39.879176964 +0100
-@@ -376,7 +376,7 @@ vboxvideo_drv_118_SOURCES := $(vboxvideo
+--- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
++++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
+@@ -397,7 +397,7 @@ vboxvideo_drv_118_LIBS += $(vboxvideo_dr
  
  ifdef VBOX_USE_SYSTEM_XORG_HEADERS
   # Build using local X.Org headers.  We assume X.Org Server 1.7 or later.
diff --git a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
index 30b44c7259fd..d1b5a8dcf874 100644
--- a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
+++ b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
@@ -1,5 +1,3 @@
-diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
-index 18466b48..7c7de4e5 100644
 --- a/src/VBox/HostDrivers/linux/Makefile
 +++ b/src/VBox/HostDrivers/linux/Makefile
 @@ -23,25 +23,25 @@
@@ -36,7 +34,7 @@ index 18466b48..7c7de4e5 100644
  
  KBUILD_VERBOSE ?=
  KERN_VER ?= $(shell uname -r)
-@@ -146,4 +146,4 @@ load: unload
+@@ -167,4 +167,4 @@ load: unload
  		fi; \
  	done
  
diff --git a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
index 0d159d3f0f09..e92e52306d1d 100644
--- a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
+++ b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
@@ -9,4 +9,3 @@
  ## @}
  
  
-
diff --git a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
index 1c1bcf96dcf1..a3c1e34a057e 100644
--- a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
+++ b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
@@ -2,8 +2,6 @@ Description: Revert http://www.virtualbox.org/changeset/36310
  The libvdeplug.so symlink is only shipped in the -dev package.
 Author: Felix Geyer <fgeyer@debian.org>
 
-Index: virtualbox/include/VBox/VDEPlugSymDefs.h
-===================================================================
 --- a/include/VBox/VDEPlugSymDefs.h
 +++ b/include/VBox/VDEPlugSymDefs.h
 @@ -1,5 +1,5 @@
@@ -22,4 +20,3 @@ Index: virtualbox/include/VBox/VDEPlugSymDefs.h
  #define RT_RUNTIME_LOADER_LIB_NAME VBOX_LIB_VDE_PLUG_NAME
  
  /** The name of the loader function */
-
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
new file mode 100644
index 000000000000..5b1ed1a266cd
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
@@ -0,0 +1,254 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/include/VBox/sup.h
++++ b/include/VBox/sup.h
+@@ -2142,6 +2142,26 @@ RT_IPRT_FORMAT_ATTR(1, 2) SUPR0Printf(co
+  */
+ SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void);
+ 
++/**
++ * Notification from R0 VMM prior to loading the guest-FPU register state.
++ *
++ * @returns Whether the host-FPU register state has been saved by the host kernel.
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook);
++
++/**
++ * Notification from R0 VMM prior to saving the guest-FPU register state (and
++ * potentially restoring the host-FPU register state) in ring-0.
++ *
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook);
++
+ /** @copydoc RTLogGetDefaultInstanceEx
+  * @remarks To allow overriding RTLogGetDefaultInstanceEx locally. */
+ SUPR0DECL(struct RTLOGGER *) SUPR0GetDefaultLogInstanceEx(uint32_t fFlagsAndGroup);
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3823,7 +3823,9 @@ struct address_space_operations vbsf_reg
+     .readpage       = vbsf_readpage,
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+-#if RTLNX_VER_MIN(2,5,12)
++#if RTLNX_VER_MIN(5,18,0)
++    .dirty_folio = filemap_dirty_folio,
++#elif RTLNX_VER_MIN(2,5,12)
+     .set_page_dirty = __set_page_dirty_buffers,
+ #endif
+ #if RTLNX_VER_MIN(5,14,0)
+--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp
++++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp
+@@ -98,6 +98,18 @@
+ # endif
+ #endif
+ 
++#if defined(RT_OS_LINUX) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
++/* In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks
++ * before triggering __underlying_memcpy() call. We do not pass these checks here,
++ * so bypass them for now.  */
++# if RTLNX_VER_MIN(5,18,0)
++#  define SUPDRV_MEMCPY __underlying_memcpy
++# else
++# define SUPDRV_MEMCPY  memcpy
++# endif
++#else
++# define SUPDRV_MEMCPY  memcpy
++#endif
+ 
+ /*
+  * Logging assignments:
+@@ -266,6 +278,8 @@ static SUPFUNC g_aFunctions[] =
+     SUPEXP_STK_BACK(    2,  SUPR0ContFree),
+     SUPEXP_STK_BACK(    2,  SUPR0ChangeCR4),
+     SUPEXP_STK_BACK(    1,  SUPR0EnableVTx),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuBegin),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuEnd),
+     SUPEXP_STK_BACK(    0,  SUPR0SuspendVTxOnCpu),
+     SUPEXP_STK_BACK(    1,  SUPR0ResumeVTxOnCpu),
+     SUPEXP_STK_OKAY(    1,  SUPR0GetCurrentGdtRw),
+@@ -1742,7 +1756,7 @@ static int supdrvIOCtlInnerUnrestricted(
+ 
+             /* execute */
+             pReq->u.Out.cFunctions = RT_ELEMENTS(g_aFunctions);
+-            memcpy(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
++            SUPDRV_MEMCPY(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
+             pReq->Hdr.rc = VINF_SUCCESS;
+             return 0;
+         }
+--- a/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
++++ b/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
+@@ -2002,6 +2002,18 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+ /*
+  *
+  * org_virtualbox_SupDrv
+--- a/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
++++ b/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+@@ -640,3 +640,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -1454,6 +1454,31 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    kernel_fpu_begin();
++    /* if (fCtxHook) */
++        preempt_enable();  /* HACK ALERT! undo the implicit preempt_disable() in kernel_fpu_begin(). */
++    return true;
++#else
++    return false;
++#endif
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    /* if (fCtxHook) */
++        preempt_disable();  /* HACK ALERT! undo the implicit preempt_enable() in SUPR0FpuBegin(). */
++    kernel_fpu_end();
++#endif
++}
++
++
+ int VBOXCALL    supdrvOSGetCurrentGdtRw(RTHCUINTPTR *pGdtRw)
+ {
+ #if RTLNX_VER_MIN(4,12,0)
+--- a/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
++++ b/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
+@@ -541,3 +541,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
++++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+@@ -1309,3 +1309,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
++++ b/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
+@@ -2704,6 +2704,19 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
++
+ SUPR0DECL(int) SUPR0IoCtlSetupForHandle(PSUPDRVSESSION pSession, intptr_t hHandle, uint32_t fFlags, PSUPR0IOCTLCTX *ppCtx)
+ {
+     /*
+--- a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
++++ b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+@@ -2311,7 +2311,13 @@ int  vboxNetFltPortOsXmit(PVBOXNETFLTINS
+                 vboxNetFltDumpPacket(pSG, true, "host", (fDst & INTNETTRUNKDIR_WIRE) ? 0 : 1);
+                 Log6(("vboxNetFltPortOsXmit: pBuf->cb dump:\n%.*Rhxd\n", sizeof(pBuf->cb), pBuf->cb));
+                 Log6(("vboxNetFltPortOsXmit: netif_rx_ni(%p)\n", pBuf));
++#if RTLNX_VER_MIN(5,18,0)
++                local_bh_disable();
++                err = netif_rx(pBuf);
++                local_bh_enable();
++#else
+                 err = netif_rx_ni(pBuf);
++#endif
+                 if (err)
+                     rc = RTErrConvertFromErrno(err);
+             }
+--- a/src/VBox/VMM/VMMR0/CPUMR0.cpp
++++ b/src/VBox/VMM/VMMR0/CPUMR0.cpp
+@@ -440,6 +440,9 @@ VMMR0_INT_DECL(int) CPUMR0LoadGuestFPU(P
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST));
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_SYNC_FPU_STATE));
+ 
++    /* Notify the support driver prior to loading the guest-FPU register state. */
++    SUPR0FpuBegin(false /* unused */);
++
+     if (!pVM->cpum.s.HostFeatures.fLeakyFxSR)
+     {
+         Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE));
+@@ -484,6 +487,9 @@ VMMR0_INT_DECL(bool) CPUMR0FpuStateMaybe
+     Assert(ASMGetCR4() & X86_CR4_OSFXSR);
+     if (pVCpu->cpum.s.fUseFlags & (CPUM_USED_FPU_GUEST | CPUM_USED_FPU_HOST))
+     {
++        /* Notify the support driver prior to loading the host-FPU register state. */
++        SUPR0FpuEnd(false /* unused */);
++
+         fSavedGuest = RT_BOOL(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST);
+         if (!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE))
+             cpumR0SaveGuestRestoreHostFPUState(&pVCpu->cpum.s);
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
new file mode 100644
index 000000000000..b406fa335808
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
@@ -0,0 +1,356 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/include/VBox/sup.h
++++ b/include/VBox/sup.h
+@@ -2162,6 +2162,26 @@ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxH
+  */
+ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook);
+ 
++/**
++ * Notification from R0 VMM prior to loading the guest-FPU register state.
++ *
++ * @returns Whether the host-FPU register state has been saved by the host kernel.
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook);
++
++/**
++ * Notification from R0 VMM after saving the guest-FPU register state (and
++ * potentially restoring the host-FPU register state) in ring-0.
++ *
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook);
++
+ /** @copydoc RTLogGetDefaultInstanceEx
+  * @remarks To allow overriding RTLogGetDefaultInstanceEx locally. */
+ SUPR0DECL(struct RTLOGGER *) SUPR0GetDefaultLogInstanceEx(uint32_t fFlagsAndGroup);
+--- a/src/VBox/Additions/linux/drm/vbox_fb.c
++++ b/src/VBox/Additions/linux/drm/vbox_fb.c
+@@ -362,6 +362,9 @@ static int vboxfb_create(struct drm_fb_h
+ 	info->screen_size = size;
+ 
+ #ifdef CONFIG_FB_DEFERRED_IO
++# if RTLNX_VER_MIN(5,19,0)
++	info->fix.smem_len = info->screen_size;
++# endif
+ 	info->fbdefio = &vbox_defio;
+ 	fb_deferred_io_init(info);
+ #endif
+--- a/src/VBox/Additions/linux/drm/vbox_ttm.c
++++ b/src/VBox/Additions/linux/drm/vbox_ttm.c
+@@ -320,8 +320,10 @@ static struct ttm_tt *vbox_ttm_tt_create
+ 	if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
+ #elif RTLNX_VER_MAX(5,11,0) && !RTLNX_RHEL_RANGE(8,5, 8,99)
+ 	if (ttm_tt_init(tt, bo, page_flags)) {
+-#else
++#elif RTLNX_VER_MAX(5,19,0)
+ 	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined)) {
++#else
++	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined, 0)) {
+ #endif
+ 		kfree(tt);
+ 		return NULL;
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3581,8 +3581,14 @@ struct inode_operations vbsf_reg_iops =
+  * Needed for mmap and reads+writes when the file is mmapped in a
+  * shared+writeable fashion.
+  */
++#if RTLNX_VER_MIN(5,19,0)
++static int vbsf_read_folio(struct file *file, struct folio *folio)
++{
++    struct page *page = &folio->page;
++#else
+ static int vbsf_readpage(struct file *file, struct page *page)
+ {
++#endif
+     struct inode *inode = VBSF_GET_F_DENTRY(file)->d_inode;
+     int           err;
+ 
+@@ -3728,8 +3734,7 @@ static int vbsf_writepage(struct page *p
+ /**
+  * Called when writing thru the page cache (which we shouldn't be doing).
+  */
+-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+-                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++static inline void vbsf_write_begin_warn(loff_t pos, unsigned len, unsigned flags)
+ {
+     /** @todo r=bird: We shouldn't ever get here, should we?  Because we don't use
+      *        the page cache for any writes AFAIK.  We could just as well use
+@@ -3745,8 +3750,24 @@ int vbsf_write_begin(struct file *file,
+         WARN_ON(1);
+ # endif
+     }
++}
++
++# if RTLNX_VER_MIN(5,19,0)
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, 0);
++    return simple_write_begin(file, mapping, pos, len, pagep, fsdata);
++}
++# else
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, flags);
+     return simple_write_begin(file, mapping, pos, len, flags, pagep, fsdata);
+ }
++# endif
++
+ #endif /* KERNEL_VERSION >= 2.6.24 */
+ 
+ #if RTLNX_VER_MIN(5,14,0)
+@@ -3820,7 +3841,11 @@ static int vbsf_direct_IO(int rw, struct
+  * @todo the FsPerf touch/flush (mmap) test fails on 4.4.0 (ubuntu 16.04 lts).
+  */
+ struct address_space_operations vbsf_reg_aops = {
++#if RTLNX_VER_MIN(5,19,0)
++    .read_folio     = vbsf_read_folio,
++#else
+     .readpage       = vbsf_readpage,
++#endif
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+ #if RTLNX_VER_MIN(5,18,0)
+@@ -3842,4 +3867,3 @@ struct address_space_operations vbsf_reg
+     .direct_IO      = vbsf_direct_IO,
+ #endif
+ };
+-
+--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp
++++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp
+@@ -125,6 +125,18 @@
+  * instantiation in log-vbox.c(pp).
+  */
+ 
++#if defined(RT_OS_LINUX) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
++/* In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks
++ * before triggering __underlying_memcpy() call. We do not pass these checks here,
++ * so bypass them for now.  */
++# if RTLNX_VER_MIN(5,18,0)
++#  define SUPDRV_MEMCPY __underlying_memcpy
++# else
++# define SUPDRV_MEMCPY  memcpy
++# endif
++#else
++# define SUPDRV_MEMCPY  memcpy
++#endif
+ 
+ /*********************************************************************************************************************************
+ *   Defined Constants And Macros                                                                                                 *
+--- a/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
++++ b/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
+@@ -2109,6 +2109,18 @@ bool org_virtualbox_SupDrv::terminate(IO
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+ /*
+  *
+  * org_virtualbox_SupDrvClient
+--- a/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
++++ b/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+@@ -653,3 +653,16 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHoo
+     RT_NOREF(fCtxHook);
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -40,6 +40,7 @@
+ #include <iprt/semaphore.h>
+ #include <iprt/initterm.h>
+ #include <iprt/process.h>
++#include <iprt/thread.h>
+ #include <VBox/err.h>
+ #include <iprt/mem.h>
+ #include <VBox/log.h>
+@@ -1477,6 +1478,61 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHoo
+     kernel_fpu_end();
+ #endif
+ }
++
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(4,19,0) /* Going back to 4.19.0 for better coverage, we
++                             probably only need 5.17.7+ in the end. */
++    /*
++     * HACK ALERT!
++     *
++     * We'd like to use the old __kernel_fpu_begin() API which was removed in
++     * early 2019, because we typically run with preemption enabled and have an
++     * preemption hook installed which will call kernel_fpu_end() in case we're
++     * scheduled out after getting in here.  The preemption hook is almost
++     * useless if we run with preemption disabled.
++     *
++     * For the case where the kernel does not have preemption hooks, we get here
++     * with preemption already disabled and one more count doesn't make any
++     * difference.
++     *
++     * So, after the kernel_fpu_begin() call we undo the implicit preempt_disable()
++     * call it does, so the preemption hook can do its work and the VBox user has
++     * a more responsive system.
++     *
++     * See @bugref{10209#c12} and onwards for more details.
++     */
++    Assert(fCtxHook || !RTThreadPreemptIsEnabled(NIL_RTTHREAD));
++    kernel_fpu_begin();
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_enable();
++    return false; /** @todo Not sure if we have license to use any extended state, or
++                   *        if we're limited to the SSE & x87 FPU. If it's the former,
++                   *        we should return @a true and the caller can skip
++                   *        saving+restoring the host state and save some time. */
++#else
++    return false;
++#endif
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(4,19,0)
++    /* HACK ALERT! See SUPR0FpuBegin for an explanation of this. */
++    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_disable();
++    kernel_fpu_end();
++#endif
++}
+ 
+ 
+ int VBOXCALL    supdrvOSGetCurrentGdtRw(RTHCUINTPTR *pGdtRw)
+--- a/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
++++ b/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
+@@ -554,3 +554,16 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHoo
+     RT_NOREF(fCtxHook);
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
++++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+@@ -1322,3 +1322,16 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHoo
+     RT_NOREF(fCtxHook);
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
++++ b/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
+@@ -2717,6 +2717,19 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHoo
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
++
+ SUPR0DECL(int) SUPR0IoCtlSetupForHandle(PSUPDRVSESSION pSession, intptr_t hHandle, uint32_t fFlags, PSUPR0IOCTLCTX *ppCtx)
+ {
+     /*
+--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+@@ -184,6 +184,11 @@
+ # include <asm/tlbflush.h>
+ #endif
+ 
++/* for kernel_fpu_begin / kernel_fpu_end() */
++#if RTLNX_VER_MIN(4,2,0)
++# include <asm/fpu/api.h>
++#endif
++
+ #if RTLNX_VER_MIN(3,7,0)
+ # include <asm/smap.h>
+ #else
+--- a/src/VBox/VMM/VMMR0/CPUMR0.cpp
++++ b/src/VBox/VMM/VMMR0/CPUMR0.cpp
+@@ -443,6 +443,11 @@ VMMR0_INT_DECL(int) CPUMR0LoadGuestFPU(P
+     /* Notify the support driver prior to loading the guest-FPU register state. */
+     SUPR0FpuBegin(false /* unused */);
+ 
++    /* Notify the support driver prior to loading the guest-FPU register state. */
++    SUPR0FpuBegin(VMMR0ThreadCtxHookIsEnabled(pVCpu));
++    /** @todo use return value? Currently skipping that to be on the safe side
++     *        wrt. extended state (linux). */
++
+     if (!pVM->cpum.s.HostFeatures.fLeakyFxSR)
+     {
+         Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE));
+@@ -510,6 +515,9 @@ VMMR0_INT_DECL(bool) CPUMR0FpuStateMaybe
+                 cpumR0SaveGuestRestoreHostFPUState(&pVCpu->cpum.s);
+             pVCpu->cpum.s.fUseFlags &= ~CPUM_USED_MANUAL_XMM_RESTORE;
+         }
++
++        /* Notify the support driver after loading the host-FPU register state. */
++        SUPR0FpuEnd(VMMR0ThreadCtxHookIsEnabled(pVCpu));
+     }
+     else
+         fSavedGuest = false;
diff --git a/srcpkgs/virtualbox-ose/template b/srcpkgs/virtualbox-ose/template
index d9f2f9825d2d..4f9976409ade 100644
--- a/srcpkgs/virtualbox-ose/template
+++ b/srcpkgs/virtualbox-ose/template
@@ -1,6 +1,6 @@
 # Template file for 'virtualbox-ose'
 pkgname=virtualbox-ose
-version=6.1.32
+version=6.1.34
 revision=1
 wrksrc="VirtualBox-${version}"
 short_desc="General-purpose full virtualizer for x86 hardware"
@@ -9,7 +9,7 @@ license="GPL-2.0-only, CDDL-1.0"
 homepage="https://www.virtualbox.org"
 changelog="https://www.virtualbox.org/wiki/Changelog"
 distfiles="http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"
-checksum=5d11384200b4e943ad0056d2cf75980ae4bee852c89650e2914e1b34eedc2d2c
+checksum=9c3ce1829432e5b8374f950698587038f45fb0492147dc200e59edb9bb75eb49
 
 nopie=yes
 lib32disabled=yes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Updated] virtualbox-ose: update to 6.1.34.
  2022-07-16 13:05 [PR PATCH] virtualbox-ose: update to 6.1.34 sgn
@ 2022-07-16 16:14 ` sgn
  2022-07-17  2:03 ` sgn
  2022-07-17  2:03 ` [PR PATCH] [Merged]: " sgn
  2 siblings, 0 replies; 4+ messages in thread
From: sgn @ 2022-07-16 16:14 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1259 bytes --]

There is an updated pull request by sgn against master on the void-packages repository

https://github.com/sgn/void-packages virtual-ose
https://github.com/void-linux/void-packages/pull/38096

virtualbox-ose: update to 6.1.34.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/38096.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-virtual-ose-38096.patch --]
[-- Type: text/x-diff, Size: 20567 bytes --]

From 363cd86484fc7e7b759d32ee317a0416e06ec40a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Sat, 16 Jul 2022 20:03:42 +0700
Subject: [PATCH] virtualbox-ose: update to 6.1.34.

---
 .../patches/005-gsoap-build.patch             |   6 +-
 .../patches/008-no-vboxvideo.patch            |   6 +-
 .../virtualbox-ose/patches/013-Makefile.patch |   4 +-
 .../patches/016-disable-cloud.patch           |   1 -
 .../patches/017-libvdeplug-soname.patch       |   3 -
 .../patches/vbox-linux-5.18.patch             | 254 ++++++++++++++++++
 .../patches/vbox-linux-5.19.patch             | 179 ++++++++++++
 srcpkgs/virtualbox-ose/template               |   4 +-
 8 files changed, 442 insertions(+), 15 deletions(-)
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch

diff --git a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
index 17022f01b920..a2855354f5e2 100644
--- a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
+++ b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Main/webservice/Makefile.kmk	2016-08-16 22:00:21.000000000 +0200
-+++ b/src/VBox/Main/webservice/Makefile.kmk	2016-08-18 10:05:45.548857031 +0200
-@@ -724,7 +724,7 @@
+--- a/src/VBox/Main/webservice/Makefile.kmk
++++ b/src/VBox/Main/webservice/Makefile.kmk
+@@ -771,7 +771,7 @@ $(VBOXWEB_OUT_DIR)/gsoap_generate_all_ts
  		$(RECOMPILE_ON_MAKEFILE_CURRENT) | $$(dir $$@)
  	$(call MSG_GENERATE,,lots of files,$(GSOAPH_RELEVANT))
  	$(RM) -f $@
diff --git a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
index 967c9d47362a..6f646ac02eeb 100644
--- a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
+++ b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:23.184986182 +0100
-+++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:39.879176964 +0100
-@@ -376,7 +376,7 @@ vboxvideo_drv_118_SOURCES := $(vboxvideo
+--- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
++++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
+@@ -397,7 +397,7 @@ vboxvideo_drv_118_LIBS += $(vboxvideo_dr
  
  ifdef VBOX_USE_SYSTEM_XORG_HEADERS
   # Build using local X.Org headers.  We assume X.Org Server 1.7 or later.
diff --git a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
index 30b44c7259fd..d1b5a8dcf874 100644
--- a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
+++ b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
@@ -1,5 +1,3 @@
-diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
-index 18466b48..7c7de4e5 100644
 --- a/src/VBox/HostDrivers/linux/Makefile
 +++ b/src/VBox/HostDrivers/linux/Makefile
 @@ -23,25 +23,25 @@
@@ -36,7 +34,7 @@ index 18466b48..7c7de4e5 100644
  
  KBUILD_VERBOSE ?=
  KERN_VER ?= $(shell uname -r)
-@@ -146,4 +146,4 @@ load: unload
+@@ -167,4 +167,4 @@ load: unload
  		fi; \
  	done
  
diff --git a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
index 0d159d3f0f09..e92e52306d1d 100644
--- a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
+++ b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
@@ -9,4 +9,3 @@
  ## @}
  
  
-
diff --git a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
index 1c1bcf96dcf1..a3c1e34a057e 100644
--- a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
+++ b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
@@ -2,8 +2,6 @@ Description: Revert http://www.virtualbox.org/changeset/36310
  The libvdeplug.so symlink is only shipped in the -dev package.
 Author: Felix Geyer <fgeyer@debian.org>
 
-Index: virtualbox/include/VBox/VDEPlugSymDefs.h
-===================================================================
 --- a/include/VBox/VDEPlugSymDefs.h
 +++ b/include/VBox/VDEPlugSymDefs.h
 @@ -1,5 +1,5 @@
@@ -22,4 +20,3 @@ Index: virtualbox/include/VBox/VDEPlugSymDefs.h
  #define RT_RUNTIME_LOADER_LIB_NAME VBOX_LIB_VDE_PLUG_NAME
  
  /** The name of the loader function */
-
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
new file mode 100644
index 000000000000..5b1ed1a266cd
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
@@ -0,0 +1,254 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/include/VBox/sup.h
++++ b/include/VBox/sup.h
+@@ -2142,6 +2142,26 @@ RT_IPRT_FORMAT_ATTR(1, 2) SUPR0Printf(co
+  */
+ SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void);
+ 
++/**
++ * Notification from R0 VMM prior to loading the guest-FPU register state.
++ *
++ * @returns Whether the host-FPU register state has been saved by the host kernel.
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook);
++
++/**
++ * Notification from R0 VMM prior to saving the guest-FPU register state (and
++ * potentially restoring the host-FPU register state) in ring-0.
++ *
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook);
++
+ /** @copydoc RTLogGetDefaultInstanceEx
+  * @remarks To allow overriding RTLogGetDefaultInstanceEx locally. */
+ SUPR0DECL(struct RTLOGGER *) SUPR0GetDefaultLogInstanceEx(uint32_t fFlagsAndGroup);
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3823,7 +3823,9 @@ struct address_space_operations vbsf_reg
+     .readpage       = vbsf_readpage,
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+-#if RTLNX_VER_MIN(2,5,12)
++#if RTLNX_VER_MIN(5,18,0)
++    .dirty_folio = filemap_dirty_folio,
++#elif RTLNX_VER_MIN(2,5,12)
+     .set_page_dirty = __set_page_dirty_buffers,
+ #endif
+ #if RTLNX_VER_MIN(5,14,0)
+--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp
++++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp
+@@ -98,6 +98,18 @@
+ # endif
+ #endif
+ 
++#if defined(RT_OS_LINUX) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
++/* In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks
++ * before triggering __underlying_memcpy() call. We do not pass these checks here,
++ * so bypass them for now.  */
++# if RTLNX_VER_MIN(5,18,0)
++#  define SUPDRV_MEMCPY __underlying_memcpy
++# else
++# define SUPDRV_MEMCPY  memcpy
++# endif
++#else
++# define SUPDRV_MEMCPY  memcpy
++#endif
+ 
+ /*
+  * Logging assignments:
+@@ -266,6 +278,8 @@ static SUPFUNC g_aFunctions[] =
+     SUPEXP_STK_BACK(    2,  SUPR0ContFree),
+     SUPEXP_STK_BACK(    2,  SUPR0ChangeCR4),
+     SUPEXP_STK_BACK(    1,  SUPR0EnableVTx),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuBegin),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuEnd),
+     SUPEXP_STK_BACK(    0,  SUPR0SuspendVTxOnCpu),
+     SUPEXP_STK_BACK(    1,  SUPR0ResumeVTxOnCpu),
+     SUPEXP_STK_OKAY(    1,  SUPR0GetCurrentGdtRw),
+@@ -1742,7 +1756,7 @@ static int supdrvIOCtlInnerUnrestricted(
+ 
+             /* execute */
+             pReq->u.Out.cFunctions = RT_ELEMENTS(g_aFunctions);
+-            memcpy(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
++            SUPDRV_MEMCPY(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
+             pReq->Hdr.rc = VINF_SUCCESS;
+             return 0;
+         }
+--- a/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
++++ b/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
+@@ -2002,6 +2002,18 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+ /*
+  *
+  * org_virtualbox_SupDrv
+--- a/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
++++ b/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+@@ -640,3 +640,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -1454,6 +1454,31 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    kernel_fpu_begin();
++    /* if (fCtxHook) */
++        preempt_enable();  /* HACK ALERT! undo the implicit preempt_disable() in kernel_fpu_begin(). */
++    return true;
++#else
++    return false;
++#endif
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    /* if (fCtxHook) */
++        preempt_disable();  /* HACK ALERT! undo the implicit preempt_enable() in SUPR0FpuBegin(). */
++    kernel_fpu_end();
++#endif
++}
++
++
+ int VBOXCALL    supdrvOSGetCurrentGdtRw(RTHCUINTPTR *pGdtRw)
+ {
+ #if RTLNX_VER_MIN(4,12,0)
+--- a/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
++++ b/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
+@@ -541,3 +541,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
++++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+@@ -1309,3 +1309,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
++++ b/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
+@@ -2704,6 +2704,19 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
++
+ SUPR0DECL(int) SUPR0IoCtlSetupForHandle(PSUPDRVSESSION pSession, intptr_t hHandle, uint32_t fFlags, PSUPR0IOCTLCTX *ppCtx)
+ {
+     /*
+--- a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
++++ b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+@@ -2311,7 +2311,13 @@ int  vboxNetFltPortOsXmit(PVBOXNETFLTINS
+                 vboxNetFltDumpPacket(pSG, true, "host", (fDst & INTNETTRUNKDIR_WIRE) ? 0 : 1);
+                 Log6(("vboxNetFltPortOsXmit: pBuf->cb dump:\n%.*Rhxd\n", sizeof(pBuf->cb), pBuf->cb));
+                 Log6(("vboxNetFltPortOsXmit: netif_rx_ni(%p)\n", pBuf));
++#if RTLNX_VER_MIN(5,18,0)
++                local_bh_disable();
++                err = netif_rx(pBuf);
++                local_bh_enable();
++#else
+                 err = netif_rx_ni(pBuf);
++#endif
+                 if (err)
+                     rc = RTErrConvertFromErrno(err);
+             }
+--- a/src/VBox/VMM/VMMR0/CPUMR0.cpp
++++ b/src/VBox/VMM/VMMR0/CPUMR0.cpp
+@@ -440,6 +440,9 @@ VMMR0_INT_DECL(int) CPUMR0LoadGuestFPU(P
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST));
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_SYNC_FPU_STATE));
+ 
++    /* Notify the support driver prior to loading the guest-FPU register state. */
++    SUPR0FpuBegin(false /* unused */);
++
+     if (!pVM->cpum.s.HostFeatures.fLeakyFxSR)
+     {
+         Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE));
+@@ -484,6 +487,9 @@ VMMR0_INT_DECL(bool) CPUMR0FpuStateMaybe
+     Assert(ASMGetCR4() & X86_CR4_OSFXSR);
+     if (pVCpu->cpum.s.fUseFlags & (CPUM_USED_FPU_GUEST | CPUM_USED_FPU_HOST))
+     {
++        /* Notify the support driver prior to loading the host-FPU register state. */
++        SUPR0FpuEnd(false /* unused */);
++
+         fSavedGuest = RT_BOOL(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST);
+         if (!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE))
+             cpumR0SaveGuestRestoreHostFPUState(&pVCpu->cpum.s);
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
new file mode 100644
index 000000000000..b1c93c0d9733
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
@@ -0,0 +1,179 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/src/VBox/Additions/linux/drm/vbox_fb.c
++++ b/src/VBox/Additions/linux/drm/vbox_fb.c
+@@ -362,6 +362,9 @@ static int vboxfb_create(struct drm_fb_h
+ 	info->screen_size = size;
+ 
+ #ifdef CONFIG_FB_DEFERRED_IO
++# if RTLNX_VER_MIN(5,19,0)
++	info->fix.smem_len = info->screen_size;
++# endif
+ 	info->fbdefio = &vbox_defio;
+ 	fb_deferred_io_init(info);
+ #endif
+--- a/src/VBox/Additions/linux/drm/vbox_ttm.c
++++ b/src/VBox/Additions/linux/drm/vbox_ttm.c
+@@ -320,8 +320,10 @@ static struct ttm_tt *vbox_ttm_tt_create
+ 	if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
+ #elif RTLNX_VER_MAX(5,11,0) && !RTLNX_RHEL_RANGE(8,5, 8,99)
+ 	if (ttm_tt_init(tt, bo, page_flags)) {
+-#else
++#elif RTLNX_VER_MAX(5,19,0)
+ 	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined)) {
++#else
++	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined, 0)) {
+ #endif
+ 		kfree(tt);
+ 		return NULL;
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3581,8 +3581,14 @@ struct inode_operations vbsf_reg_iops =
+  * Needed for mmap and reads+writes when the file is mmapped in a
+  * shared+writeable fashion.
+  */
++#if RTLNX_VER_MIN(5,19,0)
++static int vbsf_read_folio(struct file *file, struct folio *folio)
++{
++    struct page *page = &folio->page;
++#else
+ static int vbsf_readpage(struct file *file, struct page *page)
+ {
++#endif
+     struct inode *inode = VBSF_GET_F_DENTRY(file)->d_inode;
+     int           err;
+ 
+@@ -3728,8 +3734,7 @@ static int vbsf_writepage(struct page *p
+ /**
+  * Called when writing thru the page cache (which we shouldn't be doing).
+  */
+-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+-                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++static inline void vbsf_write_begin_warn(loff_t pos, unsigned len, unsigned flags)
+ {
+     /** @todo r=bird: We shouldn't ever get here, should we?  Because we don't use
+      *        the page cache for any writes AFAIK.  We could just as well use
+@@ -3745,8 +3750,24 @@ int vbsf_write_begin(struct file *file,
+         WARN_ON(1);
+ # endif
+     }
++}
++
++# if RTLNX_VER_MIN(5,19,0)
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, 0);
++    return simple_write_begin(file, mapping, pos, len, pagep, fsdata);
++}
++# else
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, flags);
+     return simple_write_begin(file, mapping, pos, len, flags, pagep, fsdata);
+ }
++# endif
++
+ #endif /* KERNEL_VERSION >= 2.6.24 */
+ 
+ #if RTLNX_VER_MIN(5,14,0)
+@@ -3820,7 +3841,11 @@ static int vbsf_direct_IO(int rw, struct
+  * @todo the FsPerf touch/flush (mmap) test fails on 4.4.0 (ubuntu 16.04 lts).
+  */
+ struct address_space_operations vbsf_reg_aops = {
++#if RTLNX_VER_MIN(5,19,0)
++    .read_folio     = vbsf_read_folio,
++#else
+     .readpage       = vbsf_readpage,
++#endif
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+ #if RTLNX_VER_MIN(5,18,0)
+@@ -3842,4 +3867,3 @@ struct address_space_operations vbsf_reg
+     .direct_IO      = vbsf_direct_IO,
+ #endif
+ };
+-
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -40,6 +40,7 @@
+ #include <iprt/semaphore.h>
+ #include <iprt/initterm.h>
+ #include <iprt/process.h>
++#include <iprt/thread.h>
+ #include <VBox/err.h>
+ #include <iprt/mem.h>
+ #include <VBox/log.h>
+@@ -1457,11 +1458,37 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
+ {
+     RT_NOREF(fCtxHook);
+-#if RTLNX_VER_MIN(5,18,0)
++#if RTLNX_VER_MIN(4,19,0) /* Going back to 4.19.0 for better coverage, we
++                             probably only need 5.17.7+ in the end. */
++    /*
++     * HACK ALERT!
++     *
++     * We'd like to use the old __kernel_fpu_begin() API which was removed in
++     * early 2019, because we typically run with preemption enabled and have an
++     * preemption hook installed which will call kernel_fpu_end() in case we're
++     * scheduled out after getting in here.  The preemption hook is almost
++     * useless if we run with preemption disabled.
++     *
++     * For the case where the kernel does not have preemption hooks, we get here
++     * with preemption already disabled and one more count doesn't make any
++     * difference.
++     *
++     * So, after the kernel_fpu_begin() call we undo the implicit preempt_disable()
++     * call it does, so the preemption hook can do its work and the VBox user has
++     * a more responsive system.
++     *
++     * See @bugref{10209#c12} and onwards for more details.
++     */
++    Assert(fCtxHook || !RTThreadPreemptIsEnabled(NIL_RTTHREAD));
+     kernel_fpu_begin();
+-    /* if (fCtxHook) */
+-        preempt_enable();  /* HACK ALERT! undo the implicit preempt_disable() in kernel_fpu_begin(). */
+-    return true;
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_enable();
++    return false; /** @todo Not sure if we have license to use any extended state, or
++                   *        if we're limited to the SSE & x87 FPU. If it's the former,
++                   *        we should return @a true and the caller can skip
++                   *        saving+restoring the host state and save some time. */
+ #else
+     return false;
+ #endif
+@@ -1471,9 +1498,13 @@ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxH
+ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
+ {
+     RT_NOREF(fCtxHook);
+-#if RTLNX_VER_MIN(5,18,0)
+-    /* if (fCtxHook) */
+-        preempt_disable();  /* HACK ALERT! undo the implicit preempt_enable() in SUPR0FpuBegin(). */
++#if RTLNX_VER_MIN(4,19,0)
++    /* HACK ALERT! See SUPR0FpuBegin for an explanation of this. */
++    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_disable();
+     kernel_fpu_end();
+ #endif
+ }
+--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+@@ -184,6 +184,11 @@
+ # include <asm/tlbflush.h>
+ #endif
+ 
++/* for kernel_fpu_begin / kernel_fpu_end() */
++#if RTLNX_VER_MIN(4,2,0)
++# include <asm/fpu/api.h>
++#endif
++
+ #if RTLNX_VER_MIN(3,7,0)
+ # include <asm/smap.h>
+ #else
diff --git a/srcpkgs/virtualbox-ose/template b/srcpkgs/virtualbox-ose/template
index d9f2f9825d2d..4f9976409ade 100644
--- a/srcpkgs/virtualbox-ose/template
+++ b/srcpkgs/virtualbox-ose/template
@@ -1,6 +1,6 @@
 # Template file for 'virtualbox-ose'
 pkgname=virtualbox-ose
-version=6.1.32
+version=6.1.34
 revision=1
 wrksrc="VirtualBox-${version}"
 short_desc="General-purpose full virtualizer for x86 hardware"
@@ -9,7 +9,7 @@ license="GPL-2.0-only, CDDL-1.0"
 homepage="https://www.virtualbox.org"
 changelog="https://www.virtualbox.org/wiki/Changelog"
 distfiles="http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"
-checksum=5d11384200b4e943ad0056d2cf75980ae4bee852c89650e2914e1b34eedc2d2c
+checksum=9c3ce1829432e5b8374f950698587038f45fb0492147dc200e59edb9bb75eb49
 
 nopie=yes
 lib32disabled=yes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Updated] virtualbox-ose: update to 6.1.34.
  2022-07-16 13:05 [PR PATCH] virtualbox-ose: update to 6.1.34 sgn
  2022-07-16 16:14 ` [PR PATCH] [Updated] " sgn
@ 2022-07-17  2:03 ` sgn
  2022-07-17  2:03 ` [PR PATCH] [Merged]: " sgn
  2 siblings, 0 replies; 4+ messages in thread
From: sgn @ 2022-07-17  2:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1259 bytes --]

There is an updated pull request by sgn against master on the void-packages repository

https://github.com/sgn/void-packages virtual-ose
https://github.com/void-linux/void-packages/pull/38096

virtualbox-ose: update to 6.1.34.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/38096.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-virtual-ose-38096.patch --]
[-- Type: text/x-diff, Size: 22563 bytes --]

From de98312e61d2fbf1f1863e04fca9bff59efa844f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Sat, 16 Jul 2022 20:03:42 +0700
Subject: [PATCH] virtualbox-ose: update to 6.1.34.

---
 .../patches/005-gsoap-build.patch             |   6 +-
 .../patches/008-no-vboxvideo.patch            |   6 +-
 .../virtualbox-ose/patches/013-Makefile.patch |   4 +-
 .../patches/016-disable-cloud.patch           |   1 -
 .../patches/017-libvdeplug-soname.patch       |   3 -
 .../patches/ffreestanding.patch               |  20 ++
 .../patches/vbox-linux-5.18.patch             | 254 ++++++++++++++++++
 .../patches/vbox-linux-5.19.patch             | 179 ++++++++++++
 srcpkgs/virtualbox-ose/template               |   4 +-
 9 files changed, 462 insertions(+), 15 deletions(-)
 create mode 100644 srcpkgs/virtualbox-ose/patches/ffreestanding.patch
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
 create mode 100644 srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch

diff --git a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
index 17022f01b920..a2855354f5e2 100644
--- a/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
+++ b/srcpkgs/virtualbox-ose/patches/005-gsoap-build.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Main/webservice/Makefile.kmk	2016-08-16 22:00:21.000000000 +0200
-+++ b/src/VBox/Main/webservice/Makefile.kmk	2016-08-18 10:05:45.548857031 +0200
-@@ -724,7 +724,7 @@
+--- a/src/VBox/Main/webservice/Makefile.kmk
++++ b/src/VBox/Main/webservice/Makefile.kmk
+@@ -771,7 +771,7 @@ $(VBOXWEB_OUT_DIR)/gsoap_generate_all_ts
  		$(RECOMPILE_ON_MAKEFILE_CURRENT) | $$(dir $$@)
  	$(call MSG_GENERATE,,lots of files,$(GSOAPH_RELEVANT))
  	$(RM) -f $@
diff --git a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
index 967c9d47362a..6f646ac02eeb 100644
--- a/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
+++ b/srcpkgs/virtualbox-ose/patches/008-no-vboxvideo.patch
@@ -1,6 +1,6 @@
---- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:23.184986182 +0100
-+++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	2016-10-11 02:49:39.879176964 +0100
-@@ -376,7 +376,7 @@ vboxvideo_drv_118_SOURCES := $(vboxvideo
+--- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
++++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
+@@ -397,7 +397,7 @@ vboxvideo_drv_118_LIBS += $(vboxvideo_dr
  
  ifdef VBOX_USE_SYSTEM_XORG_HEADERS
   # Build using local X.Org headers.  We assume X.Org Server 1.7 or later.
diff --git a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
index 30b44c7259fd..d1b5a8dcf874 100644
--- a/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
+++ b/srcpkgs/virtualbox-ose/patches/013-Makefile.patch
@@ -1,5 +1,3 @@
-diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
-index 18466b48..7c7de4e5 100644
 --- a/src/VBox/HostDrivers/linux/Makefile
 +++ b/src/VBox/HostDrivers/linux/Makefile
 @@ -23,25 +23,25 @@
@@ -36,7 +34,7 @@ index 18466b48..7c7de4e5 100644
  
  KBUILD_VERBOSE ?=
  KERN_VER ?= $(shell uname -r)
-@@ -146,4 +146,4 @@ load: unload
+@@ -167,4 +167,4 @@ load: unload
  		fi; \
  	done
  
diff --git a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
index 0d159d3f0f09..e92e52306d1d 100644
--- a/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
+++ b/srcpkgs/virtualbox-ose/patches/016-disable-cloud.patch
@@ -9,4 +9,3 @@
  ## @}
  
  
-
diff --git a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
index 1c1bcf96dcf1..a3c1e34a057e 100644
--- a/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
+++ b/srcpkgs/virtualbox-ose/patches/017-libvdeplug-soname.patch
@@ -2,8 +2,6 @@ Description: Revert http://www.virtualbox.org/changeset/36310
  The libvdeplug.so symlink is only shipped in the -dev package.
 Author: Felix Geyer <fgeyer@debian.org>
 
-Index: virtualbox/include/VBox/VDEPlugSymDefs.h
-===================================================================
 --- a/include/VBox/VDEPlugSymDefs.h
 +++ b/include/VBox/VDEPlugSymDefs.h
 @@ -1,5 +1,5 @@
@@ -22,4 +20,3 @@ Index: virtualbox/include/VBox/VDEPlugSymDefs.h
  #define RT_RUNTIME_LOADER_LIB_NAME VBOX_LIB_VDE_PLUG_NAME
  
  /** The name of the loader function */
-
diff --git a/srcpkgs/virtualbox-ose/patches/ffreestanding.patch b/srcpkgs/virtualbox-ose/patches/ffreestanding.patch
new file mode 100644
index 000000000000..0e22aa60cde4
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/ffreestanding.patch
@@ -0,0 +1,20 @@
+diff --git a/Config.kmk b/Config.kmk
+index 3df197404..4c6bd76bb 100644
+--- a/Config.kmk
++++ b/Config.kmk
+@@ -4503,11 +4504,14 @@ ifeq ($(VBOX_LDR_FMT),elf)
+ TEMPLATE_VBoxR0_TOOL                = $(VBOX_GCC_TOOL)
+ TEMPLATE_VBoxR0_CFLAGS              = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) \
+ 	$(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \
+-	$(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK)
++	$(VBOX_GCC_fno-stack-protector) -fno-common -ffreestanding $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK)
+ TEMPLATE_VBoxR0_CXXFLAGS            = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) \
+ 	$(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \
+ 	$(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) \
+ 	-fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK)
++ if $(VBOX_GCC_VERSION_CC) >= 40500 # 4.1.2 complains, 4.5.2 is okay, didn't check which version inbetween made it okay with g++.
++TEMPLATE_VBoxR0_CXXFLAGS           += -ffreestanding
++ endif
+ TEMPLATE_VBoxR0_CFLAGS.amd64        = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables -ffreestanding
+ TEMPLATE_VBoxR0_CXXFLAGS.amd64      = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables
+ TEMPLATE_VBoxR0_CXXFLAGS.freebsd    = -ffreestanding
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
new file mode 100644
index 000000000000..5b1ed1a266cd
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.18.patch
@@ -0,0 +1,254 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/include/VBox/sup.h
++++ b/include/VBox/sup.h
+@@ -2142,6 +2142,26 @@ RT_IPRT_FORMAT_ATTR(1, 2) SUPR0Printf(co
+  */
+ SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void);
+ 
++/**
++ * Notification from R0 VMM prior to loading the guest-FPU register state.
++ *
++ * @returns Whether the host-FPU register state has been saved by the host kernel.
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook);
++
++/**
++ * Notification from R0 VMM prior to saving the guest-FPU register state (and
++ * potentially restoring the host-FPU register state) in ring-0.
++ *
++ * @param   fCtxHook    Whether thread-context hooks are enabled.
++ *
++ * @remarks Called with preemption disabled.
++ */
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook);
++
+ /** @copydoc RTLogGetDefaultInstanceEx
+  * @remarks To allow overriding RTLogGetDefaultInstanceEx locally. */
+ SUPR0DECL(struct RTLOGGER *) SUPR0GetDefaultLogInstanceEx(uint32_t fFlagsAndGroup);
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3823,7 +3823,9 @@ struct address_space_operations vbsf_reg
+     .readpage       = vbsf_readpage,
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+-#if RTLNX_VER_MIN(2,5,12)
++#if RTLNX_VER_MIN(5,18,0)
++    .dirty_folio = filemap_dirty_folio,
++#elif RTLNX_VER_MIN(2,5,12)
+     .set_page_dirty = __set_page_dirty_buffers,
+ #endif
+ #if RTLNX_VER_MIN(5,14,0)
+--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp
++++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp
+@@ -98,6 +98,18 @@
+ # endif
+ #endif
+ 
++#if defined(RT_OS_LINUX) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
++/* In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks
++ * before triggering __underlying_memcpy() call. We do not pass these checks here,
++ * so bypass them for now.  */
++# if RTLNX_VER_MIN(5,18,0)
++#  define SUPDRV_MEMCPY __underlying_memcpy
++# else
++# define SUPDRV_MEMCPY  memcpy
++# endif
++#else
++# define SUPDRV_MEMCPY  memcpy
++#endif
+ 
+ /*
+  * Logging assignments:
+@@ -266,6 +278,8 @@ static SUPFUNC g_aFunctions[] =
+     SUPEXP_STK_BACK(    2,  SUPR0ContFree),
+     SUPEXP_STK_BACK(    2,  SUPR0ChangeCR4),
+     SUPEXP_STK_BACK(    1,  SUPR0EnableVTx),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuBegin),
++    SUPEXP_STK_OKAY(    1,  SUPR0FpuEnd),
+     SUPEXP_STK_BACK(    0,  SUPR0SuspendVTxOnCpu),
+     SUPEXP_STK_BACK(    1,  SUPR0ResumeVTxOnCpu),
+     SUPEXP_STK_OKAY(    1,  SUPR0GetCurrentGdtRw),
+@@ -1742,7 +1756,7 @@ static int supdrvIOCtlInnerUnrestricted(
+ 
+             /* execute */
+             pReq->u.Out.cFunctions = RT_ELEMENTS(g_aFunctions);
+-            memcpy(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
++            SUPDRV_MEMCPY(&pReq->u.Out.aFunctions[0], g_aFunctions, sizeof(g_aFunctions));
+             pReq->Hdr.rc = VINF_SUCCESS;
+             return 0;
+         }
+--- a/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
++++ b/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
+@@ -2002,6 +2002,18 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+ /*
+  *
+  * org_virtualbox_SupDrv
+--- a/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
++++ b/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+@@ -640,3 +640,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -1454,6 +1454,31 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    kernel_fpu_begin();
++    /* if (fCtxHook) */
++        preempt_enable();  /* HACK ALERT! undo the implicit preempt_disable() in kernel_fpu_begin(). */
++    return true;
++#else
++    return false;
++#endif
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++#if RTLNX_VER_MIN(5,18,0)
++    /* if (fCtxHook) */
++        preempt_disable();  /* HACK ALERT! undo the implicit preempt_enable() in SUPR0FpuBegin(). */
++    kernel_fpu_end();
++#endif
++}
++
++
+ int VBOXCALL    supdrvOSGetCurrentGdtRw(RTHCUINTPTR *pGdtRw)
+ {
+ #if RTLNX_VER_MIN(4,12,0)
+--- a/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
++++ b/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
+@@ -541,3 +541,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
++++ b/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+@@ -1309,3 +1309,16 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+     return 0;
+ }
+ 
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
+--- a/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
++++ b/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
+@@ -2704,6 +2704,19 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ }
+ 
+ 
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++    return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++    RT_NOREF(fCtxHook);
++}
++
++
+ SUPR0DECL(int) SUPR0IoCtlSetupForHandle(PSUPDRVSESSION pSession, intptr_t hHandle, uint32_t fFlags, PSUPR0IOCTLCTX *ppCtx)
+ {
+     /*
+--- a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
++++ b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+@@ -2311,7 +2311,13 @@ int  vboxNetFltPortOsXmit(PVBOXNETFLTINS
+                 vboxNetFltDumpPacket(pSG, true, "host", (fDst & INTNETTRUNKDIR_WIRE) ? 0 : 1);
+                 Log6(("vboxNetFltPortOsXmit: pBuf->cb dump:\n%.*Rhxd\n", sizeof(pBuf->cb), pBuf->cb));
+                 Log6(("vboxNetFltPortOsXmit: netif_rx_ni(%p)\n", pBuf));
++#if RTLNX_VER_MIN(5,18,0)
++                local_bh_disable();
++                err = netif_rx(pBuf);
++                local_bh_enable();
++#else
+                 err = netif_rx_ni(pBuf);
++#endif
+                 if (err)
+                     rc = RTErrConvertFromErrno(err);
+             }
+--- a/src/VBox/VMM/VMMR0/CPUMR0.cpp
++++ b/src/VBox/VMM/VMMR0/CPUMR0.cpp
+@@ -440,6 +440,9 @@ VMMR0_INT_DECL(int) CPUMR0LoadGuestFPU(P
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST));
+     Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_SYNC_FPU_STATE));
+ 
++    /* Notify the support driver prior to loading the guest-FPU register state. */
++    SUPR0FpuBegin(false /* unused */);
++
+     if (!pVM->cpum.s.HostFeatures.fLeakyFxSR)
+     {
+         Assert(!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE));
+@@ -484,6 +487,9 @@ VMMR0_INT_DECL(bool) CPUMR0FpuStateMaybe
+     Assert(ASMGetCR4() & X86_CR4_OSFXSR);
+     if (pVCpu->cpum.s.fUseFlags & (CPUM_USED_FPU_GUEST | CPUM_USED_FPU_HOST))
+     {
++        /* Notify the support driver prior to loading the host-FPU register state. */
++        SUPR0FpuEnd(false /* unused */);
++
+         fSavedGuest = RT_BOOL(pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU_GUEST);
+         if (!(pVCpu->cpum.s.fUseFlags & CPUM_USED_MANUAL_XMM_RESTORE))
+             cpumR0SaveGuestRestoreHostFPUState(&pVCpu->cpum.s);
diff --git a/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
new file mode 100644
index 000000000000..b1c93c0d9733
--- /dev/null
+++ b/srcpkgs/virtualbox-ose/patches/vbox-linux-5.19.patch
@@ -0,0 +1,179 @@
+Source: https://www.virtualbox.org/ticket/20914
+--- a/src/VBox/Additions/linux/drm/vbox_fb.c
++++ b/src/VBox/Additions/linux/drm/vbox_fb.c
+@@ -362,6 +362,9 @@ static int vboxfb_create(struct drm_fb_h
+ 	info->screen_size = size;
+ 
+ #ifdef CONFIG_FB_DEFERRED_IO
++# if RTLNX_VER_MIN(5,19,0)
++	info->fix.smem_len = info->screen_size;
++# endif
+ 	info->fbdefio = &vbox_defio;
+ 	fb_deferred_io_init(info);
+ #endif
+--- a/src/VBox/Additions/linux/drm/vbox_ttm.c
++++ b/src/VBox/Additions/linux/drm/vbox_ttm.c
+@@ -320,8 +320,10 @@ static struct ttm_tt *vbox_ttm_tt_create
+ 	if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
+ #elif RTLNX_VER_MAX(5,11,0) && !RTLNX_RHEL_RANGE(8,5, 8,99)
+ 	if (ttm_tt_init(tt, bo, page_flags)) {
+-#else
++#elif RTLNX_VER_MAX(5,19,0)
+ 	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined)) {
++#else
++	if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined, 0)) {
+ #endif
+ 		kfree(tt);
+ 		return NULL;
+--- a/src/VBox/Additions/linux/sharedfolders/regops.c
++++ b/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -3581,8 +3581,14 @@ struct inode_operations vbsf_reg_iops =
+  * Needed for mmap and reads+writes when the file is mmapped in a
+  * shared+writeable fashion.
+  */
++#if RTLNX_VER_MIN(5,19,0)
++static int vbsf_read_folio(struct file *file, struct folio *folio)
++{
++    struct page *page = &folio->page;
++#else
+ static int vbsf_readpage(struct file *file, struct page *page)
+ {
++#endif
+     struct inode *inode = VBSF_GET_F_DENTRY(file)->d_inode;
+     int           err;
+ 
+@@ -3728,8 +3734,7 @@ static int vbsf_writepage(struct page *p
+ /**
+  * Called when writing thru the page cache (which we shouldn't be doing).
+  */
+-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+-                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++static inline void vbsf_write_begin_warn(loff_t pos, unsigned len, unsigned flags)
+ {
+     /** @todo r=bird: We shouldn't ever get here, should we?  Because we don't use
+      *        the page cache for any writes AFAIK.  We could just as well use
+@@ -3745,8 +3750,24 @@ int vbsf_write_begin(struct file *file,
+         WARN_ON(1);
+ # endif
+     }
++}
++
++# if RTLNX_VER_MIN(5,19,0)
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, 0);
++    return simple_write_begin(file, mapping, pos, len, pagep, fsdata);
++}
++# else
++int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
++                     unsigned len, unsigned flags, struct page **pagep, void **fsdata)
++{
++    vbsf_write_begin_warn(pos, len, flags);
+     return simple_write_begin(file, mapping, pos, len, flags, pagep, fsdata);
+ }
++# endif
++
+ #endif /* KERNEL_VERSION >= 2.6.24 */
+ 
+ #if RTLNX_VER_MIN(5,14,0)
+@@ -3820,7 +3841,11 @@ static int vbsf_direct_IO(int rw, struct
+  * @todo the FsPerf touch/flush (mmap) test fails on 4.4.0 (ubuntu 16.04 lts).
+  */
+ struct address_space_operations vbsf_reg_aops = {
++#if RTLNX_VER_MIN(5,19,0)
++    .read_folio     = vbsf_read_folio,
++#else
+     .readpage       = vbsf_readpage,
++#endif
+     .writepage      = vbsf_writepage,
+     /** @todo Need .writepages if we want msync performance...  */
+ #if RTLNX_VER_MIN(5,18,0)
+@@ -3842,4 +3867,3 @@ struct address_space_operations vbsf_reg
+     .direct_IO      = vbsf_direct_IO,
+ #endif
+ };
+-
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -40,6 +40,7 @@
+ #include <iprt/semaphore.h>
+ #include <iprt/initterm.h>
+ #include <iprt/process.h>
++#include <iprt/thread.h>
+ #include <VBox/err.h>
+ #include <iprt/mem.h>
+ #include <VBox/log.h>
+@@ -1457,11 +1458,37 @@ SUPR0DECL(uint32_t) SUPR0GetKernelFeatur
+ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
+ {
+     RT_NOREF(fCtxHook);
+-#if RTLNX_VER_MIN(5,18,0)
++#if RTLNX_VER_MIN(4,19,0) /* Going back to 4.19.0 for better coverage, we
++                             probably only need 5.17.7+ in the end. */
++    /*
++     * HACK ALERT!
++     *
++     * We'd like to use the old __kernel_fpu_begin() API which was removed in
++     * early 2019, because we typically run with preemption enabled and have an
++     * preemption hook installed which will call kernel_fpu_end() in case we're
++     * scheduled out after getting in here.  The preemption hook is almost
++     * useless if we run with preemption disabled.
++     *
++     * For the case where the kernel does not have preemption hooks, we get here
++     * with preemption already disabled and one more count doesn't make any
++     * difference.
++     *
++     * So, after the kernel_fpu_begin() call we undo the implicit preempt_disable()
++     * call it does, so the preemption hook can do its work and the VBox user has
++     * a more responsive system.
++     *
++     * See @bugref{10209#c12} and onwards for more details.
++     */
++    Assert(fCtxHook || !RTThreadPreemptIsEnabled(NIL_RTTHREAD));
+     kernel_fpu_begin();
+-    /* if (fCtxHook) */
+-        preempt_enable();  /* HACK ALERT! undo the implicit preempt_disable() in kernel_fpu_begin(). */
+-    return true;
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_enable();
++    return false; /** @todo Not sure if we have license to use any extended state, or
++                   *        if we're limited to the SSE & x87 FPU. If it's the former,
++                   *        we should return @a true and the caller can skip
++                   *        saving+restoring the host state and save some time. */
+ #else
+     return false;
+ #endif
+@@ -1471,9 +1498,13 @@ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxH
+ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
+ {
+     RT_NOREF(fCtxHook);
+-#if RTLNX_VER_MIN(5,18,0)
+-    /* if (fCtxHook) */
+-        preempt_disable();  /* HACK ALERT! undo the implicit preempt_enable() in SUPR0FpuBegin(). */
++#if RTLNX_VER_MIN(4,19,0)
++    /* HACK ALERT! See SUPR0FpuBegin for an explanation of this. */
++    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
++# if 0 /* Always do it for now for better test coverage. */
++    if (fCtxHook)
++# endif
++        preempt_disable();
+     kernel_fpu_end();
+ #endif
+ }
+--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+@@ -184,6 +184,11 @@
+ # include <asm/tlbflush.h>
+ #endif
+ 
++/* for kernel_fpu_begin / kernel_fpu_end() */
++#if RTLNX_VER_MIN(4,2,0)
++# include <asm/fpu/api.h>
++#endif
++
+ #if RTLNX_VER_MIN(3,7,0)
+ # include <asm/smap.h>
+ #else
diff --git a/srcpkgs/virtualbox-ose/template b/srcpkgs/virtualbox-ose/template
index d9f2f9825d2d..4f9976409ade 100644
--- a/srcpkgs/virtualbox-ose/template
+++ b/srcpkgs/virtualbox-ose/template
@@ -1,6 +1,6 @@
 # Template file for 'virtualbox-ose'
 pkgname=virtualbox-ose
-version=6.1.32
+version=6.1.34
 revision=1
 wrksrc="VirtualBox-${version}"
 short_desc="General-purpose full virtualizer for x86 hardware"
@@ -9,7 +9,7 @@ license="GPL-2.0-only, CDDL-1.0"
 homepage="https://www.virtualbox.org"
 changelog="https://www.virtualbox.org/wiki/Changelog"
 distfiles="http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"
-checksum=5d11384200b4e943ad0056d2cf75980ae4bee852c89650e2914e1b34eedc2d2c
+checksum=9c3ce1829432e5b8374f950698587038f45fb0492147dc200e59edb9bb75eb49
 
 nopie=yes
 lib32disabled=yes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Merged]: virtualbox-ose: update to 6.1.34.
  2022-07-16 13:05 [PR PATCH] virtualbox-ose: update to 6.1.34 sgn
  2022-07-16 16:14 ` [PR PATCH] [Updated] " sgn
  2022-07-17  2:03 ` sgn
@ 2022-07-17  2:03 ` sgn
  2 siblings, 0 replies; 4+ messages in thread
From: sgn @ 2022-07-17  2:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1107 bytes --]

There's a merged pull request on the void-packages repository

virtualbox-ose: update to 6.1.34.
https://github.com/void-linux/void-packages/pull/38096

Description:
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-17  2:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-16 13:05 [PR PATCH] virtualbox-ose: update to 6.1.34 sgn
2022-07-16 16:14 ` [PR PATCH] [Updated] " sgn
2022-07-17  2:03 ` sgn
2022-07-17  2:03 ` [PR PATCH] [Merged]: " sgn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).