From 5fa584a434d4b55bb7d440a576d5a47b23e332a7 Mon Sep 17 00:00:00 2001 From: Jan Palus Date: Tue, 14 Nov 2017 16:46:32 +0100 Subject: [PATCH] upstream fixes for linux 4.14 (r69143, r69525, r69539) --- VirtualBox.spec | 2 + linux-4.14.patch | 157 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 linux-4.14.patch diff --git a/VirtualBox.spec b/VirtualBox.spec index 9951e84..9e3b18a 100644 --- a/VirtualBox.spec +++ b/VirtualBox.spec @@ -82,6 +82,7 @@ Patch14: %{pname}-no-scrextend.patch Patch15: %{pname}-multipython.patch Patch16: %{pname}-lightdm-1.19.2.patch Patch17: %{pname}-no-vboxvideo.patch +Patch18: linux-4.14.patch URL: http://www.virtualbox.org/ %if %{with userspace} %ifarch %{x8664} @@ -542,6 +543,7 @@ cd ../..\ %patch15 -p0 %patch16 -p0 %patch17 -p0 +%patch18 -p0 %{__sed} -i -e 's,@VBOX_DOC_PATH@,%{_docdir}/%{name}-%{version},' \ -e 's/Categories=.*/Categories=Utility;Emulator;/' src/VBox/Installer/common/virtualbox.desktop.in diff --git a/linux-4.14.patch b/linux-4.14.patch new file mode 100644 index 0000000..76df6fa --- /dev/null +++ b/linux-4.14.patch @@ -0,0 +1,157 @@ +Index: src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c +=================================================================== +--- src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c (revision 69538) ++++ src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c (revision 69539) +@@ -746,9 +746,6 @@ + case PDMNETWORKGSOTYPE_IPV4_TCP: + fGsoType = SKB_GSO_TCPV4; + break; +- case PDMNETWORKGSOTYPE_IPV4_UDP: +- fGsoType = SKB_GSO_UDP; +- break; + case PDMNETWORKGSOTYPE_IPV6_TCP: + fGsoType = SKB_GSO_TCPV6; + break; +@@ -1282,7 +1279,7 @@ + * Check the GSO properties of the socket buffer and make sure it fits. + */ + /** @todo Figure out how to handle SKB_GSO_TCP_ECN! */ +- if (RT_UNLIKELY( skb_shinfo(pSkb)->gso_type & ~(SKB_GSO_UDP | SKB_GSO_DODGY | SKB_GSO_TCPV6 | SKB_GSO_TCPV4) )) ++ if (RT_UNLIKELY( skb_shinfo(pSkb)->gso_type & ~(SKB_GSO_DODGY | SKB_GSO_TCPV6 | SKB_GSO_TCPV4) )) + { + Log5(("vboxNetFltLinuxCanForwardAsGso: gso_type=%#x\n", skb_shinfo(pSkb)->gso_type)); + return false; +@@ -1532,7 +1529,7 @@ + } + #endif /* !VBOXNETFLT_SG_SUPPORT */ + # ifdef VBOXNETFLT_WITH_GSO_RECV +- if ( (skb_shinfo(pBuf)->gso_type & (SKB_GSO_UDP | SKB_GSO_TCPV6 | SKB_GSO_TCPV4)) ++ if ( (skb_shinfo(pBuf)->gso_type & (SKB_GSO_TCPV6 | SKB_GSO_TCPV4)) + && vboxNetFltLinuxCanForwardAsGso(pThis, pBuf, fSrc, &GsoCtx) ) + vboxNetFltLinuxForwardAsGso(pThis, pBuf, fSrc, &GsoCtx); + else +@@ -1708,17 +1705,9 @@ + fGsoCapabilites |= RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_TCP); + if (fFeatures & NETIF_F_TSO6) + fGsoCapabilites |= RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP); +-# if 0 /** @todo GSO: Test UDP offloading (UFO) on linux. */ +- if (fFeatures & NETIF_F_UFO) +- fGsoCapabilites |= RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP); +- if (fFeatures & NETIF_F_UFO) +- fGsoCapabilites |= RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP); +-# endif + Log3(("vboxNetFltLinuxReportNicGsoCapabilities: reporting wire %s%s%s%s\n", + (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_TCP)) ? "tso " : "", +- (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP)) ? "tso6 " : "", +- (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP)) ? "ufo " : "", +- (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP)) ? "ufo6 " : "")); ++ (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP)) ? "tso6 " : "")); + pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, fGsoCapabilites, INTNETTRUNKDIR_WIRE); + } + +@@ -2411,15 +2400,11 @@ + */ + /** @todo duplicate work here now? Attach */ + #if defined(VBOXNETFLT_WITH_GSO_XMIT_HOST) +- Log3(("vboxNetFltOsConnectIt: reporting host tso tso6 ufo\n")); ++ Log3(("vboxNetFltOsConnectIt: reporting host tso tso6\n")); + pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, + 0 + | RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_TCP) + | RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP) +- | RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP) +-# if 0 /** @todo GSO: Test UDP offloading (UFO) on linux. */ +- | RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP) +-# endif + , INTNETTRUNKDIR_HOST); + + #endif +Index: src/VBox/Additions/linux/drm/vbox_mode.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_mode.c (revision 69524) ++++ src/VBox/Additions/linux/drm/vbox_mode.c (revision 69525) +@@ -151,11 +151,6 @@ + return 0; + } + +-static void vbox_crtc_load_lut(struct drm_crtc *crtc) +-{ +- +-} +- + static void vbox_crtc_dpms(struct drm_crtc *crtc, int mode) + { + struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc); +@@ -348,7 +344,6 @@ + .mode_set = vbox_crtc_mode_set, + /* .mode_set_base = vbox_crtc_mode_set_base, */ + .disable = vbox_crtc_disable, +- .load_lut = vbox_crtc_load_lut, + .prepare = vbox_crtc_prepare, + .commit = vbox_crtc_commit, + +Index: src/VBox/Additions/linux/drm/vbox_fb.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_fb.c (revision 69142) ++++ src/VBox/Additions/linux/drm/vbox_fb.c (revision 69143) +@@ -338,23 +338,7 @@ + return 0; + } + +-static void vbox_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, +- u16 blue, int regno) +-{ +- +-} +- +-static void vbox_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, +- u16 *blue, int regno) +-{ +- *red = regno; +- *green = regno; +- *blue = regno; +-} +- + static struct drm_fb_helper_funcs vbox_fb_helper_funcs = { +- .gamma_set = vbox_fb_gamma_set, +- .gamma_get = vbox_fb_gamma_get, + .fb_probe = vboxfb_create, + }; + +Index: src/VBox/Additions/linux/drm/vbox_drv.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_drv.c (revision 69142) ++++ src/VBox/Additions/linux/drm/vbox_drv.c (revision 69143) +@@ -272,7 +272,9 @@ + .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(4, 14, 0) + .set_busid = drm_pci_set_busid, ++# endif + #endif + + .fops = &vbox_fops, +@@ -307,7 +309,7 @@ + + static int __init vbox_init(void) + { +-#ifdef CONFIG_VGA_CONSOLE ++#ifdef CONFIG_VGA_CONSOLE || LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) + if (vgacon_text_force() && vbox_modeset == -1) + return -EINVAL; + #endif +@@ -315,11 +317,11 @@ + if (vbox_modeset == 0) + return -EINVAL; + +- return drm_pci_init(&driver, &vbox_pci_driver); ++ return pci_register_driver(&vbox_pci_driver); + } + static void __exit vbox_exit(void) + { +- drm_pci_exit(&driver, &vbox_pci_driver); ++ pci_unregister_driver(&vbox_pci_driver); + } + + module_init(vbox_init); -- 2.43.0