From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFB38C433EF for ; Fri, 22 Oct 2021 09:50:29 +0000 (UTC) Received: from mail-ua1-f50.google.com (mail-ua1-f50.google.com [209.85.222.50]) by mx.groups.io with SMTP id smtpd.web11.6180.1634896227812976094 for ; Fri, 22 Oct 2021 02:50:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CahtwNfM; spf=pass (domain: gmail.com, ip: 209.85.222.50, mailfrom: costamagna.gianfranco@gmail.com) Received: by mail-ua1-f50.google.com with SMTP id o12so2444622uap.0 for ; Fri, 22 Oct 2021 02:50:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=r0X9kTQSecJ1A2eWUIOJzSTOK+Dja8BPlQFvjTzOyu4=; b=CahtwNfMdIPLdhJUUUbA4LxADwHZP+tpDhXCbuQLOqVpqyj5/qKx+gsIXMt39dMg+w AJwqpi/Z1mxd+gOrzA6Ap3On1RNBkuaash/kSYfV/TBMbuBkMUQ9z+3pYhME3fIwnM0C KgHiAPNPbYmz621UxXY1KS6PvvFUmsXrf/LGRjcZvyFSrmMJVgULqw1T7TNPovdfgF7H HJzh0K1IX6WOieKy1WHDI7zpZf/pEVLbNF85/MoxBufZw/AQUahXOk+LYlWDHws7JG4F 5eQW0uwMjyLyVTbGFUKcBNcy5hIJ6DBka4bME/SOlw0enUauGQnc7CUDydfT+utfdeJL F19g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=r0X9kTQSecJ1A2eWUIOJzSTOK+Dja8BPlQFvjTzOyu4=; b=iC1CnnG4ckY8x8SMs1tBLBR0jtryVJUt2Tp99GrPCESlS4sz1048dCmw8mdcn2IPuz fYVevPmMeLU2iBkZY5zu7U0Q6QceHdttEvoa2/qykkdtzWRFlM/XasCCizf4vT0tWaWg 3IsinTHyuWWPAFt/KNQrb7+MnJrh/a0wBrWkWWKMxY1jlkPvTt/JN26jOFHNqmp1gCF5 0Rgkf54SNDsGuWQRk2vBtN+DuOq8YnLGQKTXuCTdD06KgvdKyLKzRDddNTMXaCEnrnlc dG2UBEykttSSTMCzneQUXQn0t2i9hwumgPrvqYAFFL90oaL4WP5cZGGq0H9bljY7A9Z3 kxNA== X-Gm-Message-State: AOAM531OWx9y5ay3+hINdCKrcWjGTXeV0/R6TJkWyBFFMVNMkVAi93i6 FaMpnhZ3X+TkQSTEU1+y2Io9Yh9VQ4L73cTPrhw= X-Google-Smtp-Source: ABdhPJxRUzMxbWLZYKEhKC10nmGaUjsyTpSE6A9hL8GrF3e2xkLNUeCXwu3aizu56ZuPfBaKbi+EUjvjtsEWKdCouyg= X-Received: by 2002:ab0:4751:: with SMTP id i17mr13034716uac.86.1634896226812; Fri, 22 Oct 2021 02:50:26 -0700 (PDT) MIME-Version: 1.0 References: <20211020105613.164741-1-costamagnagianfranco@yahoo.it> In-Reply-To: From: Gianfranco Costamagna Date: Fri, 22 Oct 2021 11:50:15 +0200 Message-ID: Subject: Re: [oe] [meta-oe][PATCH] vboxguestdrivers: upgrade 6.1.26 -> 6.1.28 To: Khem Raj Cc: Bruce Ashfield , openembeded-devel , Gianfranco Costamagna , Gianfranco Costamagna Content-Type: multipart/alternative; boundary="000000000000d806d905ceedf082" List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 22 Oct 2021 09:50:29 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/93531 --000000000000d806d905ceedf082 Content-Type: text/plain; charset="UTF-8" Hello, FYI I traced down the upstream change that introduced this regression: https://www.virtualbox.org/changeset?reponame=vbox&new=91232%40trunk%2Finclude%2Fiprt%2Fstdarg.h&old=82968%40trunk%2Finclude%2Fiprt%2Fstdarg.h --- a/vboxsf/include/iprt/stdarg.h +++ b/vboxsf/include/iprt/stdarg.h @@ -43,13 +43,6 @@ # if __GNUC__ >= 4 /* System headers refers to __builtin_stdarg_start. */ # define __builtin_stdarg_start __builtin_va_start # endif -# elif defined(RT_OS_LINUX) && defined(IN_RING0) -# include "linux/version.h" -# if RTLNX_VER_MIN(5,15,0) -# include -# else -# include -# endif # else # include # endif I did grep into the kernel source code and that files is already included in lots of places and drivers. I honestly think that file should be ship into STAGING_KERNEL_DIR instead of STAGING_KERNEL_BUILDDIR because other binaries will need it probably in the future. But this change needs to be done in poky, not meta-openembedded. For now I'm submitting you a patch that does this: + # hack to include in the source directory the utsrelease.h file, making the build succeed. + # this might be removed in future releases if the kernel starts shipping this generated file into KERNEL_DIR and not KERNEL_BUILDDIR + ln -snf ${STAGING_KERNEL_BUILDDIR}/include/* ${S}/vboxsf/include fixing the build. (please let me know if you can forward the request to poky/kernel devs) Gianfranco Il giorno gio 21 ott 2021 alle ore 00:28 Khem Raj ha scritto: > On Wed, Oct 20, 2021 at 2:26 PM Gianfranco Costamagna > wrote: > > > > Hello, > > any idea is welcome, I can't yet figure out why this file is not in > recipes-sysroot or whatever. > > Do you have any help? Of course copy-pasting the "generated" directory > from the kernel build artifacts works, > > but I think there should a better way than patching the kernel recipe... > > > > this file should be in kernel-build-artifacts, so I wonder why this is > not available. Bruce any ideas ? > > > Gianfranco > > > > Il giorno mer 20 ott 2021 alle ore 21:32 Khem Raj > ha scritto: > >> > >> seeing this failure on qemux86 > >> > >> https://errors.yoctoproject.org/Errors/Details/613563/ > >> > >> On Wed, Oct 20, 2021 at 3:56 AM Gianfranco > >> wrote: > >> > > >> > drop two upstream cherry-pick patches: > >> > r89690-5.14-fixes.patch > >> > r90497-regops-5.14-fix.patch > >> > > >> > Signed-off-by: Gianfranco Costamagna > >> > Signed-off-by: Gianfranco Costamagna > >> > --- > >> > .../vboxguestdrivers/r89690-5.14-fixes.patch | 442 > ------------------ > >> > .../r90497-regops-5.14-fix.patch | 118 ----- > >> > ...s_6.1.26.bb => vboxguestdrivers_6.1.28.bb} | 6 +- > >> > 3 files changed, 2 insertions(+), 564 deletions(-) > >> > delete mode 100644 > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch > >> > delete mode 100644 > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch > >> > rename meta-oe/recipes-support/vboxguestdrivers/{ > vboxguestdrivers_6.1.26.bb => vboxguestdrivers_6.1.28.bb} (92%) > >> > > >> > diff --git > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch > >> > deleted file mode 100644 > >> > index 951bd5013..000000000 > >> > --- > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch > >> > +++ /dev/null > >> > @@ -1,442 +0,0 @@ > >> > -Subject: Fix build errors with linux 5.14 > >> > - > >> > -Upstream-Status: backport > >> > - > >> > -svn-id: r89690 > >> > - > >> > -Signed-off-by: Bruce Ashfield > >> > - > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_drv.h > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_drv.h (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_drv.h (revision 90498) > >> > -@@ -227,6 +227,15 @@ > >> > - sizeof(HGSMIHOSTFLAGS)) > >> > - #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE > >> > - > >> > -+/** Field @pdev of struct drm_device was removed in 5.14. This macro > >> > -+ * transparently handles this change. Input argument is a pointer > >> > -+ * to struct drm_device. */ > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+# define VBOX_DRM_TO_PCI_DEV(_dev) to_pci_dev(_dev->dev) > >> > -+#else > >> > -+# define VBOX_DRM_TO_PCI_DEV(_dev) _dev->pdev > >> > -+#endif > >> > -+ > >> > - /** How frequently we refresh if the guest is not providing dirty > rectangles. */ > >> > - #define VBOX_REFRESH_PERIOD (HZ / 2) > >> > - > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_main.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_main.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_main.c (revision 90498) > >> > -@@ -290,7 +290,7 @@ > >> > - /* Take a command buffer for each screen from the end of > usable VRAM. */ > >> > - vbox->available_vram_size -= vbox->num_crtcs * > VBVA_MIN_BUFFER_SIZE; > >> > - > >> > -- vbox->vbva_buffers = pci_iomap_range(vbox->dev->pdev, 0, > >> > -+ vbox->vbva_buffers = > pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0, > >> > - > vbox->available_vram_size, > >> > - vbox->num_crtcs * > >> > - VBVA_MIN_BUFFER_SIZE); > >> > -@@ -311,7 +311,7 @@ > >> > - return 0; > >> > - > >> > - err_pci_iounmap: > >> > -- pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers); > >> > -+ pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), > vbox->vbva_buffers); > >> > - return ret; > >> > - } > >> > - > >> > -@@ -318,7 +318,7 @@ > >> > - static void vbox_accel_fini(struct vbox_private *vbox) > >> > - { > >> > - vbox_disable_accel(vbox); > >> > -- pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers); > >> > -+ pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), > vbox->vbva_buffers); > >> > - } > >> > - > >> > - /** Do we support the 4.3 plus mode hint reporting interface? */ > >> > -@@ -393,7 +393,7 @@ > >> > - > >> > - /* Map guest-heap at end of vram */ > >> > - vbox->guest_heap = > >> > -- pci_iomap_range(vbox->dev->pdev, 0, > GUEST_HEAP_OFFSET(vbox), > >> > -+ pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0, > GUEST_HEAP_OFFSET(vbox), > >> > - GUEST_HEAP_SIZE); > >> > - if (!vbox->guest_heap) > >> > - return -ENOMEM; > >> > -@@ -442,7 +442,7 @@ > >> > - err_destroy_guest_pool: > >> > - gen_pool_destroy(vbox->guest_pool); > >> > - err_unmap_guest_heap: > >> > -- pci_iounmap(vbox->dev->pdev, vbox->guest_heap); > >> > -+ pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap); > >> > - return ret; > >> > - } > >> > - > >> > -@@ -452,7 +452,7 @@ > >> > - cancel_delayed_work(&vbox->refresh_work); > >> > - vbox_accel_fini(vbox); > >> > - gen_pool_destroy(vbox->guest_pool); > >> > -- pci_iounmap(vbox->dev->pdev, vbox->guest_heap); > >> > -+ pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap); > >> > - } > >> > - > >> > - #if RTLNX_VER_MIN(4,19,0) || RTLNX_RHEL_MIN(8,3) > >> > -@@ -567,12 +567,16 @@ > >> > - > >> > - size = roundup(size, PAGE_SIZE); > >> > - if (size == 0) > >> > -+ { > >> > -+ DRM_ERROR("bad size\n"); > >> > - return -EINVAL; > >> > -+ } > >> > - > >> > - ret = vbox_bo_create(dev, size, 0, 0, &vboxbo); > >> > - if (ret) { > >> > - if (ret != -ERESTARTSYS) > >> > - DRM_ERROR("failed to allocate GEM object\n"); > >> > -+ DRM_ERROR("failed to allocate GEM (%d)\n", ret); > >> > - return ret; > >> > - } > >> > - > >> > -@@ -628,6 +632,21 @@ > >> > - { > >> > - struct vbox_bo *vbox_bo = gem_to_vbox_bo(obj); > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ /* Starting from kernel 5.14, there is a warning appears in > dmesg > >> > -+ * on attempt to desroy pinned buffer object. Make sure it is > unpinned. */ > >> > -+ while (vbox_bo->bo.pin_count) > >> > -+ { > >> > -+ int ret; > >> > -+ ret = vbox_bo_unpin(vbox_bo); > >> > -+ if (ret) > >> > -+ { > >> > -+ DRM_ERROR("unable to unpin buffer object\n"); > >> > -+ break; > >> > -+ } > >> > -+ } > >> > -+#endif > >> > -+ > >> > - ttm_bo_put(&vbox_bo->bo); > >> > - } > >> > - > >> > -@@ -648,7 +667,7 @@ > >> > - u32 handle, u64 *offset) > >> > - { > >> > - struct drm_gem_object *obj; > >> > -- int ret; > >> > -+ int ret = 0; > >> > - struct vbox_bo *bo; > >> > - > >> > - mutex_lock(&dev->struct_mutex); > >> > -@@ -665,8 +684,15 @@ > >> > - bo = gem_to_vbox_bo(obj); > >> > - *offset = vbox_bo_mmap_offset(bo); > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ ret = drm_vma_node_allow(&bo->bo.base.vma_node, file); > >> > -+ if (ret) > >> > -+ { > >> > -+ DRM_ERROR("unable to grant previladges to user"); > >> > -+ } > >> > -+#endif > >> > -+ > >> > - drm_gem_object_put(obj); > >> > -- ret = 0; > >> > - > >> > - out_unlock: > >> > - mutex_unlock(&dev->struct_mutex); > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_mode.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 90498) > >> > -@@ -245,6 +245,10 @@ > >> > - vbox_bo_unpin(bo); > >> > - vbox_bo_unreserve(bo); > >> > - } > >> > -+ else > >> > -+ { > >> > -+ DRM_ERROR("unable to lock buffer object: > error %d\n", ret); > >> > -+ } > >> > - } > >> > - > >> > - if (&vbox->fbdev->afb == vbox_fb) > >> > -@@ -856,7 +860,9 @@ > >> > - vbox->cursor_data_size = data_size; > >> > - dst = vbox->cursor_data; > >> > - > >> > --#if RTLNX_VER_MIN(5,12,0) > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, > &uobj_map); > >> > -+#elif RTLNX_VER_MIN(5,12,0) > >> > - ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, > &uobj_map); > >> > - #else > >> > - ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &uobj_map); > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_ttm.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_ttm.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_ttm.c (revision 90498) > >> > -@@ -41,6 +41,10 @@ > >> > - # include > >> > - #endif > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+# include > >> > -+#endif > >> > -+ > >> > - #if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2) > >> > - #define PLACEMENT_FLAGS(placement) (placement) > >> > - #else > >> > -@@ -174,11 +178,13 @@ > >> > - *pl = vboxbo->placement; > >> > - } > >> > - > >> > -+#if RTLNX_VER_MAX(5,14,0) > >> > - static int vbox_bo_verify_access(struct ttm_buffer_object *bo, > >> > - struct file *filp) > >> > - { > >> > - return 0; > >> > - } > >> > -+#endif > >> > - > >> > - #if RTLNX_VER_MAX(5,10,0) > >> > - static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev, > >> > -@@ -234,10 +240,10 @@ > >> > - mem->bus.caching = ttm_write_combined; > >> > - # endif > >> > - # if RTLNX_VER_MIN(5,10,0) > >> > -- mem->bus.offset = (mem->start << PAGE_SHIFT) + > pci_resource_start(vbox->dev->pdev, 0); > >> > -+ mem->bus.offset = (mem->start << PAGE_SHIFT) + > pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0); > >> > - # else > >> > - mem->bus.offset = mem->start << PAGE_SHIFT; > >> > -- mem->start = pci_resource_start(vbox->dev->pdev, 0); > >> > -+ mem->start = > pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0); > >> > - # endif > >> > - mem->bus.is_iomem = true; > >> > - break; > >> > -@@ -373,7 +379,9 @@ > >> > - .eviction_valuable = ttm_bo_eviction_valuable, > >> > - #endif > >> > - .evict_flags = vbox_bo_evict_flags, > >> > -+#if RTLNX_VER_MAX(5,14,0) > >> > - .verify_access = vbox_bo_verify_access, > >> > -+#endif > >> > - .io_mem_reserve = &vbox_ttm_io_mem_reserve, > >> > - .io_mem_free = &vbox_ttm_io_mem_free, > >> > - #if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5) > >> > -@@ -451,12 +459,12 @@ > >> > - } > >> > - > >> > - #ifdef DRM_MTRR_WC > >> > -- vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(dev->pdev, 0), > >> > -- pci_resource_len(dev->pdev, 0), > >> > -+ vbox->fb_mtrr = > drm_mtrr_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0), > >> > -+ > pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0), > >> > - DRM_MTRR_WC); > >> > - #else > >> > -- vbox->fb_mtrr = > arch_phys_wc_add(pci_resource_start(dev->pdev, 0), > >> > -- pci_resource_len(dev->pdev, > 0)); > >> > -+ vbox->fb_mtrr = > arch_phys_wc_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0), > >> > -+ > pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0)); > >> > - #endif > >> > - return 0; > >> > - > >> > -@@ -477,8 +485,8 @@ > >> > - { > >> > - #ifdef DRM_MTRR_WC > >> > - drm_mtrr_del(vbox->fb_mtrr, > >> > -- pci_resource_start(vbox->dev->pdev, 0), > >> > -- pci_resource_len(vbox->dev->pdev, 0), > DRM_MTRR_WC); > >> > -+ > pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0), > >> > -+ pci_resource_len(VBOX_DRM_TO_PCI_DEV(vbox->dev), > 0), DRM_MTRR_WC); > >> > - #else > >> > - arch_phys_wc_del(vbox->fb_mtrr); > >> > - #endif > >> > -@@ -560,6 +568,9 @@ > >> > - static const struct drm_gem_object_funcs vbox_drm_gem_object_funcs > = { > >> > - .free = vbox_gem_free_object, > >> > - .print_info = drm_gem_ttm_print_info, > >> > -+# if RTLNX_VER_MIN(5,14,0) > >> > -+ .mmap = drm_gem_ttm_mmap, > >> > -+# endif > >> > - }; > >> > - #endif > >> > - > >> > -@@ -598,6 +609,17 @@ > >> > - sizeof(struct vbox_bo)); > >> > - #endif > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ /* Initialization of the following was removed from DRM stack > >> > -+ * in 5.14, so we need to do it manually. */ > >> > -+ vboxbo->bo.base.funcs = &vbox_drm_gem_object_funcs; > >> > -+ kref_init(&vboxbo->bo.base.refcount); > >> > -+ vboxbo->bo.base.size = size; > >> > -+ vboxbo->bo.base.dev = dev; > >> > -+ dma_resv_init(&vboxbo->bo.base._resv); > >> > -+ drm_vma_node_reset(&vboxbo->bo.base.vma_node); > >> > -+#endif > >> > -+ > >> > - ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size, > >> > - ttm_bo_type_device, &vboxbo->placement, > >> > - #if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && > !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) > >> > -@@ -613,7 +635,11 @@ > >> > - NULL, vbox_bo_ttm_destroy); > >> > - #endif > >> > - if (ret) > >> > -- goto err_free_vboxbo; > >> > -+ { > >> > -+ /* In case of failure, ttm_bo_init() supposed to call > >> > -+ * vbox_bo_ttm_destroy() which in turn will free > @vboxbo. */ > >> > -+ goto err_exit; > >> > -+ } > >> > - > >> > - *pvboxbo = vboxbo; > >> > - > >> > -@@ -621,12 +647,15 @@ > >> > - > >> > - err_free_vboxbo: > >> > - kfree(vboxbo); > >> > -+err_exit: > >> > - return ret; > >> > - } > >> > - > >> > - static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo) > >> > - { > >> > --#if RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || > RTLNX_SUSE_MAJ_PREREQ(15,3) > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ return bo->bo.resource->start << PAGE_SHIFT; > >> > -+#elif RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || > RTLNX_SUSE_MAJ_PREREQ(15,3) > >> > - return bo->bo.mem.start << PAGE_SHIFT; > >> > - #else > >> > - return bo->bo.offset; > >> > -@@ -685,7 +714,7 @@ > >> > - struct ttm_operation_ctx ctx = { false, false }; > >> > - # endif > >> > - #endif > >> > -- int ret; > >> > -+ int ret = 0; > >> > - #if RTLNX_VER_MAX(5,11,0) > >> > - int i; > >> > - #endif > >> > -@@ -765,6 +794,7 @@ > >> > - { > >> > - struct drm_file *file_priv; > >> > - struct vbox_private *vbox; > >> > -+ int ret = -EINVAL; > >> > - > >> > - if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) > >> > - return -EINVAL; > >> > -@@ -772,5 +802,12 @@ > >> > - file_priv = filp->private_data; > >> > - vbox = file_priv->minor->dev->dev_private; > >> > - > >> > -- return ttm_bo_mmap(filp, vma, &vbox->ttm.bdev); > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ if (drm_dev_is_unplugged(file_priv->minor->dev)) > >> > -+ return -ENODEV; > >> > -+ ret = drm_gem_mmap(filp, vma); > >> > -+#else > >> > -+ ret = ttm_bo_mmap(filp, vma, &vbox->ttm.bdev); > >> > -+#endif > >> > -+ return ret; > >> > - } > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_fb.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_fb.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_fb.c (revision 90498) > >> > -@@ -301,7 +301,9 @@ > >> > - return ret; > >> > - } > >> > - > >> > --#if RTLNX_VER_MIN(5,12,0) > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, > &bo->kmap); > >> > -+#elif RTLNX_VER_MIN(5,12,0) > >> > - ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, > &bo->kmap); > >> > - #else > >> > - ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); > >> > -@@ -337,8 +339,8 @@ > >> > - * This seems to be done for safety checking that the > framebuffer > >> > - * is not registered twice by different drivers. > >> > - */ > >> > -- info->apertures->ranges[0].base = > pci_resource_start(dev->pdev, 0); > >> > -- info->apertures->ranges[0].size = pci_resource_len(dev->pdev, > 0); > >> > -+ info->apertures->ranges[0].base = > pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0); > >> > -+ info->apertures->ranges[0].size = > pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0); > >> > - > >> > - #if RTLNX_VER_MIN(5,2,0) || RTLNX_RHEL_MAJ_PREREQ(8,2) > >> > - /* > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_drv.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_drv.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_drv.c (revision 90498) > >> > -@@ -43,6 +43,10 @@ > >> > - # include > >> > - #endif > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+# include > >> > -+#endif > >> > -+ > >> > - #include "version-generated.h" > >> > - #include "revision-generated.h" > >> > - > >> > -@@ -65,12 +69,23 @@ > >> > - struct drm_device *dev = NULL; > >> > - int ret = 0; > >> > - > >> > -+# if RTLNX_VER_MIN(5,14,0) > >> > -+ ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, > "vboxvideofb"); > >> > -+ if (ret) > >> > -+ { > >> > -+ printk("unable to remove conflicting framebuffer > devices\n"); > >> > -+ return ret; > >> > -+ } > >> > -+# endif /* 5.14 */ > >> > -+ > >> > - dev = drm_dev_alloc(&driver, &pdev->dev); > >> > - if (IS_ERR(dev)) { > >> > - ret = PTR_ERR(dev); > >> > - goto err_drv_alloc; > >> > - } > >> > -+#if RTLNX_VER_MAX(5,14,0) > >> > - dev->pdev = pdev; > >> > -+#endif > >> > - pci_set_drvdata(pdev, dev); > >> > - > >> > - ret = vbox_driver_load(dev); > >> > -@@ -125,7 +140,7 @@ > >> > - > >> > - drm_kms_helper_poll_disable(dev); > >> > - > >> > -- pci_save_state(dev->pdev); > >> > -+ pci_save_state(VBOX_DRM_TO_PCI_DEV(dev)); > >> > - > >> > - drm_fb_helper_set_suspend_unlocked(&vbox->fbdev->helper, > true); > >> > - > >> > -@@ -147,7 +162,7 @@ > >> > - { > >> > - int ret; > >> > - > >> > -- if (pci_enable_device(dev->pdev)) > >> > -+ if (pci_enable_device(VBOX_DRM_TO_PCI_DEV(dev))) > >> > - return -EIO; > >> > - > >> > - ret = vbox_drm_thaw(dev); > >> > -Index: a/src/VBox/Additions/linux/drm/vbox_irq.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/drm/vbox_irq.c (revision 89690) > >> > -+++ a/src/VBox/Additions/linux/drm/vbox_irq.c (revision 90498) > >> > -@@ -206,7 +206,7 @@ > >> > - INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker); > >> > - vbox_update_mode_hints(vbox); > >> > - #if RTLNX_VER_MIN(3,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,1) > >> > -- return drm_irq_install(vbox->dev, vbox->dev->pdev->irq); > >> > -+ return drm_irq_install(vbox->dev, > VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq); > >> > - #else > >> > - return drm_irq_install(vbox->dev); > >> > - #endif > >> > diff --git > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch > >> > deleted file mode 100644 > >> > index 0d960fa4f..000000000 > >> > --- > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch > >> > +++ /dev/null > >> > @@ -1,118 +0,0 @@ > >> > -Subject: Fix regops build errors with linux 5.14 > >> > - > >> > -Upstream-Status: backport > >> > - > >> > -svn-id: r90497 > >> > - > >> > -Signed-off-by: Bruce Ashfield > >> > - > >> > -Index: a/src/VBox/Additions/linux/sharedfolders/regops.c > >> > -=================================================================== > >> > ---- a/src/VBox/Additions/linux/sharedfolders/regops.c (revision > 88716) > >> > -+++ a/src/VBox/Additions/linux/sharedfolders/regops.c (revision > 90497) > >> > -@@ -2126,7 +2126,11 @@ > >> > - int rc = 0; > >> > - > >> > - Assert(iov_iter_count(iter) + pStash->cb > 0); > >> > -+# if RTLNX_VER_MIN(5,14,0) > >> > -+ if (!(iter->iter_type & ITER_KVEC)) { > >> > -+#else > >> > - if (!(iter->type & ITER_KVEC)) { > >> > -+#endif > >> > - /* > >> > - * Do we have a stashed page? > >> > - */ > >> > -@@ -2372,7 +2376,9 @@ > >> > - static size_t vbsf_iter_max_span_of_pages(struct iov_iter *iter) > >> > - { > >> > - size_t cPages; > >> > --# if RTLNX_VER_MIN(3,16,0) > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+ if (iter_is_iovec(iter) || (iter->iter_type & ITER_KVEC)) { > >> > -+#elif RTLNX_VER_MIN(3,16,0) > >> > - if (iter_is_iovec(iter) || (iter->type & ITER_KVEC)) { > >> > - #endif > >> > - const struct iovec *pCurIov = iter->iov; > >> > -@@ -2436,7 +2442,11 @@ > >> > - } else { > >> > - /* Won't bother with accurate counts for the next two > types, just make > >> > - some rough estimates (does pipes have segments?): */ > >> > -+# if RTLNX_VER_MIN(5,14,0) > >> > -+ size_t cSegs = iter->iter_type & ITER_BVEC ? RT_MAX(1, > iter->nr_segs) : 1; > >> > -+# else > >> > - size_t cSegs = iter->type & ITER_BVEC ? RT_MAX(1, > iter->nr_segs) : 1; > >> > -+#endif > >> > - cPages = (iov_iter_count(iter) + (PAGE_SIZE * 2 - 2) * > cSegs) >> PAGE_SHIFT; > >> > - } > >> > - # endif > >> > -@@ -2588,8 +2598,14 @@ > >> > - struct vbsf_reg_info *sf_r = kio->ki_filp->private_data; > >> > - struct vbsf_super_info *pSuperInfo = > VBSF_GET_SUPER_INFO(inode->i_sb); > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > - SFLOGFLOW(("vbsf_reg_read_iter: inode=%p file=%p size=%#zx > off=%#llx type=%#x\n", > >> > -+ inode, kio->ki_filp, cbToRead, kio->ki_pos, > iter->iter_type)); > >> > -+#else > >> > -+ SFLOGFLOW(("vbsf_reg_read_iter: inode=%p file=%p size=%#zx > off=%#llx type=%#x\n", > >> > - inode, kio->ki_filp, cbToRead, kio->ki_pos, > iter->type)); > >> > -+#endif > >> > -+ > >> > - AssertReturn(S_ISREG(inode->i_mode), -EINVAL); > >> > - > >> > - /* > >> > -@@ -2823,9 +2839,13 @@ > >> > - bool const fAppend = > RT_BOOL(kio->ki_filp->f_flags & O_APPEND); > >> > - # endif > >> > - > >> > -- > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > - SFLOGFLOW(("vbsf_reg_write_iter: inode=%p file=%p size=%#zx > off=%#llx type=%#x\n", > >> > -+ inode, kio->ki_filp, cbToWrite, offFile, > iter->iter_type)); > >> > -+#else > >> > -+ SFLOGFLOW(("vbsf_reg_write_iter: inode=%p file=%p size=%#zx > off=%#llx type=%#x\n", > >> > - inode, kio->ki_filp, cbToWrite, offFile, > iter->type)); > >> > -+#endif > >> > - AssertReturn(S_ISREG(inode->i_mode), -EINVAL); > >> > - > >> > - /* > >> > -@@ -3737,7 +3757,27 @@ > >> > - } > >> > - #endif /* KERNEL_VERSION >= 2.6.24 */ > >> > - > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > -+static int vbsf_write_end(struct file *file, struct address_space > *mapping, > >> > -+ loff_t pos, unsigned int len, unsigned int copied, > >> > -+ struct page *page, void *fsdata) > >> > -+{ > >> > -+ static uint64_t volatile s_cCalls = 0; > >> > -+ if (s_cCalls++ < 16) > >> > -+ { > >> > -+ printk("vboxsf: Unexpected call to vbsf_write_end(pos=%#llx > len=%#x)! Please report.\n", > >> > -+ (unsigned long long)pos, len); > >> > -+ RTLogBackdoorPrintf("vboxsf: Unexpected call to > vbsf_write_end(pos=%#llx len=%#x)! Please report.\n", > >> > -+ (unsigned long long)pos, len); > >> > -+# ifdef WARN_ON > >> > -+ WARN_ON(1); > >> > -+# endif > >> > -+ } > >> > - > >> > -+ return -ENOTSUPP; > >> > -+} > >> > -+#endif > >> > -+ > >> > - #if RTLNX_VER_MIN(2,4,10) > >> > - > >> > - # ifdef VBOX_UEK > >> > -@@ -3791,8 +3831,11 @@ > >> > - #if RTLNX_VER_MIN(2,5,12) > >> > - .set_page_dirty = __set_page_dirty_buffers, > >> > - #endif > >> > --#if RTLNX_VER_MIN(2,6,24) > >> > -+#if RTLNX_VER_MIN(5,14,0) > >> > - .write_begin = vbsf_write_begin, > >> > -+ .write_end = vbsf_write_end, > >> > -+#elif RTLNX_VER_MIN(2,6,24) > >> > -+ .write_begin = vbsf_write_begin, > >> > - .write_end = simple_write_end, > >> > - #elif RTLNX_VER_MIN(2,5,45) > >> > - .prepare_write = simple_prepare_write, > >> > diff --git a/meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.26.bb b/meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.28.bb > >> > similarity index 92% > >> > rename from meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.26.bb > >> > rename to meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.28.bb > >> > index 84651ae64..c7e73b222 100644 > >> > --- a/meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.26.bb > >> > +++ b/meta-oe/recipes-support/vboxguestdrivers/ > vboxguestdrivers_6.1.28.bb > >> > @@ -13,12 +13,10 @@ VBOX_NAME = "VirtualBox-${PV}" > >> > > >> > SRC_URI = " > http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \ > >> > file://Makefile.utils \ > >> > - file://r89690-5.14-fixes.patch \ > >> > - file://r90497-regops-5.14-fix.patch \ > >> > " > >> > > >> > -SRC_URI[md5sum] = "fce04bbef244b4df1a50e53d132d3e6f" > >> > -SRC_URI[sha256sum] = > "0212602eea878d6c9fd7f4a3e0182da3e4505f31d25f5539fb8f7b1fbe366195" > >> > +SRC_URI[md5sum] = "c6efae8dc115b90c6124e13126794c4f" > >> > +SRC_URI[sha256sum] = > "8d34993d8e9c0cf35e7bd44dd26c8c757f17a3b7d5a64052f945d00fd798ebfe" > >> > > >> > S ?= "${WORKDIR}/vbox_module" > >> > S:task-patch = "${WORKDIR}/${VBOX_NAME}" > >> > -- > >> > 2.25.1 > >> > > >> > > >> > -=-=-=-=-=-=-=-=-=-=-=- > >> > Links: You receive all messages sent to this group. > >> > View/Reply Online (#93478): > https://lists.openembedded.org/g/openembedded-devel/message/93478 > >> > Mute This Topic: https://lists.openembedded.org/mt/86462001/1997914 > >> > Group Owner: openembedded-devel+owner@lists.openembedded.org > >> > Unsubscribe: > https://lists.openembedded.org/g/openembedded-devel/unsub [ > raj.khem@gmail.com] > >> > -=-=-=-=-=-=-=-=-=-=-=- > >> > > --000000000000d806d905ceedf082 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,
FYI I traced down the upstream chang= e that introduced this regression:
https://www= .virtualbox.org/changeset?reponame=3Dvbox&new=3D91232%40trunk%2Finclude= %2Fiprt%2Fstdarg.h&old=3D82968%40trunk%2Finclude%2Fiprt%2Fstdarg.h<= /div>

--- a/vboxsf/include/iprt/stdarg.h
+++ b/vboxsf= /include/iprt/stdarg.h
@@ -43,13 +43,6 @@
=C2=A0# =C2=A0if __GNUC__ &= gt;=3D 4 /* System headers refers to __builtin_stdarg_start. */
=C2=A0# = =C2=A0 define __builtin_stdarg_start __builtin_va_start
=C2=A0# =C2=A0en= dif
-# elif defined(RT_OS_LINUX) && defined(IN_RING0)
-# =C2= =A0include "linux/version.h"
-# =C2=A0if RTLNX_VER_MIN(5,15,0)=
-# =C2=A0 include <linux/stdarg.h>
-# =C2=A0else
-# =C2=A0 = include <stdarg.h>
-# =C2=A0endif
=C2=A0# else
=C2=A0# =C2= =A0include <stdarg.h>
=C2=A0# endif

I did= grep into the kernel source code and that files is already included in lot= s of places and drivers.

I honestly think that fil= e should be ship into STAGING_KERNEL_DIR instead of STAGING_KERNEL_BUILDDIR=
because other binaries will need it probably in the future.
But this change needs to be done in poky, not meta-openembedded.

For now I'm submitting you a patch that does this:=
+ =C2=A0 =C2=A0# hack to include in the source directory the uts= release.h file, making the build succeed.
+ =C2=A0 =C2=A0# this might be= removed in future releases if the kernel starts shipping this generated fi= le into KERNEL_DIR and not KERNEL_BUILDDIR
+ =C2=A0 =C2=A0ln -snf ${STAG= ING_KERNEL_BUILDDIR}/include/* ${S}/vboxsf/include

fixing the build.
(please let me know if you can forward the req= uest to poky/kernel devs)

Gianfranco
=

= Il giorno gio 21 ott 2021 alle ore 00:28 Khem Raj <raj.khem@gmail.com> ha scritto:
On Wed, Oct 20, 2021 at 2:26 PM Gia= nfranco Costamagna
<co= stamagna.gianfranco@gmail.com> wrote:
>
> Hello,
> any idea is welcome, I can't yet figure out why this file is not i= n recipes-sysroot or whatever.
> Do you have any help? Of course copy-pasting the "generated"= directory from the kernel build artifacts works,
> but I think there should a better way than patching the kernel recipe.= ..
>

this file should be in kernel-build-artifacts, so I wonder why this is
not available. Bruce any ideas ?

> Gianfranco
>
> Il giorno mer 20 ott 2021 alle ore 21:32 Khem Raj <raj.khem@gmail.com> ha scrit= to:
>>
>> seeing this failure on qemux86
>>
>> https://errors.yoctoproject.org/Error= s/Details/613563/
>>
>> On Wed, Oct 20, 2021 at 3:56 AM Gianfranco
>> <costamagna.gianfranco@gmail.com> wrote:
>> >
>> > drop two upstream cherry-pick patches:
>> > r89690-5.14-fixes.patch
>> > r90497-regops-5.14-fix.patch
>> >
>> > Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.i= t>
>> > Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org><= br> >> > ---
>> >=C2=A0 .../vboxguestdrivers/r89690-5.14-fixes.patch=C2=A0 | 44= 2 ------------------
>> >=C2=A0 .../r90497-regops-5.14-fix.patch=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 118 -----
>> >=C2=A0 ...s_6.1.26.bb =3D> vboxguestdrivers_6.1.28.bb<= /a>} |=C2=A0 =C2=A06 +-
>> >=C2=A0 3 files changed, 2 insertions(+), 564 deletions(-)
>> >=C2=A0 delete mode 100644 meta-oe/recipes-support/vboxguestdri= vers/vboxguestdrivers/r89690-5.14-fixes.patch
>> >=C2=A0 delete mode 100644 meta-oe/recipes-support/vboxguestdri= vers/vboxguestdrivers/r90497-regops-5.14-fix.patch
>> >=C2=A0 rename meta-oe/recipes-support/vboxguestdrivers/{
vboxguestdrivers_6.1.26.bb =3D> vboxguestdrivers_6.1.28.bb= } (92%)
>> >
>> > diff --git a/meta-oe/recipes-support/vboxguestdrivers/vboxgue= stdrivers/r89690-5.14-fixes.patch b/meta-oe/recipes-support/vboxguestdriver= s/vboxguestdrivers/r89690-5.14-fixes.patch
>> > deleted file mode 100644
>> > index 951bd5013..000000000
>> > --- a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrive= rs/r89690-5.14-fixes.patch
>> > +++ /dev/null
>> > @@ -1,442 +0,0 @@
>> > -Subject: Fix build errors with linux 5.14
>> > -
>> > -Upstream-Status: backport
>> > -
>> > -svn-id: r89690
>> > -
>> > -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
>> > -
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_drv.h
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_drv.h=C2=A0 (revisio= n 89690)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_drv.h=C2=A0 (revisio= n 90498)
>> > -@@ -227,6 +227,15 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sizeof(HGSMIHOSTFLAGS))=
>> > - #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE
>> > -
>> > -+/** Field @pdev of struct drm_device was removed in 5.14. T= his macro
>> > -+ * transparently handles this change. Input argument is a p= ointer
>> > -+ * to struct drm_device. */
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+# define VBOX_DRM_TO_PCI_DEV(_dev) to_pci_dev(_dev->dev)=
>> > -+#else
>> > -+# define VBOX_DRM_TO_PCI_DEV(_dev) _dev->pdev
>> > -+#endif
>> > -+
>> > - /** How frequently we refresh if the guest is not providing= dirty rectangles. */
>> > - #define VBOX_REFRESH_PERIOD (HZ / 2)
>> > -
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_main.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_main.c (revision 896= 90)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_main.c (revision 904= 98)
>> > -@@ -290,7 +290,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Take a command buffer for each= screen from the end of usable VRAM. */
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox->available_vram_size -=3D= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
>> > -
>> > --=C2=A0 =C2=A0 =C2=A0 vbox->vbva_buffers =3D pci_iomap_ra= nge(vbox->dev->pdev, 0,
>> > -+=C2=A0 =C2=A0 =C2=A0 vbox->vbva_buffers =3D pci_iomap_ra= nge(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 vbox->available_vram_size,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 vbox->num_crtcs *
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 VBVA_MIN_BUFFER_SIZE);
>> > -@@ -311,7 +311,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
>> > -
>> > - err_pci_iounmap:
>> > --=C2=A0 =C2=A0 =C2=A0 pci_iounmap(vbox->dev->pdev, vbo= x->vbva_buffers);
>> > -+=C2=A0 =C2=A0 =C2=A0 pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox-&= gt;dev), vbox->vbva_buffers);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ret;
>> > - }
>> > -
>> > -@@ -318,7 +318,7 @@
>> > - static void vbox_accel_fini(struct vbox_private *vbox)
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox_disable_accel(vbox);
>> > --=C2=A0 =C2=A0 =C2=A0 pci_iounmap(vbox->dev->pdev, vbo= x->vbva_buffers);
>> > -+=C2=A0 =C2=A0 =C2=A0 pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox-&= gt;dev), vbox->vbva_buffers);
>> > - }
>> > -
>> > - /** Do we support the 4.3 plus mode hint reporting interfac= e? */
>> > -@@ -393,7 +393,7 @@
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Map guest-heap at end of vram = */
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox->guest_heap =3D
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pci_iomap_range(vbox->= ;dev->pdev, 0, GUEST_HEAP_OFFSET(vbox),
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pci_iomap_range(VBOX_DRM= _TO_PCI_DEV(vbox->dev), 0, GUEST_HEAP_OFFSET(vbox),
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0GUEST_HEAP_SIZE);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!vbox->guest_heap)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n -ENOMEM;
>> > -@@ -442,7 +442,7 @@
>> > - err_destroy_guest_pool:
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0gen_pool_destroy(vbox->guest_p= ool);
>> > - err_unmap_guest_heap:
>> > --=C2=A0 =C2=A0 =C2=A0 pci_iounmap(vbox->dev->pdev, vbo= x->guest_heap);
>> > -+=C2=A0 =C2=A0 =C2=A0 pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox-&= gt;dev), vbox->guest_heap);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ret;
>> > - }
>> > -
>> > -@@ -452,7 +452,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0cancel_delayed_work(&vbox->= ;refresh_work);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox_accel_fini(vbox);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0gen_pool_destroy(vbox->guest_p= ool);
>> > --=C2=A0 =C2=A0 =C2=A0 pci_iounmap(vbox->dev->pdev, vbo= x->guest_heap);
>> > -+=C2=A0 =C2=A0 =C2=A0 pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox-&= gt;dev), vbox->guest_heap);
>> > - }
>> > -
>> > - #if RTLNX_VER_MIN(4,19,0) || RTLNX_RHEL_MIN(8,3)
>> > -@@ -567,12 +567,16 @@
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0size =3D roundup(size, PAGE_SIZE)= ;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (size =3D=3D 0)
>> > -+=C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DRM_ERROR(= "bad size\n");
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n -EINVAL;
>> > -+=C2=A0 =C2=A0 =C2=A0 }
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D vbox_bo_create(dev, size,= 0, 0, &vboxbo);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret) {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (r= et !=3D -ERESTARTSYS)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0DRM_ERROR("failed to allocate GEM object\n&quo= t;);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DRM_ERROR(= "failed to allocate GEM (%d)\n", ret);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n ret;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -
>> > -@@ -628,6 +632,21 @@
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct vbox_bo *vbox_bo =3D gem_t= o_vbox_bo(obj);
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 /* Starting from kernel 5.14, there is= a warning appears in dmesg
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0* on attempt to desroy pinned bu= ffer object. Make sure it is unpinned. */
>> > -+=C2=A0 =C2=A0 =C2=A0 while (vbox_bo->bo.pin_count)
>> > -+=C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int ret; >> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D vb= ox_bo_unpin(vbox_bo);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ret) >> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 DRM_ERROR("unable to unpin buffer object\n"); >> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 break;
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>> > -+=C2=A0 =C2=A0 =C2=A0 }
>> > -+#endif
>> > -+
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ttm_bo_put(&vbox_bo->bo);<= br> >> > - }
>> > -
>> > -@@ -648,7 +667,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0u32 handle, u64 *offset)
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct drm_gem_object *obj;
>> > --=C2=A0 =C2=A0 =C2=A0 int ret;
>> > -+=C2=A0 =C2=A0 =C2=A0 int ret =3D 0;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct vbox_bo *bo;
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0mutex_lock(&dev->struct_mu= tex);
>> > -@@ -665,8 +684,15 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0bo =3D gem_to_vbox_bo(obj);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0*offset =3D vbox_bo_mmap_offset(b= o);
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D drm_vma_node_allow(&bo->= ;bo.base.vma_node, file);
>> > -+=C2=A0 =C2=A0 =C2=A0 if (ret)
>> > -+=C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DRM_ERROR(= "unable to grant previladges to user");
>> > -+=C2=A0 =C2=A0 =C2=A0 }
>> > -+#endif
>> > -+
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0drm_gem_object_put(obj);
>> > --=C2=A0 =C2=A0 =C2=A0 ret =3D 0;
>> > -
>> > - out_unlock:
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0mutex_unlock(&dev->struct_= mutex);
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_mode.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 896= 90)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 904= 98)
>> > -@@ -245,6 +245,10 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0vbox_bo_unpin(bo);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0vbox_bo_unreserve(bo);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 DRM_ERROR("unable to lock buffer object: error %d\n&= quot;, ret);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (&vbox->fbdev->afb = =3D=3D vbox_fb)
>> > -@@ -856,7 +860,9 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox->cursor_data_size =3D dat= a_size;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0dst =3D vbox->cursor_data;
>> > -
>> > --#if RTLNX_VER_MIN(5,12,0)
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D ttm_bo_kmap(&bo->bo, 0,= bo->bo.resource->num_pages, &uobj_map);
>> > -+#elif RTLNX_VER_MIN(5,12,0)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D ttm_bo_kmap(&bo->b= o, 0, bo->bo.mem.num_pages, &uobj_map);
>> > - #else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D ttm_bo_kmap(&bo->b= o, 0, bo->bo.num_pages, &uobj_map);
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_ttm.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_ttm.c=C2=A0 (revisio= n 89690)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_ttm.c=C2=A0 (revisio= n 90498)
>> > -@@ -41,6 +41,10 @@
>> > - # include <drm/ttm/ttm_page_alloc.h>
>> > - #endif
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+# include <drm/ttm/ttm_range_manager.h>
>> > -+#endif
>> > -+
>> > - #if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ= (7,2)
>> > - #define PLACEMENT_FLAGS(placement) (placement)
>> > - #else
>> > -@@ -174,11 +178,13 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0*pl =3D vboxbo->placement;
>> > - }
>> > -
>> > -+#if RTLNX_VER_MAX(5,14,0)
>> > - static int vbox_bo_verify_access(struct ttm_buffer_object *= bo,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct file *filp)
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
>> > - }
>> > -+#endif
>> > -
>> > - #if RTLNX_VER_MAX(5,10,0)
>> > - static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bd= ev,
>> > -@@ -234,10 +240,10 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mem-&= gt;bus.caching =3D ttm_write_combined;
>> > - # endif
>> > - # if RTLNX_VER_MIN(5,10,0)
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mem->bu= s.offset =3D (mem->start << PAGE_SHIFT) + pci_resource_start(vbox-= >dev->pdev, 0);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mem->bu= s.offset =3D (mem->start << PAGE_SHIFT) + pci_resource_start(VBOX_= DRM_TO_PCI_DEV(vbox->dev), 0);
>> > - # else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mem-&= gt;bus.offset =3D mem->start << PAGE_SHIFT;
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mem->st= art =3D pci_resource_start(vbox->dev->pdev, 0);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mem->st= art =3D pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0);
>> > - # endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mem-&= gt;bus.is_iomem =3D true;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break= ;
>> > -@@ -373,7 +379,9 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.eviction_valuable =3D ttm_bo_evi= ction_valuable,
>> > - #endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.evict_flags =3D vbox_bo_evict_fl= ags,
>> > -+#if RTLNX_VER_MAX(5,14,0)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.verify_access =3D vbox_bo_verify= _access,
>> > -+#endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.io_mem_reserve =3D &vbox_ttm= _io_mem_reserve,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.io_mem_free =3D &vbox_ttm_io= _mem_free,
>> > - #if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
>> > -@@ -451,12 +459,12 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -
>> > - #ifdef DRM_MTRR_WC
>> > --=C2=A0 =C2=A0 =C2=A0 vbox->fb_mtrr =3D drm_mtrr_add(pci_= resource_start(dev->pdev, 0),
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pci_resou= rce_len(dev->pdev, 0),
>> > -+=C2=A0 =C2=A0 =C2=A0 vbox->fb_mtrr =3D drm_mtrr_add(pci_= resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0),
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pci_resou= rce_len(VBOX_DRM_TO_PCI_DEV(dev), 0),
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DRM_MTRR= _WC);
>> > - #else
>> > --=C2=A0 =C2=A0 =C2=A0 vbox->fb_mtrr =3D arch_phys_wc_add(= pci_resource_start(dev->pdev, 0),
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0pci_resource_len(dev->pdev, 0));
>> > -+=C2=A0 =C2=A0 =C2=A0 vbox->fb_mtrr =3D arch_phys_wc_add(= pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0),
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0));
>> > - #endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
>> > -
>> > -@@ -477,8 +485,8 @@
>> > - {
>> > - #ifdef DRM_MTRR_WC
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0drm_mtrr_del(vbox->fb_mtrr, >> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0pci_resource_start(vbox->dev->pdev, 0),
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0pci_resource_len(vbox->dev->pdev, 0), DRM_MTRR_WC);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0),
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0pci_resource_len(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0), DRM_MTRR_= WC);
>> > - #else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0arch_phys_wc_del(vbox->fb_mtrr= );
>> > - #endif
>> > -@@ -560,6 +568,9 @@
>> > - static const struct drm_gem_object_funcs vbox_drm_gem_objec= t_funcs =3D {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.free=C2=A0 =C2=A0=3D vbox_gem_fr= ee_object,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0.print_info =3D drm_gem_ttm_print= _info,
>> > -+# if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 .mmap =3D drm_gem_ttm_mmap,
>> > -+# endif
>> > - };
>> > - #endif
>> > -
>> > -@@ -598,6 +609,17 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 s= izeof(struct vbox_bo));
>> > - #endif
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 /* Initialization of the following was= removed from DRM stack
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0* in 5.14, so we need to do it m= anually. */
>> > -+=C2=A0 =C2=A0 =C2=A0 vboxbo->bo.base.funcs =3D &vbox= _drm_gem_object_funcs;
>> > -+=C2=A0 =C2=A0 =C2=A0 kref_init(&vboxbo->bo.base.refc= ount);
>> > -+=C2=A0 =C2=A0 =C2=A0 vboxbo->bo.base.size =3D size;
>> > -+=C2=A0 =C2=A0 =C2=A0 vboxbo->bo.base.dev =3D dev;
>> > -+=C2=A0 =C2=A0 =C2=A0 dma_resv_init(&vboxbo->bo.base.= _resv);
>> > -+=C2=A0 =C2=A0 =C2=A0 drm_vma_node_reset(&vboxbo->bo.= base.vma_node);
>> > -+#endif
>> > -+
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D ttm_bo_init(&vbox->= ;ttm.bdev, &vboxbo->bo, size,
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ttm_bo_type_device, &vboxbo->placemen= t,
>> > - #if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ= (7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PR= EREQ(12,5)
>> > -@@ -613,7 +635,11 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NULL, vbox_bo_ttm_destroy);
>> > - #endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ret)
>> > --=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_f= ree_vboxbo;
>> > -+=C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* In case= of failure, ttm_bo_init() supposed to call
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* vb= ox_bo_ttm_destroy() which in turn will free @vboxbo. */
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto err_e= xit;
>> > -+=C2=A0 =C2=A0 =C2=A0 }
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0*pvboxbo =3D vboxbo;
>> > -
>> > -@@ -621,12 +647,15 @@
>> > -
>> > - err_free_vboxbo:
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0kfree(vboxbo);
>> > -+err_exit:
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return ret;
>> > - }
>> > -
>> > - static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo) >> > - {
>> > --#if RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SU= SE_MAJ_PREREQ(15,3)
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 return bo->bo.resource->start &l= t;< PAGE_SHIFT;
>> > -+#elif RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_= SUSE_MAJ_PREREQ(15,3)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return bo->bo.mem.start <&l= t; PAGE_SHIFT;
>> > - #else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return bo->bo.offset;
>> > -@@ -685,7 +714,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct ttm_operation_ctx ctx =3D = { false, false };
>> > - # endif
>> > - #endif
>> > --=C2=A0 =C2=A0 =C2=A0 int ret;
>> > -+=C2=A0 =C2=A0 =C2=A0 int ret =3D 0;
>> > - #if RTLNX_VER_MAX(5,11,0)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0int i;
>> > - #endif
>> > -@@ -765,6 +794,7 @@
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct drm_file *file_priv;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct vbox_private *vbox;
>> > -+=C2=A0 =C2=A0 =C2=A0 int ret =3D -EINVAL;
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (unlikely(vma->vm_pgoff <= ; DRM_FILE_PAGE_OFFSET))
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n -EINVAL;
>> > -@@ -772,5 +802,12 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0file_priv =3D filp->private_da= ta;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox =3D file_priv->minor->= dev->dev_private;
>> > -
>> > --=C2=A0 =C2=A0 =C2=A0 return ttm_bo_mmap(filp, vma, &vbo= x->ttm.bdev);
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 if (drm_dev_is_unplugged(file_priv->= ;minor->dev))
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -EN= ODEV;
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D drm_gem_mmap(filp, vma);
>> > -+#else
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D ttm_bo_mmap(filp, vma, &vb= ox->ttm.bdev);
>> > -+#endif
>> > -+=C2=A0 =C2=A0 =C2=A0 return ret;
>> > - }
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_fb.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_fb.c=C2=A0 =C2=A0(re= vision 89690)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_fb.c=C2=A0 =C2=A0(re= vision 90498)
>> > -@@ -301,7 +301,9 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n ret;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -
>> > --#if RTLNX_VER_MIN(5,12,0)
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D ttm_bo_kmap(&bo->bo, 0,= bo->bo.resource->num_pages, &bo->kmap);
>> > -+#elif RTLNX_VER_MIN(5,12,0)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D ttm_bo_kmap(&bo->b= o, 0, bo->bo.mem.num_pages, &bo->kmap);
>> > - #else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D ttm_bo_kmap(&bo->b= o, 0, bo->bo.num_pages, &bo->kmap);
>> > -@@ -337,8 +339,8 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * This seems to be done for safe= ty checking that the framebuffer
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 * is not registered twice by dif= ferent drivers.
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 */
>> > --=C2=A0 =C2=A0 =C2=A0 info->apertures->ranges[0].base = =3D pci_resource_start(dev->pdev, 0);
>> > --=C2=A0 =C2=A0 =C2=A0 info->apertures->ranges[0].size = =3D pci_resource_len(dev->pdev, 0);
>> > -+=C2=A0 =C2=A0 =C2=A0 info->apertures->ranges[0].base = =3D pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0);
>> > -+=C2=A0 =C2=A0 =C2=A0 info->apertures->ranges[0].size = =3D pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0);
>> > -
>> > - #if RTLNX_VER_MIN(5,2,0) || RTLNX_RHEL_MAJ_PREREQ(8,2)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_drv.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_drv.c=C2=A0 (revisio= n 89690)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_drv.c=C2=A0 (revisio= n 90498)
>> > -@@ -43,6 +43,10 @@
>> > - # include <drm/drm_probe_helper.h>
>> > - #endif
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+# include <drm/drm_aperture.h>
>> > -+#endif
>> > -+
>> > - #include "version-generated.h"
>> > - #include "revision-generated.h"
>> > -
>> > -@@ -65,12 +69,23 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0struct drm_device *dev =3D NULL;<= br> >> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0int ret =3D 0;
>> > -
>> > -+# if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 ret =3D drm_aperture_remove_conflictin= g_pci_framebuffers(pdev, "vboxvideofb");
>> > -+=C2=A0 =C2=A0 =C2=A0 if (ret)
>> > -+=C2=A0 =C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 printk(&qu= ot;unable to remove conflicting framebuffer devices\n");
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return ret= ;
>> > -+=C2=A0 =C2=A0 =C2=A0 }
>> > -+# endif /* 5.14 */
>> > -+
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0dev =3D drm_dev_alloc(&driver= , &pdev->dev);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0if (IS_ERR(dev)) {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret = =3D PTR_ERR(dev);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto = err_drv_alloc;
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> > -+#if RTLNX_VER_MAX(5,14,0)
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0dev->pdev =3D pdev;
>> > -+#endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0pci_set_drvdata(pdev, dev);
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D vbox_driver_load(dev); >> > -@@ -125,7 +140,7 @@
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0drm_kms_helper_poll_disable(dev);=
>> > -
>> > --=C2=A0 =C2=A0 =C2=A0 pci_save_state(dev->pdev);
>> > -+=C2=A0 =C2=A0 =C2=A0 pci_save_state(VBOX_DRM_TO_PCI_DEV(dev= ));
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0drm_fb_helper_set_suspend_unlocke= d(&vbox->fbdev->helper, true);
>> > -
>> > -@@ -147,7 +162,7 @@
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0int ret;
>> > -
>> > --=C2=A0 =C2=A0 =C2=A0 if (pci_enable_device(dev->pdev)) >> > -+=C2=A0 =C2=A0 =C2=A0 if (pci_enable_device(VBOX_DRM_TO_PCI_= DEV(dev)))
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur= n -EIO;
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D vbox_drm_thaw(dev);
>> > -Index: a/src/VBox/Additions/linux/drm/vbox_irq.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/drm/vbox_irq.c=C2=A0 (revisio= n 89690)
>> > -+++ a/src/VBox/Additions/linux/drm/vbox_irq.c=C2=A0 (revisio= n 90498)
>> > -@@ -206,7 +206,7 @@
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0INIT_WORK(&vbox->hotplug_w= ork, vbox_hotplug_worker);
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0vbox_update_mode_hints(vbox);
>> > - #if RTLNX_VER_MIN(3,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
>> > --=C2=A0 =C2=A0 =C2=A0 return drm_irq_install(vbox->dev, v= box->dev->pdev->irq);
>> > -+=C2=A0 =C2=A0 =C2=A0 return drm_irq_install(vbox->dev, V= BOX_DRM_TO_PCI_DEV(vbox->dev)->irq);
>> > - #else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0return drm_irq_install(vbox->d= ev);
>> > - #endif
>> > diff --git a/meta-oe/recipes-support/vboxguestdrivers/vboxgue= stdrivers/r90497-regops-5.14-fix.patch b/meta-oe/recipes-support/vboxguestd= rivers/vboxguestdrivers/r90497-regops-5.14-fix.patch
>> > deleted file mode 100644
>> > index 0d960fa4f..000000000
>> > --- a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrive= rs/r90497-regops-5.14-fix.patch
>> > +++ /dev/null
>> > @@ -1,118 +0,0 @@
>> > -Subject: Fix regops build errors with linux 5.14
>> > -
>> > -Upstream-Status: backport
>> > -
>> > -svn-id: r90497
>> > -
>> > -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
>> > -
>> > -Index: a/src/VBox/Additions/linux/sharedfolders/regops.c
>> > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> > ---- a/src/VBox/Additions/linux/sharedfolders/regops.c=C2=A0 = (revision 88716)
>> > -+++ a/src/VBox/Additions/linux/sharedfolders/regops.c=C2=A0 = (revision 90497)
>> > -@@ -2126,7 +2126,11 @@
>> > -=C2=A0 =C2=A0 =C2=A0int=C2=A0 =C2=A0 rc=C2=A0 =C2=A0 =C2=A0 = =C2=A0=3D 0;
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0Assert(iov_iter_count(iter) + pStash->= ;cb > 0);
>> > -+# if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 if (!(iter->iter_type & ITER_KVEC)) {<= br> >> > -+#else
>> > -=C2=A0 =C2=A0 =C2=A0if (!(iter->type & ITER_KVEC)) {<= br> >> > -+#endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * Do we have a stashed pa= ge?
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 */
>> > -@@ -2372,7 +2376,9 @@
>> > - static size_t vbsf_iter_max_span_of_pages(struct iov_iter *= iter)
>> > - {
>> > -=C2=A0 =C2=A0 =C2=A0size_t cPages;
>> > --# if RTLNX_VER_MIN(3,16,0)
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 if (iter_is_iovec(iter) || (iter->iter_typ= e & ITER_KVEC)) {
>> > -+#elif RTLNX_VER_MIN(3,16,0)
>> > -=C2=A0 =C2=A0 =C2=A0if (iter_is_iovec(iter) || (iter->typ= e & ITER_KVEC)) {
>> > - #endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0const struct iovec *pCurIo= v=C2=A0 =C2=A0 =3D iter->iov;
>> > -@@ -2436,7 +2442,11 @@
>> > -=C2=A0 =C2=A0 =C2=A0} else {
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Won't bother with a= ccurate counts for the next two types, just make
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 some rough estimat= es (does pipes have segments?): */
>> > -+#=C2=A0 if RTLNX_VER_MIN(5,14,0)
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 size_t cSegs =3D iter->iter_= type & ITER_BVEC ? RT_MAX(1, iter->nr_segs) : 1;
>> > -+#=C2=A0 else
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0size_t cSegs =3D iter->= type & ITER_BVEC ? RT_MAX(1, iter->nr_segs) : 1;
>> > -+#endif
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cPages =3D (iov_iter_count= (iter) + (PAGE_SIZE * 2 - 2) * cSegs) >> PAGE_SHIFT;
>> > -=C2=A0 =C2=A0 =C2=A0}
>> > - # endif
>> > -@@ -2588,8 +2598,14 @@
>> > -=C2=A0 =C2=A0 =C2=A0struct vbsf_reg_info=C2=A0 =C2=A0*sf_r= =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D kio->ki_filp->private_data;
>> > -=C2=A0 =C2=A0 =C2=A0struct vbsf_super_info *pSuperInfo =3D V= BSF_GET_SUPER_INFO(inode->i_sb);
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -=C2=A0 =C2=A0 =C2=A0SFLOGFLOW(("vbsf_reg_read_iter: ino= de=3D%p file=3D%p size=3D%#zx off=3D%#llx type=3D%#x\n",
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0inod= e, kio->ki_filp, cbToRead, kio->ki_pos, iter->iter_type));
>> > -+#else
>> > -+=C2=A0 =C2=A0 SFLOGFLOW(("vbsf_reg_read_iter: inode=3D= %p file=3D%p size=3D%#zx off=3D%#llx type=3D%#x\n",
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 inod= e, kio->ki_filp, cbToRead, kio->ki_pos, iter->type));
>> > -+#endif
>> > -+
>> > -=C2=A0 =C2=A0 =C2=A0AssertReturn(S_ISREG(inode->i_mode), = -EINVAL);
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0/*
>> > -@@ -2823,9 +2839,13 @@
>> > -=C2=A0 =C2=A0 =C2=A0bool const=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 fAppend=C2=A0 =C2=A0 =3D RT_BOOL(kio->ki_filp->f= _flags & O_APPEND);
>> > - # endif
>> > -
>> > --
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -=C2=A0 =C2=A0 =C2=A0SFLOGFLOW(("vbsf_reg_write_iter: in= ode=3D%p file=3D%p size=3D%#zx off=3D%#llx type=3D%#x\n",
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0inod= e, kio->ki_filp, cbToWrite, offFile, iter->iter_type));
>> > -+#else
>> > -+=C2=A0 =C2=A0 SFLOGFLOW(("vbsf_reg_write_iter: inode= =3D%p file=3D%p size=3D%#zx off=3D%#llx type=3D%#x\n",
>> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 inod= e, kio->ki_filp, cbToWrite, offFile, iter->type));
>> > -+#endif
>> > -=C2=A0 =C2=A0 =C2=A0AssertReturn(S_ISREG(inode->i_mode), = -EINVAL);
>> > -
>> > -=C2=A0 =C2=A0 =C2=A0/*
>> > -@@ -3737,7 +3757,27 @@
>> > - }
>> > - #endif /* KERNEL_VERSION >=3D 2.6.24 */
>> > -
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -+static int vbsf_write_end(struct file *file, struct address= _space *mapping,
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 lof= f_t pos, unsigned int len, unsigned int copied,
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 str= uct page *page, void *fsdata)
>> > -+{
>> > -+=C2=A0 =C2=A0 static uint64_t volatile s_cCalls =3D 0;
>> > -+=C2=A0 =C2=A0 if (s_cCalls++ < 16)
>> > -+=C2=A0 =C2=A0 {
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 printk("vboxsf: Unexpected= call to vbsf_write_end(pos=3D%#llx len=3D%#x)! Please report.\n",
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(uns= igned long long)pos, len);
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 RTLogBackdoorPrintf("vboxs= f: Unexpected call to vbsf_write_end(pos=3D%#llx len=3D%#x)!=C2=A0 Please r= eport.\n",
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (unsigned long long)pos, len);
>> > -+# ifdef WARN_ON
>> > -+=C2=A0 =C2=A0 =C2=A0 =C2=A0 WARN_ON(1);
>> > -+# endif
>> > -+=C2=A0 =C2=A0 }
>> > -
>> > -+=C2=A0 =C2=A0 return -ENOTSUPP;
>> > -+}
>> > -+#endif
>> > -+
>> > - #if RTLNX_VER_MIN(2,4,10)
>> > -
>> > - # ifdef VBOX_UEK
>> > -@@ -3791,8 +3831,11 @@
>> > - #if RTLNX_VER_MIN(2,5,12)
>> > -=C2=A0 =C2=A0 =C2=A0.set_page_dirty =3D __set_page_dirty_buf= fers,
>> > - #endif
>> > --#if RTLNX_VER_MIN(2,6,24)
>> > -+#if RTLNX_VER_MIN(5,14,0)
>> > -=C2=A0 =C2=A0 =C2=A0.write_begin=C2=A0 =C2=A0 =3D vbsf_write= _begin,
>> > -+=C2=A0 =C2=A0 .write_end=C2=A0 =C2=A0 =C2=A0 =3D vbsf_write= _end,
>> > -+#elif RTLNX_VER_MIN(2,6,24)
>> > -+=C2=A0 =C2=A0 .write_begin=C2=A0 =C2=A0 =3D vbsf_write_begi= n,
>> > -=C2=A0 =C2=A0 =C2=A0.write_end=C2=A0 =C2=A0 =C2=A0 =3D simpl= e_write_end,
>> > - #elif RTLNX_VER_MIN(2,5,45)
>> > -=C2=A0 =C2=A0 =C2=A0.prepare_write=C2=A0 =3D simple_prepare_= write,
>> > diff --git a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.26.bb b/meta-oe/recipes-support/vboxguestdrivers/= vboxguestdrivers_6.1.28.bb
>> > similarity index 92%
>> > rename from meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.26.bb
>> > rename to meta-oe/recipes-support/vboxguestdrivers/vb= oxguestdrivers_6.1.28.bb
>> > index 84651ae64..c7e73b222 100644
>> > --- a/meta-oe/recipes-support/vboxguestdrivers/vboxgu= estdrivers_6.1.26.bb
>> > +++ b/meta-oe/recipes-support/vboxguestdrivers/vboxgu= estdrivers_6.1.28.bb
>> > @@ -13,12 +13,10 @@ VBOX_NAME =3D "VirtualBox-${PV}"= ;
>> >
>> >=C2=A0 SRC_URI =3D "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.= tar.bz2 \
>> >=C2=A0 =C2=A0 =C2=A0 file://Makefile.utils \
>> > -=C2=A0 =C2=A0 file://r89690-5.14-fixes.patch \
>> > -=C2=A0 =C2=A0 file://r90497-regops-5.14-fix.patch \
>> >=C2=A0 "
>> >
>> > -SRC_URI[md5sum] =3D "fce04bbef244b4df1a50e53d132d3e6f&q= uot;
>> > -SRC_URI[sha256sum] =3D "0212602eea878d6c9fd7f4a3e0182da= 3e4505f31d25f5539fb8f7b1fbe366195"
>> > +SRC_URI[md5sum] =3D "c6efae8dc115b90c6124e13126794c4f&q= uot;
>> > +SRC_URI[sha256sum] =3D "8d34993d8e9c0cf35e7bd44dd26c8c7= 57f17a3b7d5a64052f945d00fd798ebfe"
>> >
>> >=C2=A0 S ?=3D "${WORKDIR}/vbox_module"
>> >=C2=A0 S:task-patch =3D "${WORKDIR}/${VBOX_NAME}" >> > --
>> > 2.25.1
>> >
>> >
>> > -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-
>> > Links: You receive all messages sent to this group.
>> > View/Reply Online (#93478): https://lists.openembedded.org/g/openembedded-devel/message/93478
>> > Mute This Topic:
https://lists.opene= mbedded.org/mt/86462001/1997914
>> > Group Owner: openembedded-devel+owner@lists.opene= mbedded.org
>> > Unsubscribe: https://lists.op= enembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
>> > -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-
>> >
--000000000000d806d905ceedf082--