[arch-commits] Commit in virtualbox/trunk (020-linux518.patch PKGBUILD)
Christian Hesse
eworm at gemini.archlinux.org
Mon May 30 06:48:43 UTC 2022
Date: Monday, May 30, 2022 @ 06:48:42
Author: eworm
Revision: 1214794
upgpkg: virtualbox 6.1.34-4: fix with linux 5.18
Modified:
virtualbox/trunk/020-linux518.patch
virtualbox/trunk/PKGBUILD
--------------------+
020-linux518.patch | 277 ++++++++++++++++++++++++++++++++++++++++++++++++++-
PKGBUILD | 4
2 files changed, 275 insertions(+), 6 deletions(-)
Modified: 020-linux518.patch
===================================================================
--- 020-linux518.patch 2022-05-30 06:48:41 UTC (rev 1214793)
+++ 020-linux518.patch 2022-05-30 06:48:42 UTC (rev 1214794)
@@ -1,8 +1,252 @@
-Index: trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+Index: include/VBox/sup.h
===================================================================
---- trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
-+++ trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
-@@ -2312,5 +2312,11 @@
+--- trunk/include/VBox/sup.h (revision 151556)
++++ trunk/include/VBox/sup.h (working copy)
+@@ -2142,6 +2142,26 @@
+ */
+ 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);
+Index: src/VBox/Additions/linux/sharedfolders/regops.c
+===================================================================
+--- trunk/src/VBox/Additions/linux/sharedfolders/regops.c (revision 151556)
++++ trunk/src/VBox/Additions/linux/sharedfolders/regops.c (working copy)
+@@ -3823,7 +3823,9 @@
+ .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)
+Index: src/VBox/Additions
+===================================================================
+--- trunk/src/VBox/Additions (revision 151556)
++++ trunk/src/VBox/Additions (working copy)
+
+Property changes on: src/VBox/Additions
+___________________________________________________________________
+Modified: svn:mergeinfo
+## -0,0 +0,1 ##
+ Merged /trunk/src/VBox/Additions:r150844
+Index: src/VBox/HostDrivers/Support/SUPDrv.cpp
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp (working copy)
+@@ -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 @@
+ 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 @@
+
+ /* 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;
+ }
+Index: src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp (working copy)
+@@ -2002,6 +2002,18 @@
+ }
+
+
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++ return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++}
++
+ /*
+ *
+ * org_virtualbox_SupDrv
+Index: src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c (working copy)
+@@ -640,3 +640,16 @@
+ return 0;
+ }
+
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++ return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++}
++
+Index: src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c (working copy)
+@@ -1454,6 +1454,31 @@
+ }
+
+
++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)
+Index: src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/os2/SUPDrv-os2.cpp (working copy)
+@@ -541,3 +541,16 @@
+ return 0;
+ }
+
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++ return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++}
++
+Index: src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c (working copy)
+@@ -1309,3 +1309,16 @@
+ return 0;
+ }
+
++
++SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++ return false;
++}
++
++
++SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
++{
++ RT_NOREF(fCtxHook);
++}
++
+Index: src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
+===================================================================
+--- trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp (revision 151556)
++++ trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp (working copy)
+@@ -2704,6 +2704,19 @@
+ }
+
+
++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)
+ {
+ /*
+Index: src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+===================================================================
+--- trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c (revision 151556)
++++ trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c (working copy)
+@@ -2311,7 +2311,13 @@
+ 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)
@@ -14,3 +258,28 @@
+#endif
if (err)
rc = RTErrConvertFromErrno(err);
+ }
+Index: src/VBox/VMM/VMMR0/CPUMR0.cpp
+===================================================================
+--- trunk/src/VBox/VMM/VMMR0/CPUMR0.cpp (revision 151556)
++++ trunk/src/VBox/VMM/VMMR0/CPUMR0.cpp (working copy)
+@@ -440,6 +440,9 @@
+ 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 @@
+ 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);
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-05-30 06:48:41 UTC (rev 1214793)
+++ PKGBUILD 2022-05-30 06:48:42 UTC (rev 1214794)
@@ -10,7 +10,7 @@
'virtualbox-ext-vnc')
pkgver=6.1.34
_tarver=${pkgver}
-pkgrel=3
+pkgrel=4
arch=('x86_64')
url='https://virtualbox.org/'
license=('GPL' 'custom')
@@ -103,7 +103,7 @@
'5aac692909a0a0ec56b08bdece9e42cf7463abdca9da2f990d441ff463be6a99'
'cac5a573e9ed5aafb2f469c2e6fffb8cd4f389bbadba5a968c9f65be7a72fee3'
'25066d566042a3b3d6dee805fe783ca07fd3c3671a098db2b5f09aeb07624cd2'
- '1bdce861cb3609256da3b0ce07cab59d17801d48fa67c55b2c4dad9b09014f47')
+ '3ea54e5a747086c388d078b12117cdb640a937e3147b71031abcff2497ff1e97')
prepare() {
cd "VirtualBox-$pkgver"
More information about the arch-commits
mailing list