diff --git a/fix_KMS_support.patch b/fix_KMS_support.patch new file mode 100644 index 0000000..c5d39c9 --- /dev/null +++ b/fix_KMS_support.patch @@ -0,0 +1,14 @@ +Index: VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_fb.c +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/drm/vbox_fb.c ++++ VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_fb.c +@@ -409,6 +409,9 @@ static void vbox_fbdev_destroy(struct dr + LogFunc(("vboxvideo: %d\n", __LINE__)); + if (fbdev->helper.fbdev) { + info = fbdev->helper.fbdev; ++#ifdef CONFIG_FB_DEFERRED_IO ++ fb_deferred_io_cleanup(info); ++#endif + unregister_framebuffer(info); + if (info->cmap.len) + fb_dealloc_cmap(&info->cmap); diff --git a/vbox_fix_for_gcc7.patch b/vbox_fix_for_gcc7.patch index e4cd3ae..bfd7287 100644 --- a/vbox_fix_for_gcc7.patch +++ b/vbox_fix_for_gcc7.patch @@ -25,3 +25,251 @@ Index: VirtualBox-5.1.22/src/VBox/Devices/PC/ipxe/src/arch/i386/interface/pxe/px } /* PXENV_START_UNDI +Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest ++++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest +@@ -54,6 +54,7 @@ FILES_VBOXGUEST_NOBIN=" \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/x86.h=>include/iprt/x86.h \ +@@ -113,6 +114,7 @@ FILES_VBOXGUEST_NOBIN=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>common/math/gcc/qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>common/math/gcc/quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>common/math/gcc/udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>common/math/gcc/udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>common/math/gcc/umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \ +Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/Makefile ++++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile +@@ -100,6 +100,7 @@ MOD_OBJS += \ + common/math/gcc/divdi3.o \ + common/math/gcc/moddi3.o \ + common/math/gcc/udivdi3.o \ ++ common/math/gcc/udivmoddi4.o \ + common/math/gcc/umoddi3.o \ + common/math/gcc/qdivrem.o + endif +Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/files_vboxsf ++++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf +@@ -38,6 +38,7 @@ FILES_VBOXSF_NOBIN=" \ + ${PATH_ROOT}/include/iprt/string.h=>include/iprt/string.h \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/VBox/cdefs.h=>include/VBox/cdefs.h \ +@@ -73,6 +74,7 @@ FILES_VBOXSF_NOBIN=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ + ${PATH_ROOT}/src/VBox/Additions/linux/sharedfolders/Makefile.module=>Makefile \ +Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/Makefile.module ++++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module +@@ -38,6 +38,7 @@ MOD_OBJS += \ + divdi3.o \ + moddi3.o \ + udivdi3.o \ ++ udivmoddi4.o \ + umoddi3.o \ + qdivrem.o + endif +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/files_vboxdrv ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv +@@ -65,6 +65,7 @@ FILES_VBOXDRV_NOBIN=" \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint128.h=>include/iprt/uint128.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ +@@ -109,6 +110,7 @@ FILES_VBOXDRV_NOBIN=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \ +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/Makefile ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile +@@ -158,6 +158,7 @@ OBJS += math/gcc/divdi3.o \ + math/gcc/moddi3.o \ + math/gcc/qdivrem.o \ + math/gcc/udivdi3.o \ ++ math/gcc/udivmoddi4.o \ + math/gcc/divdi3.o \ + math/gcc/umoddi3.o + endif +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp +@@ -49,6 +49,7 @@ VBOX_VBOXNETADP_SOURCES=" \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ +@@ -70,6 +71,7 @@ VBOX_VBOXNETADP_SOURCES=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/string/strformat.cpp=>common/string/strformat.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/string/strformatrt.cpp=>common/string/strformatrt.c \ +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile +@@ -68,6 +68,7 @@ OBJS += math/gcc/divdi3.o \ + math/gcc/moddi3.o \ + math/gcc/qdivrem.o \ + math/gcc/udivdi3.o \ ++ math/gcc/udivmoddi4.o \ + math/gcc/divdi3.o \ + math/gcc/umoddi3.o + endif +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt +@@ -49,6 +49,7 @@ VBOX_VBOXNETFLT_SOURCES=" \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ +@@ -77,6 +78,7 @@ VBOX_VBOXNETFLT_SOURCES=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ + ${PATH_OUT}/version-generated.h=>version-generated.h \ +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile +@@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \ + math/gcc/moddi3.o \ + math/gcc/qdivrem.o \ + math/gcc/udivdi3.o \ ++ math/gcc/udivmoddi4.o \ + math/gcc/divdi3.o \ + math/gcc/umoddi3.o + endif +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci +@@ -48,6 +48,7 @@ VBOX_VBOXPCI_SOURCES=" \ + ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ + ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ + ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ++ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ + ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ + ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ + ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ +@@ -75,6 +76,7 @@ VBOX_VBOXPCI_SOURCES=" \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ ++ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ + ${PATH_OUT}/version-generated.h=>version-generated.h \ +Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile +=================================================================== +--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/Makefile ++++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile +@@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \ + math/gcc/moddi3.o \ + math/gcc/qdivrem.o \ + math/gcc/udivdi3.o \ ++ math/gcc/udivmoddi4.o \ + math/gcc/divdi3.o \ + math/gcc/umoddi3.o + endif +Index: VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c +=================================================================== +--- /dev/null ++++ VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c +@@ -0,0 +1,51 @@ ++/* $Id$ */ ++/** @file ++ * IPRT - __udivmoddi4 implementation ++ */ ++ ++/* ++ * Copyright (C) 2006-2016 Oracle Corporation ++ * ++ * This file is part of VirtualBox Open Source Edition (OSE), as ++ * available from http://www.virtualbox.org. This file is free software; ++ * you can redistribute it and/or modify it under the terms of the GNU ++ * General Public License (GPL) as published by the Free Software ++ * Foundation, in version 2 as it comes in the "COPYING" file of the ++ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the ++ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. ++ * ++ * The contents of this file may alternatively be used under the terms ++ * of the Common Development and Distribution License Version 1.0 ++ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the ++ * VirtualBox OSE distribution, in which case the provisions of the ++ * CDDL are applicable instead of those of the GPL. ++ * ++ * You may elect to license modified versions of this file under the ++ * terms and conditions of either the GPL or the CDDL or both. ++ */ ++ ++#include ++#include ++ ++/** ++ * __udivmoddi4() implementation to satisfy external references from 32-bit ++ * code generated by gcc-7 or later. ++ * ++ * @param u64A The divident value. ++ * @param u64B The divisor value. ++ * @param pu64R A pointer to the reminder. May be NULL. ++ * @returns u64A / u64B ++ */ ++uint64_t __udivmoddi4(uint64_t u64A, uint64_t u64B, uint64_t *pu64R) ++{ ++ RTUINT64U Divident; ++ RTUINT64U Divisor; ++ RTUINT64U Quotient; ++ RTUINT64U Reminder; ++ Divident.u = u64A; ++ Divisor.u = u64B; ++ RTUInt64DivRem(&Quotient, &Reminder, &Divident, &Divisor); ++ if (pu64R) ++ *pu64R = Reminder.u; ++ return Quotient.u; ++} diff --git a/vboxconfig.sh b/vboxconfig.sh index 5f3ebe5..7ca30d4 100644 --- a/vboxconfig.sh +++ b/vboxconfig.sh @@ -1,4 +1,4 @@ -!/bin/bash +#!/bin/bash # # Script to build VirtualBox host kernel modules # Copyright C 2017 by Larry Finger diff --git a/virtualbox.changes b/virtualbox.changes index 5d24935..d44835d 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Jun 30 00:50:42 UTC 2017 - Larry.Finger@lwfinger.net + +- Fix missing global for 32-bit version with gcc7. (bsc#1046571). + Fix missing frame buffer cleanup - private communication from Oracle - adds file "fix_KMS_support.patch". + ------------------------------------------------------------------- Sun Jun 25 17:09:01 UTC 2017 - Larry.Finger@lwfinger.net diff --git a/virtualbox.spec b/virtualbox.spec index c46d06f..eeb5d12 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -103,6 +103,8 @@ Patch115: vbox_fix_for_gcc7.patch Patch116: Fix_for_server_1.19.patch # Fix for kernel 4.12 API changes Patch117: vbox_fix_for_kernel_4.12.patch +# Fix for missing cleanup in KMS support +Patch118: fix_KMS_support.patch # BuildRequires: LibVNCServer-devel BuildRequires: SDL-devel @@ -384,6 +386,7 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL. %patch115 -p1 %patch116 -p1 %patch117 -p1 +%patch118 -p1 #copy user manual cp %{SOURCE1} UserManual.pdf