--- /dev/null
+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);