| Subject: Fix build errors with linux 5.13 |
| Origin: upstream, https://www.virtualbox.org/browser/vbox/trunk |
| Bug: https://bugs.launchpad.net/bugs/1929193 |
| |
| diff -urpN virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_drv.h virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_drv.h |
| --- virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_drv.h 2021-04-28 16:24:47.000000000 +0000 |
| +++ virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_drv.h 2021-06-23 10:08:44.431714404 +0000 |
| @@ -46,20 +41,20 @@ |
| * Evaluates to true if the linux kernel version is equal or higher to the |
| * one specfied. */ |
| #define RTLNX_VER_MIN(a_Major, a_Minor, a_Patch) \ |
| - (LINUX_VERSION_CODE >= KERNEL_VERSION(a_Major, a_Minor, a_Patch)) |
| + (LINUX_VERSION_CODE >= KERNEL_VERSION(a_Major, a_Minor, a_Patch)) |
| |
| /** @def RTLNX_VER_MAX |
| * Evaluates to true if the linux kernel version is less to the one specfied |
| * (exclusive). */ |
| #define RTLNX_VER_MAX(a_Major, a_Minor, a_Patch) \ |
| - (LINUX_VERSION_CODE < KERNEL_VERSION(a_Major, a_Minor, a_Patch)) |
| + (LINUX_VERSION_CODE < KERNEL_VERSION(a_Major, a_Minor, a_Patch)) |
| |
| /** @def RTLNX_VER_RANGE |
| * Evaluates to true if the linux kernel version is equal or higher to the given |
| * minimum version and less (but not equal) to the maximum version (exclusive). */ |
| #define RTLNX_VER_RANGE(a_MajorMin, a_MinorMin, a_PatchMin, a_MajorMax, a_MinorMax, a_PatchMax) \ |
| - ( LINUX_VERSION_CODE >= KERNEL_VERSION(a_MajorMin, a_MinorMin, a_PatchMin) \ |
| - && LINUX_VERSION_CODE < KERNEL_VERSION(a_MajorMax, a_MinorMax, a_PatchMax) ) |
| + ( LINUX_VERSION_CODE >= KERNEL_VERSION(a_MajorMin, a_MinorMin, a_PatchMin) \ |
| + && LINUX_VERSION_CODE < KERNEL_VERSION(a_MajorMax, a_MinorMax, a_PatchMax) ) |
| |
| |
| /** @def RTLNX_RHEL_MIN |
| @@ -70,7 +65,7 @@ |
| */ |
| #if defined(RHEL_MAJOR) && defined(RHEL_MINOR) |
| # define RTLNX_RHEL_MIN(a_iMajor, a_iMinor) \ |
| - ((RHEL_MAJOR) > (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) >= (a_iMinor))) |
| + ((RHEL_MAJOR) > (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) >= (a_iMinor))) |
| #else |
| # define RTLNX_RHEL_MIN(a_iMajor, a_iMinor) (0) |
| #endif |
| @@ -83,7 +78,7 @@ |
| */ |
| #if defined(RHEL_MAJOR) && defined(RHEL_MINOR) |
| # define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) \ |
| - ((RHEL_MAJOR) < (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) < (a_iMinor))) |
| + ((RHEL_MAJOR) < (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) < (a_iMinor))) |
| #else |
| # define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) (0) |
| #endif |
| @@ -95,7 +90,7 @@ |
| */ |
| #if defined(RHEL_MAJOR) && defined(RHEL_MINOR) |
| # define RTLNX_RHEL_RANGE(a_iMajorMin, a_iMinorMin, a_iMajorMax, a_iMinorMax) \ |
| - (RTLNX_RHEL_MIN(a_iMajorMin, a_iMinorMin) && RTLNX_RHEL_MAX(a_iMajorMax, a_iMinorMax)) |
| + (RTLNX_RHEL_MIN(a_iMajorMin, a_iMinorMin) && RTLNX_RHEL_MAX(a_iMajorMax, a_iMinorMax)) |
| #else |
| # define RTLNX_RHEL_RANGE(a_iMajorMin, a_iMinorMin, a_iMajorMax, a_iMinorMax) (0) |
| #endif |
| @@ -173,7 +168,9 @@ |
| #include <drm/ttm/ttm_bo_api.h> |
| #include <drm/ttm/ttm_bo_driver.h> |
| #include <drm/ttm/ttm_placement.h> |
| +#if RTLNX_VER_MAX(5,13,0) |
| #include <drm/ttm/ttm_memory.h> |
| +#endif |
| #if RTLNX_VER_MAX(5,12,0) |
| # include <drm/ttm/ttm_module.h> |
| #endif |
| @@ -222,7 +219,7 @@ static inline void drm_gem_object_put(st |
| VBVA_ADAPTER_INFORMATION_SIZE) |
| #define GUEST_HEAP_SIZE VBVA_ADAPTER_INFORMATION_SIZE |
| #define GUEST_HEAP_USABLE_SIZE (VBVA_ADAPTER_INFORMATION_SIZE - \ |
| - sizeof(HGSMIHOSTFLAGS)) |
| + sizeof(struct hgsmi_host_flags)) |
| #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE |
| |
| /** How frequently we refresh if the guest is not providing dirty rectangles. */ |
| @@ -232,7 +229,7 @@ static inline void drm_gem_object_put(st |
| static inline void *devm_kcalloc(struct device *dev, size_t n, size_t size, |
| gfp_t flags) |
| { |
| - return devm_kzalloc(dev, n * size, flags); |
| + return devm_kzalloc(dev, n * size, flags); |
| } |
| #endif |
| |
| @@ -244,7 +241,7 @@ struct vbox_private { |
| u8 __iomem *guest_heap; |
| u8 __iomem *vbva_buffers; |
| struct gen_pool *guest_pool; |
| - struct VBVABUFFERCONTEXT *vbva_info; |
| + struct vbva_buf_context *vbva_info; |
| bool any_pitch; |
| u32 num_crtcs; |
| /** Amount of available VRAM, including space used for buffers. */ |
| @@ -252,7 +249,7 @@ struct vbox_private { |
| /** Amount of available VRAM, not including space used for buffers. */ |
| u32 available_vram_size; |
| /** Array of structures for receiving mode hints. */ |
| - VBVAMODEHINT *last_mode_hints; |
| + struct vbva_modehint *last_mode_hints; |
| |
| struct vbox_fbdev *fbdev; |
| |
| @@ -263,7 +260,11 @@ struct vbox_private { |
| struct drm_global_reference mem_global_ref; |
| struct ttm_bo_global_ref bo_global_ref; |
| #endif |
| +#if RTLNX_VER_MIN(5,13,0) |
| + struct ttm_device bdev; |
| +#else |
| struct ttm_bo_device bdev; |
| +#endif |
| bool mm_initialised; |
| } ttm; |
| |
| diff -urpN virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_ttm.c virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_ttm.c |
| --- virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_ttm.c 2021-04-28 16:24:47.000000000 +0000 |
| +++ virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_ttm.c 2021-06-23 10:08:07.164057918 +0000 |
| @@ -48,7 +43,11 @@ |
| #endif |
| |
| |
| +#if RTLNX_VER_MIN(5,13,0) |
| +static inline struct vbox_private *vbox_bdev(struct ttm_device *bd) |
| +#else |
| static inline struct vbox_private *vbox_bdev(struct ttm_bo_device *bd) |
| +#endif |
| { |
| return container_of(bd, struct vbox_private, ttm.bdev); |
| } |
| @@ -188,7 +187,7 @@ static int vbox_ttm_io_mem_reserve(struc |
| mem->bus.size = mem->num_pages << PAGE_SHIFT; |
| mem->bus.base = 0; |
| mem->bus.is_iomem = false; |
| - if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE)) |
| + if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE)) |
| return -EINVAL; |
| switch (mem->mem_type) { |
| case TTM_PL_SYSTEM: |
| @@ -205,8 +204,13 @@ static int vbox_ttm_io_mem_reserve(struc |
| return 0; |
| } |
| #else |
| +# if RTLNX_VER_MAX(5,13,0) |
| static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev, |
| struct ttm_resource *mem) |
| +# else /* > 5.13.0 */ |
| +static int vbox_ttm_io_mem_reserve(struct ttm_device *bdev, |
| + struct ttm_resource *mem) |
| +# endif /* > 5.13.0 */ |
| { |
| struct vbox_private *vbox = vbox_bdev(bdev); |
| mem->bus.addr = NULL; |
| @@ -241,7 +245,12 @@ static int vbox_ttm_io_mem_reserve(struc |
| |
| |
| |
| -#if RTLNX_VER_MIN(5,10,0) |
| +#if RTLNX_VER_MIN(5,13,0) |
| +static void vbox_ttm_io_mem_free(struct ttm_device *bdev, |
| + struct ttm_resource *mem) |
| +{ |
| +} |
| +#elif RTLNX_VER_MIN(5,10,0) |
| static void vbox_ttm_io_mem_free(struct ttm_bo_device *bdev, |
| struct ttm_resource *mem) |
| { |
| @@ -253,7 +262,13 @@ static void vbox_ttm_io_mem_free(struct |
| } |
| #endif |
| |
| -#if RTLNX_VER_MIN(5,10,0) |
| +#if RTLNX_VER_MIN(5,13,0) |
| +static void vbox_ttm_tt_destroy(struct ttm_device *bdev, struct ttm_tt *tt) |
| +{ |
| + ttm_tt_fini(tt); |
| + kfree(tt); |
| +} |
| +#elif 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); |
| @@ -333,7 +348,11 @@ static int vbox_bo_move(struct ttm_buffe |
| } |
| #endif |
| |
| +#if RTLNX_VER_MIN(5,13,0) |
| +static struct ttm_device_funcs vbox_bo_driver = { |
| +#else /* < 5.13.0 */ |
| static struct ttm_bo_driver vbox_bo_driver = { |
| +#endif /* < 5.13.0 */ |
| .ttm_tt_create = vbox_ttm_tt_create, |
| #if RTLNX_VER_MIN(5,10,0) |
| .ttm_tt_destroy = vbox_ttm_tt_destroy, |
| @@ -370,14 +389,22 @@ int vbox_mm_init(struct vbox_private *vb |
| { |
| int ret; |
| struct drm_device *dev = vbox->dev; |
| +#if RTLNX_VER_MIN(5,13,0) |
| + struct ttm_device *bdev = &vbox->ttm.bdev; |
| +#else |
| struct ttm_bo_device *bdev = &vbox->ttm.bdev; |
| +#endif |
| |
| #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1) |
| ret = vbox_ttm_global_init(vbox); |
| if (ret) |
| return ret; |
| #endif |
| +#if RTLNX_VER_MIN(5,13,0) |
| + ret = ttm_device_init(&vbox->ttm.bdev, |
| +#else |
| ret = ttm_bo_device_init(&vbox->ttm.bdev, |
| +#endif |
| #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1) |
| vbox->ttm.bo_global_ref.ref.object, |
| #endif |
| @@ -429,7 +456,11 @@ int vbox_mm_init(struct vbox_private *vb |
| return 0; |
| |
| err_device_release: |
| +#if RTLNX_VER_MIN(5,13,0) |
| + ttm_device_fini(&vbox->ttm.bdev); |
| +#else |
| ttm_bo_device_release(&vbox->ttm.bdev); |
| +#endif |
| #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1) |
| err_ttm_global_release: |
| vbox_ttm_global_release(vbox); |
| @@ -446,7 +477,11 @@ void vbox_mm_fini(struct vbox_private *v |
| #else |
| arch_phys_wc_del(vbox->fb_mtrr); |
| #endif |
| +#if RTLNX_VER_MIN(5,13,0) |
| + ttm_device_fini(&vbox->ttm.bdev); |
| +#else |
| ttm_bo_device_release(&vbox->ttm.bdev); |
| +#endif |
| #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1) |
| vbox_ttm_global_release(vbox); |
| #endif |
| @@ -528,7 +563,9 @@ int vbox_bo_create(struct drm_device *de |
| { |
| struct vbox_private *vbox = dev->dev_private; |
| struct vbox_bo *vboxbo; |
| +#if RTLNX_VER_MAX(5,13,0) |
| size_t acc_size; |
| +#endif |
| int ret; |
| |
| vboxbo = kzalloc(sizeof(*vboxbo), GFP_KERNEL); |
| @@ -551,16 +588,20 @@ int vbox_bo_create(struct drm_device *de |
| |
| vbox_ttm_placement(vboxbo, VBOX_MEM_TYPE_VRAM | VBOX_MEM_TYPE_SYSTEM); |
| |
| +#if RTLNX_VER_MAX(5,13,0) |
| acc_size = ttm_bo_dma_acc_size(&vbox->ttm.bdev, size, |
| sizeof(struct vbox_bo)); |
| +#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) |
| align >> PAGE_SHIFT, false, NULL, acc_size, |
| -#else |
| +#elif RTLNX_VER_MAX(5,13,0) /* < 5.13.0 */ |
| align >> PAGE_SHIFT, false, acc_size, |
| -#endif |
| +#else /* > 5.13.0 */ |
| + align >> PAGE_SHIFT, false, |
| +#endif /* > 5.13.0 */ |
| #if RTLNX_VER_MIN(3,18,0) || RTLNX_RHEL_MAJ_PREREQ(7,2) |
| NULL, NULL, vbox_bo_ttm_destroy); |
| #else |