1
0
forked from pool/virtualbox

Accepting request 528710 from Virtualization

- Make changes suggested in bsc#1060072
  The specific changes are:
  (1) Remove the test in vboxdrv.sh as the script tests for the wrong file. This is safe because
      if the package is not installed, the script will not be there.
  (2) Move VBoxDbg.so to package virtualbox-qt. With this change, packages libQt5Core, libQt5Gui
      and libQt5Widgets are no longer needed with package virtualbox. As a result, a text-only
      server no longer needs to load QT to support headless virtual machines.

- Update "fixes_for_4.14.patch" to handle additional API changes in kernel 4.14.
  These include the following:
	removal of gamma_set and gamma_get from struct drm_fb_helper_funcs
	removal of set_busid from struct drm_driver
	replacement of drm_pci_init() with pci_register_driver()
	replacement of drm_pci_exit() with pci_unregister_driver()
	removal of load_lut from struct drm_crtc_helper_func

-  Update "fixes_for_4.14.patch" to handle missing SKB_GSO_UDP in kernel 4.14

OBS-URL: https://build.opensuse.org/request/show/528710
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virtualbox?expand=0&rev=142
This commit is contained in:
Dominique Leuenberger 2017-09-28 10:33:21 +00:00 committed by Git OBS Bridge
commit 5590df8567
4 changed files with 168 additions and 20 deletions

View File

@ -1,16 +1,150 @@
Patch VirtualBox source for changes in the kernel API for 4.14.x
The following issues are addressed:
vfs_write() is replaced by kernel_write()
symbol SKB_GSO_UDP is removed
removal of gamma_set and gamma_get from struct drm_fb_helper_funcs
removal of set_busid from struct drm_driver
replacement of drm_pci_init() with pci_register_driver()
replacement of drm_pci_exit() with pci_unregister_driver()
removal of load_lut from struct drm_crtc_helper_func
This patch is licensed under the MIT license.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Index: VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
+++ VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
@@ -357,7 +357,11 @@ static int vboxPciFileWrite(struct file*
@@ -353,12 +353,17 @@ static void vboxPciFileClose(struct fil
static int vboxPciFileWrite(struct file* file, unsigned long long offset, unsigned char* data, unsigned int size)
{
int ret;
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+
+ ret = kernel_write(file, data, size, &offset);
+#else
mm_segment_t fs_save;
fs_save = get_fs();
set_fs(get_ds());
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+ ret = kernel_write(file, data, size, &offset);
+#else
ret = vfs_write(file, data, size, &offset);
+#endif
set_fs(fs_save);
+#endif
if (ret < 0)
printk(KERN_DEBUG "vboxPciFileWrite: error %d\n", ret);
Index: VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -124,6 +124,10 @@ typedef struct VBOXNETFLTNOTIFIER *PVBOX
# define bstats stats
# define qstats stats
# endif
+#endif
+
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+#define SKB_GSO_UDP 0
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
@@ -722,9 +726,11 @@ static struct sk_buff *vboxNetFltLinuxSk
case PDMNETWORKGSOTYPE_IPV4_TCP:
fGsoType = SKB_GSO_TCPV4;
break;
+# if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
case PDMNETWORKGSOTYPE_IPV4_UDP:
fGsoType = SKB_GSO_UDP;
break;
+#endif
case PDMNETWORKGSOTYPE_IPV6_TCP:
fGsoType = SKB_GSO_TCPV6;
break;
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_fb.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_fb.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_fb.c
@@ -381,6 +381,7 @@ out:
return ret;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
static void vbox_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
u16 blue, int regno)
{
@@ -394,10 +395,13 @@ static void vbox_fb_gamma_get(struct drm
*green = regno;
*blue = regno;
}
+#endif
static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
.gamma_set = vbox_fb_gamma_set,
.gamma_get = vbox_fb_gamma_get,
+#endif
.fb_probe = vboxfb_create,
};
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_drv.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_drv.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -281,7 +281,7 @@ static struct drm_driver driver =
.lastclose = vbox_driver_lastclose,
.master_set = vbox_master_set,
.master_drop = vbox_master_drop,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(RHEL_73)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(RHEL_73)) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
.set_busid = drm_pci_set_busid,
#endif
@@ -326,11 +326,19 @@ static int __init vbox_init(void)
if (vbox_modeset == 0)
return -EINVAL;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
return drm_pci_init(&driver, &vbox_pci_driver);
+#else
+ return pci_register_driver(&vbox_pci_driver);
+#endif
}
static void __exit vbox_exit(void)
{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
drm_pci_exit(&driver, &vbox_pci_driver);
+#else
+ pci_unregister_driver(&vbox_pci_driver);
+#endif
}
module_init(vbox_init);
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_mode.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_mode.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_mode.c
@@ -152,10 +152,12 @@ static int vbox_set_view(struct drm_crtc
return 0;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
static void vbox_crtc_load_lut(struct drm_crtc *crtc)
{
}
+#endif
static void vbox_crtc_dpms(struct drm_crtc *crtc, int mode)
{
@@ -301,7 +303,9 @@ static const struct drm_crtc_helper_func
.mode_set = vbox_crtc_mode_set,
/* .mode_set_base = vbox_crtc_mode_set_base, */
.disable = vbox_crtc_disable,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
.load_lut = vbox_crtc_load_lut,
+#endif
.prepare = vbox_crtc_prepare,
.commit = vbox_crtc_commit,

View File

@ -52,20 +52,6 @@ export BUILD_TYPE
export USERNAME
export USER=$USERNAME
if test -n "${INSTALL_DIR}" && test -x "${INSTALL_DIR}/VirtualBox"; then
MODULE_SRC="${INSTALL_DIR}/src/vboxhost"
elif test -x /usr/lib/virtualbox/VirtualBox; then
INSTALL_DIR=/usr/lib/virtualbox
MODULE_SRC="/usr/share/virtualbox/src/vboxhost"
elif test -x "${SCRIPT_DIR}/VirtualBox"; then
# Executing from the build directory
INSTALL_DIR="${SCRIPT_DIR}"
MODULE_SRC="${INSTALL_DIR}/src"
else
# Silently exit if the package was uninstalled but not purged.
# Applies to Debian packages only (but shouldn't hurt elsewhere)
exit 0
fi
VIRTUALBOX="${INSTALL_DIR}/VirtualBox"
VBOXMANAGE="${INSTALL_DIR}/VBoxManage"
BUILDINTMP="${MODULE_SRC}/build_in_tmp"

View File

@ -1,3 +1,30 @@
-------------------------------------------------------------------
Mon Sep 25 20:15:56 UTC 2017 - Larry.Finger@lwfinger.net
- Make changes suggested in bsc#1060072
The specific changes are:
(1) Remove the test in vboxdrv.sh as the script tests for the wrong file. This is safe because
if the package is not installed, the script will not be there.
(2) Move VBoxDbg.so to package virtualbox-qt. With this change, packages libQt5Core, libQt5Gui
and libQt5Widgets are no longer needed with package virtualbox. As a result, a text-only
server no longer needs to load QT to support headless virtual machines.
-------------------------------------------------------------------
Sun Sep 24 14:45:02 UTC 2017 - Larry.Finger@lwfinger.net
- Update "fixes_for_4.14.patch" to handle additional API changes in kernel 4.14.
These include the following:
removal of gamma_set and gamma_get from struct drm_fb_helper_funcs
removal of set_busid from struct drm_driver
replacement of drm_pci_init() with pci_register_driver()
replacement of drm_pci_exit() with pci_unregister_driver()
removal of load_lut from struct drm_crtc_helper_func
-------------------------------------------------------------------
Thu Sep 21 13:49:01 UTC 2017 - Larry.Finger@lwfinger.net
- Update "fixes_for_4.14.patch" to handle missing SKB_GSO_UDP in kernel 4.14
-------------------------------------------------------------------
Wed Sep 20 00:44:12 UTC 2017 - Larry.Finger@lwfinger.net

View File

@ -593,6 +593,7 @@ install -m 755 vboxshell.py %{buildroot}%{_vbox_instdir}
install -m 755 VBoxBalloonCtrl %{buildroot}%{_vbox_instdir}
install -m 755 webtest %{buildroot}%{_vbox_instdir}
install -m 755 VBoxDTrace %{buildroot}%{_vbox_instdir}
install -m 755 VBoxDbg.so %{buildroot}%{_vbox_instdir}
# create links to vbox tools in PATH - they could be usefull for controlling vbox from command line
ln -s %{_vbox_instdir}/VBoxManage %{buildroot}%{_bindir}/VBoxManage
ln -s %{_vbox_instdir}/VBoxHeadless %{buildroot}%{_bindir}/VBoxHeadless
@ -864,7 +865,6 @@ export DISABLE_RESTART_ON_UPDATE=yes
%{_vbox_instdir}/DbgPlugInDiggers.so
%{_vbox_instdir}/VBoxAuth.so
%{_vbox_instdir}/VBoxAuthSimple.so
%{_vbox_instdir}/VBoxDbg.so
%{_vbox_instdir}/VBoxDragAndDropSvc.so
%{_vbox_instdir}/VBoxVMMPreload.so
#todo:double check - if this file should be assigned to the host side
@ -910,6 +910,7 @@ export DISABLE_RESTART_ON_UPDATE=yes
#qm's translations
%{_datadir}/virtualbox/nls
%{_vbox_instdir}/VirtualBox.so
%{_vbox_instdir}/VBoxDbg.so
%{_datadir}/pixmaps/virtualbox.png
%{_datadir}/applications/%{name}.desktop
%{_udevrulesdir}/60-vboxdrv.rules