Index: VirtualBox-6.0.14/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c =================================================================== --- VirtualBox-6.0.14.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c +++ VirtualBox-6.0.14/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c @@ -924,8 +924,13 @@ static void vboxNetFltLinuxSkBufToSG(PVB for (i = 0; i < skb_shinfo(pBuf)->nr_frags; i++) { skb_frag_t *pFrag = &skb_shinfo(pBuf)->frags[i]; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) + pSG->aSegs[iSeg].cb = pFrag->bv_len; + pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->bv_offset; +#else pSG->aSegs[iSeg].cb = pFrag->size; pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset; +#endif Log6((" %p", pSG->aSegs[iSeg].pv)); pSG->aSegs[iSeg++].Phys = NIL_RTHCPHYS; Assert(iSeg <= pSG->cSegsAlloc); @@ -940,8 +945,13 @@ static void vboxNetFltLinuxSkBufToSG(PVB for (i = 0; i < skb_shinfo(pFragBuf)->nr_frags; i++) { skb_frag_t *pFrag = &skb_shinfo(pFragBuf)->frags[i]; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) + pSG->aSegs[iSeg].cb = pFrag->bv_len; + pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->bv_offset; +#else pSG->aSegs[iSeg].cb = pFrag->size; pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset; +#endif Log6((" %p", pSG->aSegs[iSeg].pv)); pSG->aSegs[iSeg++].Phys = NIL_RTHCPHYS; Assert(iSeg <= pSG->cSegsAlloc); Index: VirtualBox-6.0.14/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c =================================================================== --- VirtualBox-6.0.14.orig/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c +++ VirtualBox-6.0.14/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c @@ -443,9 +443,6 @@ RTR0DECL(void *) RTMemContAlloc(PRTCCPHY } SetPageReserved(&paPages[iPage]); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ - MY_SET_PAGES_EXEC(&paPages[iPage], 1); -#endif } *pPhys = page_to_phys(paPages); pvRet = phys_to_virt(page_to_phys(paPages)); @@ -491,9 +488,6 @@ RTR0DECL(void) RTMemContFree(void *pv, s for (iPage = 0; iPage < cPages; iPage++) { ClearPageReserved(&paPages[iPage]); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ - MY_SET_PAGES_NOEXEC(&paPages[iPage], 1); -#endif } __free_pages(paPages, cOrder); IPRT_LINUX_RESTORE_EFL_AC(); Index: VirtualBox-6.0.14/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c =================================================================== --- VirtualBox-6.0.14.orig/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c +++ VirtualBox-6.0.14/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c @@ -36,6 +36,9 @@ #include #include "internal/thread.h" +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) +#include +#endif RTDECL(RTTHREAD) RTThreadSelf(void) { Index: VirtualBox-6.0.14/src/VBox/Additions/linux/drm/vbox_drv.c =================================================================== --- VirtualBox-6.0.14.orig/src/VBox/Additions/linux/drm/vbox_drv.c +++ VirtualBox-6.0.14/src/VBox/Additions/linux/drm/vbox_drv.c @@ -271,11 +271,13 @@ static void vbox_master_drop(struct drm_ static struct drm_driver driver = { .driver_features = - DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ | +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) + DRIVER_PRIME | +#endif #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) && !defined(RHEL_81) DRIVER_IRQ_SHARED | #endif - DRIVER_PRIME, + DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ, .dev_priv_size = 0, .load = vbox_driver_load, Index: VirtualBox-6.0.14/src/VBox/Additions/linux/drm/vbox_main.c =================================================================== --- VirtualBox-6.0.14.orig/src/VBox/Additions/linux/drm/vbox_main.c +++ VirtualBox-6.0.14/src/VBox/Additions/linux/drm/vbox_main.c @@ -619,8 +619,12 @@ static inline u64 vbox_bo_mmap_offset(st #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) && !defined(RHEL_70) return bo->bo.addr_space_offset; #else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) + return drm_vma_node_offset_addr(&bo->bo.base.vma_node); +#else return drm_vma_node_offset_addr(&bo->bo.vma_node); #endif +#endif } int Index: VirtualBox-6.0.14/include/iprt/cdefs.h =================================================================== --- VirtualBox-6.0.14.orig/include/iprt/cdefs.h +++ VirtualBox-6.0.14/include/iprt/cdefs.h @@ -1166,14 +1166,15 @@ * Tell the compiler that we're falling through to the next case in a switch. * @sa RT_FALL_THRU */ #if RT_GNUC_PREREQ(7, 0) -# define RT_FALL_THROUGH() __attribute__((fallthrough)) +# define FALL_THROUGH __attribute__((__fallthrough__)) #else -# define RT_FALL_THROUGH() (void)0 +# define FALL_THROUGH (void)0 #endif /** @def RT_FALL_THRU * Tell the compiler that we're falling thru to the next case in a switch. * @sa RT_FALL_THROUGH */ -#define RT_FALL_THRU() RT_FALL_THROUGH() +#define RT_FALL_THRU() FALL_THROUGH +#define RT_FALL_THROUGH() FALL_THROUGH /** @def RT_IPRT_FORMAT_ATTR