[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