forked from mirrors/nixpkgs
These don't use a the virtualbox sources, but an iso as src, and we need to add the kernel 5.3 patch aswell. As for some reason the source files are present on the .iso with Windows Line endings (sic!), call dos2unix first. Unfortunately, we can't use the same kernel-5.3-fix.patch as virtualbox itself, as some files are missing and paths are different.
51 lines
1.8 KiB
Diff
51 lines
1.8 KiB
Diff
--- a/vboxguest/r0drv/linux/mp-r0drv-linux.c
|
|
+++ a/vboxguest/r0drv/linux/mp-r0drv-linux.c
|
|
@@ -283,12 +283,15 @@
|
|
if (RTCpuSetCount(&OnlineSet) > 1)
|
|
{
|
|
/* Fire the function on all other CPUs without waiting for completion. */
|
|
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
|
|
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)
|
|
+ smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
|
|
+# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
|
|
int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
|
|
+ Assert(!rc); NOREF(rc);
|
|
# else
|
|
int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */);
|
|
-# endif
|
|
Assert(!rc); NOREF(rc);
|
|
+# endif
|
|
}
|
|
#endif
|
|
|
|
@@ -326,7 +329,6 @@
|
|
{
|
|
#ifdef CONFIG_SMP
|
|
IPRT_LINUX_SAVE_EFL_AC();
|
|
- int rc;
|
|
RTMPARGS Args;
|
|
|
|
RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
|
|
@@ -337,14 +339,17 @@
|
|
Args.cHits = 0;
|
|
|
|
RTThreadPreemptDisable(&PreemptState);
|
|
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
|
|
- rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
|
|
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)
|
|
+ smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
|
|
+# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
|
|
+ int rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
|
|
+ Assert(rc == 0); NOREF(rc);
|
|
# else /* older kernels */
|
|
- rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
|
|
+ int rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
|
|
+ Assert(rc == 0); NOREF(rc);
|
|
# endif /* older kernels */
|
|
RTThreadPreemptRestore(&PreemptState);
|
|
|
|
- Assert(rc == 0); NOREF(rc);
|
|
IPRT_LINUX_RESTORE_EFL_AC();
|
|
#else
|
|
RT_NOREF(pfnWorker, pvUser1, pvUser2);
|