its really not musl related but more related to building on x86(32bit)

On Thu, Jan 21, 2021 at 1:53 PM Gianfranco Costamagna
<[email protected]> wrote:
>
> Hello, I resubmitted with a little patch that fixes part (but not all) the 
> musl failures.
>
> Just to be clear, this seems to be not a regression, the current master with 
> 6.1.16 has the very same failures on i386.
>
> The current proposed patchset is not making the situation worse, and upstream 
> is having a look at the issue.
>
> Gianfranco
>
> Il giorno gio 21 gen 2021 alle ore 09:26 Khem Raj <[email protected]> ha 
> scritto:
>>
>> fails on musl/x86
>>
>> https://errors.yoctoproject.org/Errors/Details/541637/
>>
>> On Wed, Jan 20, 2021 at 5:01 AM Gianfranco
>> <[email protected]> wrote:
>> >
>> > Drop kernel 5.10 build fixes patches, now part of upstream codebase
>> >
>> > Signed-off-by: Gianfranco Costamagna <[email protected]>
>> > Signed-off-by: Gianfranco Costamagna <[email protected]>
>> > ---
>> >  ...-linux-drm-Adjustment-for-Linux-5.10.patch | 321 ------------------
>> >  ...0drv-linux.c-Changes-to-support-the-.patch | 119 -------
>> >  ...justment-for-linux-5.10-TASK_SIZE_MA.patch |  46 ---
>> >  ...s_6.1.16.bb => vboxguestdrivers_6.1.18.bb} |   7 +-
>> >  4 files changed, 2 insertions(+), 491 deletions(-)
>> >  delete mode 100644 
>> > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Additions-linux-drm-Adjustment-for-Linux-5.10.patch
>> >  delete mode 100644 
>> > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Runtime-memobj-r0drv-linux.c-Changes-to-support-the-.patch
>> >  delete mode 100644 
>> > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-linser-vboxsf-Adjustment-for-linux-5.10-TASK_SIZE_MA.patch
>> >  rename 
>> > meta-oe/recipes-support/vboxguestdrivers/{vboxguestdrivers_6.1.16.bb => 
>> > vboxguestdrivers_6.1.18.bb} (88%)
>> >
>> > diff --git 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Additions-linux-drm-Adjustment-for-Linux-5.10.patch
>> >  
>> > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Additions-linux-drm-Adjustment-for-Linux-5.10.patch
>> > deleted file mode 100644
>> > index a444901f8..000000000
>> > --- 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Additions-linux-drm-Adjustment-for-Linux-5.10.patch
>> > +++ /dev/null
>> > @@ -1,321 +0,0 @@
>> > -From b6c765d693a0833b94cb2e91b32842570c3458d2 Mon Sep 17 00:00:00 2001
>> > -From: vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>
>> > -Date: Tue, 15 Dec 2020 22:29:56 +0000
>> > -Subject: [PATCH] Additions/linux/drm: Adjustment for Linux 5.10.
>> > -
>> > -Upstream-Status: Backport
>> > -
>> > -git-svn-id: http://www.virtualbox.org/svn/vbox@87092 
>> > cfe28804-0f27-0410-a406-dd0f0b0b656f
>> > -
>> > -Signed-off-by: Bruce Ashfield <[email protected]>
>> > -
>> > ----
>> > - src/VBox/Additions/linux/drm/vbox_drv.h | 10 +-
>> > - src/VBox/Additions/linux/drm/vbox_fb.c  |  2 +-
>> > - .../src/VBox/Additions/linux/drm/vbox_mode.c  |  2 +-
>> > - src/VBox/Additions/linux/drm/vbox_ttm.c | 99 +++++++++++++++++--
>> > - 4 files changed, 99 insertions(+), 14 deletions(-)
>> > -
>> > -diff --git a/src/VBox/Additions/linux/drm/vbox_drv.h 
>> > b/src/VBox/Additions/linux/drm/vbox_drv.h
>> > -index 8c85371749..7937f2f2d2 100644
>> > ---- a/src/VBox/Additions/linux/drm/vbox_drv.h
>> > -+++ b/src/VBox/Additions/linux/drm/vbox_drv.h
>> > -@@ -175,6 +175,9 @@
>> > - #include <drm/ttm/ttm_placement.h>
>> > - #include <drm/ttm/ttm_memory.h>
>> > - #include <drm/ttm/ttm_module.h>
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+# include <drm/ttm/ttm_resource.h>
>> > -+#endif
>> > -
>> > - #include "vboxvideo_guest.h"
>> > - #include "vboxvideo_vbe.h"
>> > -@@ -444,7 +447,10 @@ int vbox_bo_create(struct drm_device *dev, int size, 
>> > int align,
>> > - int vbox_gem_create(struct drm_device *dev,
>> > -                   u32 size, bool iskernel, struct drm_gem_object **obj);
>> > -
>> > --int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr);
>> > -+#define VBOX_MEM_TYPE_VRAM   0x1
>> > -+#define VBOX_MEM_TYPE_SYSTEM 0x2
>> > -+
>> > -+int vbox_bo_pin(struct vbox_bo *bo, u32 mem_type, u64 *gpu_addr);
>> > - int vbox_bo_unpin(struct vbox_bo *bo);
>> > -
>> > - static inline int vbox_bo_reserve(struct vbox_bo *bo, bool no_wait)
>> > -@@ -469,7 +475,7 @@ static inline void vbox_bo_unreserve(struct vbox_bo 
>> > *bo)
>> > -       ttm_bo_unreserve(&bo->bo);
>> > - }
>> > -
>> > --void vbox_ttm_placement(struct vbox_bo *bo, int domain);
>> > -+void vbox_ttm_placement(struct vbox_bo *bo, u32 mem_type);
>> > - int vbox_bo_push_sysram(struct vbox_bo *bo);
>> > - int vbox_mmap(struct file *filp, struct vm_area_struct *vma);
>> > -
>> > -diff --git a/src/VBox/Additions/linux/drm/vbox_fb.c 
>> > b/src/VBox/Additions/linux/drm/vbox_fb.c
>> > -index adead98d3d..7182d9da1a 100644
>> > ---- a/src/VBox/Additions/linux/drm/vbox_fb.c
>> > -+++ b/src/VBox/Additions/linux/drm/vbox_fb.c
>> > -@@ -295,7 +295,7 @@ static int vboxfb_create(struct drm_fb_helper *helper,
>> > -       if (ret)
>> > -               return ret;
>> > -
>> > --      ret = vbox_bo_pin(bo, TTM_PL_FLAG_VRAM, NULL);
>> > -+      ret = vbox_bo_pin(bo, VBOX_MEM_TYPE_VRAM, NULL);
>> > -       if (ret) {
>> > -               vbox_bo_unreserve(bo);
>> > -               return ret;
>> > -diff --git a/src/VBox/Additions/linux/drm/vbox_mode.c 
>> > b/src/VBox/Additions/linux/drm/vbox_mode.c
>> > -index ce7d135cb6..5557db5ef8 100644
>> > ---- a/src/VBox/Additions/linux/drm/vbox_mode.c
>> > -+++ b/src/VBox/Additions/linux/drm/vbox_mode.c
>> > -@@ -227,7 +227,7 @@ static int vbox_crtc_set_base(struct drm_crtc *crtc,
>> > -       if (ret)
>> > -               return ret;
>> > -
>> > --      ret = vbox_bo_pin(bo, TTM_PL_FLAG_VRAM, &gpu_addr);
>> > -+      ret = vbox_bo_pin(bo, VBOX_MEM_TYPE_VRAM, &gpu_addr);
>> > -       vbox_bo_unreserve(bo);
>> > -       if (ret)
>> > -               return ret;
>> > -diff --git a/src/VBox/Additions/linux/drm/vbox_ttm.c 
>> > b/src/VBox/Additions/linux/drm/vbox_ttm.c
>> > -index bf87aabc05..5eac926a42 100644
>> > ---- a/src/VBox/Additions/linux/drm/vbox_ttm.c
>> > -+++ b/src/VBox/Additions/linux/drm/vbox_ttm.c
>> > -@@ -41,6 +41,7 @@
>> > - #define PLACEMENT_FLAGS(placement) ((placement).flags)
>> > - #endif
>> > -
>> > -+
>> > - static inline struct vbox_private *vbox_bdev(struct ttm_bo_device *bd)
>> > - {
>> > -       return container_of(bd, struct vbox_private, ttm.bdev);
>> > -@@ -125,6 +126,7 @@ static bool vbox_ttm_bo_is_vbox_bo(struct 
>> > ttm_buffer_object *bo)
>> > -       return false;
>> > - }
>> > -
>> > -+#if RTLNX_VER_MAX(5,10,0)
>> > - static int
>> > - vbox_bo_init_mem_type(struct ttm_bo_device *bdev, u32 type,
>> > -                     struct ttm_mem_type_manager *man)
>> > -@@ -148,6 +150,7 @@ vbox_bo_init_mem_type(struct ttm_bo_device *bdev, u32 
>> > type,
>> > -
>> > -       return 0;
>> > - }
>> > -+#endif
>> > -
>> > - static void
>> > - vbox_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement 
>> > *pl)
>> > -@@ -157,7 +160,7 @@ vbox_bo_evict_flags(struct ttm_buffer_object *bo, 
>> > struct ttm_placement *pl)
>> > -       if (!vbox_ttm_bo_is_vbox_bo(bo))
>> > -               return;
>> > -
>> > --      vbox_ttm_placement(vboxbo, TTM_PL_FLAG_SYSTEM);
>> > -+      vbox_ttm_placement(vboxbo, VBOX_MEM_TYPE_SYSTEM);
>> > -       *pl = vboxbo->placement;
>> > - }
>> > -
>> > -@@ -167,11 +170,12 @@ static int vbox_bo_verify_access(struct 
>> > ttm_buffer_object *bo,
>> > -       return 0;
>> > - }
>> > -
>> > -+#if RTLNX_VER_MAX(5,10,0)
>> > - static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev,
>> > -                                  struct ttm_mem_reg *mem)
>> > - {
>> > --      struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
>> > -       struct vbox_private *vbox = vbox_bdev(bdev);
>> > -+      struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
>> > -
>> > -       mem->bus.addr = NULL;
>> > -       mem->bus.offset = 0;
>> > -@@ -194,12 +198,53 @@ static int vbox_ttm_io_mem_reserve(struct 
>> > ttm_bo_device *bdev,
>> > -       }
>> > -       return 0;
>> > - }
>> > -+#else
>> > -+static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev,
>> > -+                                 struct ttm_resource *mem)
>> > -+{
>> > -+      struct vbox_private *vbox = vbox_bdev(bdev);
>> > -+      mem->bus.addr = NULL;
>> > -+      mem->bus.offset = 0;
>> > -+      mem->size = mem->num_pages << PAGE_SHIFT;
>> > -+      mem->start = 0;
>> > -+      mem->bus.is_iomem = false;
>> > -+      switch (mem->mem_type) {
>> > -+      case TTM_PL_SYSTEM:
>> > -+              /* system memory */
>> > -+              return 0;
>> > -+      case TTM_PL_VRAM:
>> > -+              mem->bus.offset = mem->start << PAGE_SHIFT;
>> > -+              mem->start = pci_resource_start(vbox->dev->pdev, 0);
>> > -+              mem->bus.is_iomem = true;
>> > -+              break;
>> > -+      default:
>> > -+              return -EINVAL;
>> > -+      }
>> > -+      return 0;
>> > -+}
>> > -+#endif
>> > -
>> > -+
>> > -+
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+static void vbox_ttm_io_mem_free(struct ttm_bo_device *bdev,
>> > -+                               struct ttm_resource *mem)
>> > -+{
>> > -+}
>> > -+#else
>> > - static void vbox_ttm_io_mem_free(struct ttm_bo_device *bdev,
>> > -                                struct ttm_mem_reg *mem)
>> > - {
>> > - }
>> > -+#endif
>> > -
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+static void vbox_ttm_tt_destroy(struct ttm_bo_device *bdev, struct 
>> > ttm_tt *tt)
>> > -+{
>> > -+      ttm_tt_fini(tt);
>> > -+      kfree(tt);
>> > -+}
>> > -+#else
>> > - static void vbox_ttm_backend_destroy(struct ttm_tt *tt)
>> > - {
>> > -       ttm_tt_fini(tt);
>> > -@@ -209,6 +254,7 @@ static void vbox_ttm_backend_destroy(struct ttm_tt 
>> > *tt)
>> > - static struct ttm_backend_func vbox_tt_backend_func = {
>> > -       .destroy = &vbox_ttm_backend_destroy,
>> > - };
>> > -+#endif
>> > -
>> > - #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)
>> > - static struct ttm_tt *vbox_ttm_tt_create(struct ttm_bo_device *bdev,
>> > -@@ -226,7 +272,9 @@ static struct ttm_tt *vbox_ttm_tt_create(struct 
>> > ttm_buffer_object *bo,
>> > -       if (!tt)
>> > -               return NULL;
>> > -
>> > -+#if RTLNX_VER_MAX(5,10,0)
>> > -       tt->func = &vbox_tt_backend_func;
>> > -+#endif
>> > - #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)
>> > -       if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
>> > - #else
>> > -@@ -261,11 +309,16 @@ static void vbox_ttm_tt_unpopulate(struct ttm_tt 
>> > *ttm)
>> > -
>> > - static struct ttm_bo_driver vbox_bo_driver = {
>> > -       .ttm_tt_create = vbox_ttm_tt_create,
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+      .ttm_tt_destroy = vbox_ttm_tt_destroy,
>> > -+#endif
>> > - #if RTLNX_VER_MAX(4,17,0)
>> > -       .ttm_tt_populate = vbox_ttm_tt_populate,
>> > -       .ttm_tt_unpopulate = vbox_ttm_tt_unpopulate,
>> > - #endif
>> > -+#if RTLNX_VER_MAX(5,10,0)
>> > -       .init_mem_type = vbox_bo_init_mem_type,
>> > -+#endif
>> > - #if RTLNX_VER_MIN(4,10,0) || RTLNX_RHEL_MAJ_PREREQ(7,4)
>> > -       .eviction_valuable = ttm_bo_eviction_valuable,
>> > - #endif
>> > -@@ -318,8 +371,13 @@ int vbox_mm_init(struct vbox_private *vbox)
>> > - #endif
>> > -       }
>> > -
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+      ret = ttm_range_man_init(bdev, TTM_PL_VRAM, false,
>> > -+                           vbox->available_vram_size >> PAGE_SHIFT);
>> > -+#else
>> > -       ret = ttm_bo_init_mm(bdev, TTM_PL_VRAM,
>> > -                            vbox->available_vram_size >> PAGE_SHIFT);
>> > -+#endif
>> > -       if (ret) {
>> > -               DRM_ERROR("Failed ttm VRAM init: %d\n", ret);
>> > -               goto err_device_release;
>> > -@@ -359,7 +417,7 @@ void vbox_mm_fini(struct vbox_private *vbox)
>> > - #endif
>> > - }
>> > -
>> > --void vbox_ttm_placement(struct vbox_bo *bo, int domain)
>> > -+void vbox_ttm_placement(struct vbox_bo *bo, u32 mem_type)
>> > - {
>> > -       u32 c = 0;
>> > - #if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
>> > -@@ -372,15 +430,36 @@ void vbox_ttm_placement(struct vbox_bo *bo, int 
>> > domain)
>> > -       bo->placement.placement = bo->placements;
>> > -       bo->placement.busy_placement = bo->placements;
>> > -
>> > --      if (domain & TTM_PL_FLAG_VRAM)
>> > -+      if (mem_type & VBOX_MEM_TYPE_VRAM) {
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+              bo->placements[c].mem_type = TTM_PL_VRAM;
>> > -+              PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -+                  TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED;
>> > -+#else
>> > -               PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -                   TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | 
>> > TTM_PL_FLAG_VRAM;
>> > --      if (domain & TTM_PL_FLAG_SYSTEM)
>> > -+#endif
>> > -+      }
>> > -+      if (mem_type & VBOX_MEM_TYPE_SYSTEM) {
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+              bo->placements[c].mem_type = TTM_PL_SYSTEM;
>> > -+              PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -+                  TTM_PL_MASK_CACHING;
>> > -+#else
>> > -               PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -                   TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
>> > --      if (!c)
>> > -+#endif
>> > -+      }
>> > -+      if (!c) {
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+              bo->placements[c].mem_type = TTM_PL_SYSTEM;
>> > -+              PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -+                  TTM_PL_MASK_CACHING;
>> > -+#else
>> > -               PLACEMENT_FLAGS(bo->placements[c++]) =
>> > -                   TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
>> > -+#endif
>> > -+      }
>> > -
>> > -       bo->placement.num_placement = c;
>> > -       bo->placement.num_busy_placement = c;
>> > -@@ -414,7 +493,7 @@ int vbox_bo_create(struct drm_device *dev, int size, 
>> > int align,
>> > -       vboxbo->bo.bdev->dev_mapping = dev->dev_mapping;
>> > - #endif
>> > -
>> > --      vbox_ttm_placement(vboxbo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM);
>> > -+      vbox_ttm_placement(vboxbo, VBOX_MEM_TYPE_VRAM | 
>> > VBOX_MEM_TYPE_SYSTEM);
>> > -
>> > -       acc_size = ttm_bo_dma_acc_size(&vbox->ttm.bdev, size,
>> > -                                      sizeof(struct vbox_bo));
>> > -@@ -452,7 +531,7 @@ static inline u64 vbox_bo_gpu_offset(struct vbox_bo 
>> > *bo)
>> > - #endif
>> > - }
>> > -
>> > --int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr)
>> > -+int vbox_bo_pin(struct vbox_bo *bo, u32 mem_type, u64 *gpu_addr)
>> > - {
>> > - #if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || 
>> > RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5)
>> > -       struct ttm_operation_ctx ctx = { false, false };
>> > -@@ -467,7 +546,7 @@ int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 
>> > *gpu_addr)
>> > -               return 0;
>> > -       }
>> > -
>> > --      vbox_ttm_placement(bo, pl_flag);
>> > -+      vbox_ttm_placement(bo, mem_type);
>> > -
>> > -       for (i = 0; i < bo->placement.num_placement; i++)
>> > -               PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT;
>> > -@@ -540,7 +619,7 @@ int vbox_bo_push_sysram(struct vbox_bo *bo)
>> > -       if (bo->kmap.virtual)
>> > -               ttm_bo_kunmap(&bo->kmap);
>> > -
>> > --      vbox_ttm_placement(bo, TTM_PL_FLAG_SYSTEM);
>> > -+      vbox_ttm_placement(bo, VBOX_MEM_TYPE_SYSTEM);
>> > -
>> > -       for (i = 0; i < bo->placement.num_placement; i++)
>> > -               PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT;
>> > ---
>> > -2.19.1
>> > -
>> > diff --git 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Runtime-memobj-r0drv-linux.c-Changes-to-support-the-.patch
>> >  
>> > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Runtime-memobj-r0drv-linux.c-Changes-to-support-the-.patch
>> > deleted file mode 100644
>> > index db27cb883..000000000
>> > --- 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-Runtime-memobj-r0drv-linux.c-Changes-to-support-the-.patch
>> > +++ /dev/null
>> > @@ -1,119 +0,0 @@
>> > -From 2a6e3cf63f58e289802a11faad5fb495e2d04e97 Mon Sep 17 00:00:00 2001
>> > -From: vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>
>> > -Date: Wed, 9 Dec 2020 18:59:04 +0000
>> > -Subject: [PATCH] Runtime/memobj-r0drv-linux.c: Changes to support the 
>> > upcoming
>> > - 5.10 kernel, bugref:9879
>> > -
>> > -Upstream-Status: Backport
>> > -
>> > -git-svn-id: http://www.virtualbox.org/svn/vbox@87074 
>> > cfe28804-0f27-0410-a406-dd0f0b0b656f
>> > -
>> > -Signed-off-by: Bruce Ashfield <[email protected]>
>> > ----
>> > - .../Runtime/r0drv/linux/memobj-r0drv-linux.c  | 68 ++++++++++++++++++-
>> > - 1 file changed, 67 insertions(+), 1 deletion(-)
>> > -
>> > ---- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
>> > -+++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
>> > -@@ -56,9 +56,19 @@
>> > -  * Whether we use alloc_vm_area (3.2+) for executable memory.
>> > -  * This is a must for 5.8+, but we enable it all the way back to 3.2.x 
>> > for
>> > -  * better W^R compliance (fExecutable flag). */
>> > --#if RTLNX_VER_MIN(3,2,0) || defined(DOXYGEN_RUNNING)
>> > -+#if RTLNX_VER_RANGE(3,2,0, 5,10,0) || defined(DOXYGEN_RUNNING)
>> > - # define IPRT_USE_ALLOC_VM_AREA_FOR_EXEC
>> > - #endif
>> > -+/** @def IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC
>> > -+ * alloc_vm_area was removed with 5.10 so we have to resort to a 
>> > different way
>> > -+ * to allocate executable memory.
>> > -+ * It would be possible to remove IPRT_USE_ALLOC_VM_AREA_FOR_EXEC and use
>> > -+ * this path execlusively for 3.2+ but no time to test it really works 
>> > on every
>> > -+ * supported kernel, so better play safe for now.
>> > -+ */
>> > -+#if RTLNX_VER_MIN(5,10,0) || defined(DOXYGEN_RUNNING)
>> > -+# define IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC
>> > -+#endif
>> > -
>> > - /*
>> > -  * 2.6.29+ kernels don't work with remap_pfn_range() anymore because
>> > -@@ -502,6 +512,46 @@ static void rtR0MemObjLinuxFreePages(PRT
>> > - }
>> > -
>> > -
>> > -+#ifdef IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC
>> > -+/**
>> > -+ * User data passed to the apply_to_page_range() callback.
>> > -+ */
>> > -+typedef struct LNXAPPLYPGRANGE
>> > -+{
>> > -+    /** Pointer to the memory object. */
>> > -+    PRTR0MEMOBJLNX pMemLnx;
>> > -+    /** The page protection flags to apply. */
>> > -+    pgprot_t       fPg;
>> > -+} LNXAPPLYPGRANGE;
>> > -+/** Pointer to the user data. */
>> > -+typedef LNXAPPLYPGRANGE *PLNXAPPLYPGRANGE;
>> > -+/** Pointer to the const user data. */
>> > -+typedef const LNXAPPLYPGRANGE *PCLNXAPPLYPGRANGE;
>> > -+
>> > -+/**
>> > -+ * Callback called in apply_to_page_range().
>> > -+ *
>> > -+ * @returns Linux status code.
>> > -+ * @param   pPte                Pointer to the page table entry for the 
>> > given address.
>> > -+ * @param   uAddr               The address to apply the new protection 
>> > to.
>> > -+ * @param   pvUser              The opaque user data.
>> > -+ */
>> > -+#ifdef __i386__
>> > -+static int rtR0MemObjLinuxApplyPageRange(pte_t *pPte, unsigned long 
>> > uAddr, void *pvUser)
>> > -+#else
>> > -+static DECLCALLBACK(int) rtR0MemObjLinuxApplyPageRange(pte_t *pPte, 
>> > unsigned long uAddr, void *pvUser)
>> > -+#endif
>> > -+{
>> > -+    PCLNXAPPLYPGRANGE pArgs = (PCLNXAPPLYPGRANGE)pvUser;
>> > -+    PRTR0MEMOBJLNX pMemLnx = pArgs->pMemLnx;
>> > -+    size_t idxPg = (uAddr - (unsigned long)pMemLnx->Core.pv) >> 
>> > PAGE_SHIFT;
>> > -+
>> > -+    set_pte(pPte, mk_pte(pMemLnx->apPages[idxPg], pArgs->fPg));
>> > -+    return 0;
>> > -+}
>> > -+#endif
>> > -+
>> > -+
>> > - /**
>> > -  * Maps the allocation into ring-0.
>> > -  *
>> > -@@ -584,6 +634,11 @@ static int rtR0MemObjLinuxVMap(PRTR0MEMO
>> > -         else
>> > - # endif
>> > -         {
>> > -+#  if defined(IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC)
>> > -+            if (fExecutable)
>> > -+                pgprot_val(fPg) |= _PAGE_NX; /* Uses RTR0MemObjProtect 
>> > to clear NX when memory ready, W^X fashion. */
>> > -+#  endif
>> > -+
>> > - # ifdef VM_MAP
>> > -             pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], 
>> > pMemLnx->cPages, VM_MAP, fPg);
>> > - # else
>> > -@@ -1851,6 +1906,21 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(
>> > -         preempt_enable();
>> > -         return VINF_SUCCESS;
>> > -     }
>> > -+# elif defined(IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC)
>> > -+    PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem;
>> > -+    if (   pMemLnx->fExecutable
>> > -+        && pMemLnx->fMappedToRing0)
>> > -+    {
>> > -+        LNXAPPLYPGRANGE Args;
>> > -+        Args.pMemLnx = pMemLnx;
>> > -+        Args.fPg = rtR0MemObjLinuxConvertProt(fProt, true /*fKernel*/);
>> > -+        int rcLnx = apply_to_page_range(current->active_mm, (unsigned 
>> > long)pMemLnx->Core.pv + offSub, cbSub,
>> > -+                                        rtR0MemObjLinuxApplyPageRange, 
>> > (void *)&Args);
>> > -+        if (rcLnx)
>> > -+            return VERR_NOT_SUPPORTED;
>> > -+
>> > -+        return VINF_SUCCESS;
>> > -+    }
>> > - # endif
>> > -
>> > -     NOREF(pMem);
>> > diff --git 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-linser-vboxsf-Adjustment-for-linux-5.10-TASK_SIZE_MA.patch
>> >  
>> > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-linser-vboxsf-Adjustment-for-linux-5.10-TASK_SIZE_MA.patch
>> > deleted file mode 100644
>> > index 3cfe2e917..000000000
>> > --- 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-linser-vboxsf-Adjustment-for-linux-5.10-TASK_SIZE_MA.patch
>> > +++ /dev/null
>> > @@ -1,46 +0,0 @@
>> > -From a276f8bc5e4515f7ea51e2c56e0e634a723ca104 Mon Sep 17 00:00:00 2001
>> > -From: vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>
>> > -Date: Tue, 8 Dec 2020 13:52:53 +0000
>> > -Subject: [PATCH] linser/vboxsf: Adjustment for linux 5.10 - TASK_SIZE_MAX
>> > - replaces USER_DS.seg. bugref:9879
>> > -
>> > -Upstream-Status: Backport
>> > -
>> > -git-svn-id: http://www.virtualbox.org/svn/vbox@87053 
>> > cfe28804-0f27-0410-a406-dd0f0b0b656f
>> > -
>> > -Signed-off-by: Bruce Ashfield <[email protected]>
>> > ----
>> > - src/VBox/Additions/linux/sharedfolders/regops.c | 9 ++++++++-
>> > - 1 file changed, 8 insertions(+), 1 deletion(-)
>> > -
>> > -diff --git a/src/VBox/Additions/linux/sharedfolders/regops.c 
>> > b/src/VBox/Additions/linux/sharedfolders/regops.c
>> > -index e1fad3d820..401fd69930 100644
>> > ---- a/src/VBox/Additions/linux/sharedfolders/regops.c
>> > -+++ b/src/VBox/Additions/linux/sharedfolders/regops.c
>> > -@@ -147,7 +147,11 @@ static int vbsf_iov_iter_detect_type(struct iovec 
>> > const *paIov, size_t cSegs)
>> > -     while (cSegs-- > 0) {
>> > -         if (paIov->iov_len > 0) {
>> > -             if (access_ok(VERIFY_READ, paIov->iov_base, paIov->iov_len))
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+                return (uintptr_t)paIov->iov_base >= TASK_SIZE_MAX ? 
>> > ITER_KVEC : 0;
>> > -+#else
>> > -                 return (uintptr_t)paIov->iov_base >= USER_DS.seg ? 
>> > ITER_KVEC : 0;
>> > -+#endif
>> > -             AssertMsgFailed(("%p LB %#zx\n", paIov->iov_base, 
>> > paIov->iov_len));
>> > -             break;
>> > -         }
>> > -@@ -1401,7 +1405,10 @@ static int 
>> > vbsf_lock_user_pages_failed_check_kernel(uintptr_t uPtrFrom, size_t c
>> > -     /*
>> > -      * Check that this is valid user memory that is actually in the 
>> > kernel range.
>> > -      */
>> > --#if RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1)
>> > -+#if RTLNX_VER_MIN(5,10,0)
>> > -+    if (   access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT)
>> > -+        && uPtrFrom >= TASK_SIZE_MAX)
>> > -+#elif RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1)
>> > -     if (   access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT)
>> > -         && uPtrFrom >= USER_DS.seg)
>> > - #else
>> > ---
>> > -2.19.1
>> > -
>> > diff --git 
>> > a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.16.bb 
>> > b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.18.bb
>> > similarity index 88%
>> > rename from 
>> > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.16.bb
>> > rename to 
>> > meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.18.bb
>> > index ff639c09f..ea6a082f6 100644
>> > --- a/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.16.bb
>> > +++ b/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.18.bb
>> > @@ -13,12 +13,9 @@ VBOX_NAME = "VirtualBox-${PV}"
>> >
>> >  SRC_URI = 
>> > "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
>> >      file://Makefile.utils \
>> > -    file://0001-Additions-linux-drm-Adjustment-for-Linux-5.10.patch \
>> > -    
>> > file://0001-Runtime-memobj-r0drv-linux.c-Changes-to-support-the-.patch \
>> > -    
>> > file://0001-linser-vboxsf-Adjustment-for-linux-5.10-TASK_SIZE_MA.patch \
>> >  "
>> > -SRC_URI[md5sum] = "a12a647f6c114f2cb1571089b36841fe"
>> > -SRC_URI[sha256sum] = 
>> > "49c1990da16d8a3d5bda8cdb961ec8195a901e67e4c79aea44c1521a5fc2f9f1"
>> > +SRC_URI[md5sum] = "c61001386eb3822ab8f06d688a82e84b"
>> > +SRC_URI[sha256sum] = 
>> > "108d42b9b391b7a332a33df1662cf7b0e9d9a80f3079d16288d8b9487f427d40"
>> >
>> >  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 (#88964): 
https://lists.openembedded.org/g/openembedded-devel/message/88964
Mute This Topic: https://lists.openembedded.org/mt/79977662/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to