mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-19 04:02:10 +00:00
Merge pull request #180165 from Yarny0/virtualbox-linux519
virtualbox: update patch linux-5.18 -> linux-5.19
This commit is contained in:
commit
ec92e5a7ac
|
@ -3,6 +3,7 @@
|
|||
, libpng, glib, lvm2, libXrandr, libXinerama, libopus, qtbase, qtx11extras
|
||||
, qttools, qtsvg, qtwayland, pkg-config, which, docbook_xsl, docbook_xml_dtd_43
|
||||
, alsa-lib, curl, libvpx, nettools, dbus, substituteAll, gsoap, zlib
|
||||
, fetchpatch
|
||||
# If open-watcom-bin is not passed, VirtualBox will fall back to use
|
||||
# the shipped alternative sources (assembly).
|
||||
, open-watcom-bin
|
||||
|
@ -98,8 +99,12 @@ in stdenv.mkDerivation {
|
|||
# https://github.com/NixOS/nixpkgs/issues/123851
|
||||
./fix-audio-driver-loading.patch
|
||||
# NOTE: both patches below should be removed when updating to 6.1.35
|
||||
# https://www.virtualbox.org/ticket/20914#comment:6
|
||||
./linux518.patch
|
||||
# https://www.virtualbox.org/ticket/20914#comment:15
|
||||
(fetchpatch {
|
||||
url = "https://www.virtualbox.org/raw-attachment/ticket/20914/vbox-linux-5.19.patch";
|
||||
hash = "sha512-NNiMf8kUuM/PimrQCOacYLkrf7UFPh6ZdPsXKyLlsqWfWQXkG92Fv3qZXvg8weE1Z/SBsFTuHICEI4b4l1wZFw==";
|
||||
extraPrefix = "/";
|
||||
})
|
||||
# https://www.virtualbox.org/ticket/20904#comment:22
|
||||
./ffreestanding.patch
|
||||
];
|
||||
|
|
|
@ -1,285 +0,0 @@
|
|||
Index: include/VBox/sup.h
|
||||
===================================================================
|
||||
--- 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)
|
||||
+ local_bh_disable();
|
||||
+ err = netif_rx(pBuf);
|
||||
+ local_bh_enable();
|
||||
+#else
|
||||
err = netif_rx_ni(pBuf);
|
||||
+#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);
|
Loading…
Reference in a new issue