diff options
author | Xianzhong <xianzhong.li@nxp.com> | 2020-10-20 17:26:31 +0800 |
---|---|---|
committer | Xianzhong <xianzhong.li@nxp.com> | 2020-10-20 17:50:19 +0800 |
commit | 0e2540cf5e713a90de4bbb1907221eaf082518d5 (patch) | |
tree | d1f68eedb299ec7d522f4859d4c8184824dc1bac /drivers/mxc | |
parent | 66d55a65726e154830abf5c1e0771d8e31737906 (diff) |
MGS-6026 mxc/gpu-viv: integrate 6.4.3.p1 kernel
add new feature for openvx 1.3 and vulkan 1.2.1
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
Diffstat (limited to 'drivers/mxc')
14 files changed, 42 insertions, 27 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h index f1087f166cc6..98dd98adff70 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h @@ -1337,6 +1337,7 @@ typedef struct _gcsVIDMEM_NODE gckVIDMEM_NODE tsNode; gctUINT32 tilingMode; gctUINT32 tsMode; + gctUINT32 tsCacheMode; gctUINT64 clearValue; #if gcdCAPTURE_ONLY_MODE diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c index ee66dc1a498b..b6e9aea48e4b 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c @@ -61,7 +61,6 @@ #include <stdlib.h> #include <sys/slogcodes.h> #include <time.h> -#include "gc_hal_kernel_os.h" extern unsigned int slogUsageInterval; extern const uint64_t slogLowWaterFPC; @@ -809,9 +808,8 @@ gckVIDMEM_AllocateLinear( if (do_slog_now) { last_slog_time = this_slog_time; - slogf(_SLOGC_GRAPHICS_GL, _SLOG_INFO, "%s: Memory->freeBytes = %u, lowest Memory->freeBytes = %u. " - "Handling message from pid: %u. Requested bytes: %zu", - __FUNCTION__, (unsigned) Memory->freeBytes, (unsigned) lowwaterFPC, drv_get_user_pid(), Bytes); + slogf(_SLOGC_GRAPHICS_GL, _SLOG_INFO, "%s: Memory->freeBytes = %u, lowest Memory->freeBytes = %u", + __FUNCTION__, (unsigned) Memory->freeBytes, (unsigned) lowwaterFPC); } } #endif diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_feature_database.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_feature_database.h index 7d83a0faf760..ec0615d9534d 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_feature_database.h +++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_feature_database.h @@ -53,7 +53,7 @@ *****************************************************************************/ -/*Auto created on 2020-09-27 10:38*/ +/*Auto created on 2020-10-13 23:50*/ #ifndef _gc_feature_database_h_ #define _gc_feature_database_h_ diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_drm.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_drm.h index d24e95d4584b..6699ea39c9f6 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_drm.h +++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_drm.h @@ -135,11 +135,17 @@ struct drm_viv_gem_timestamp { #define DRM_VIV_GEM_TS_NORMAL 0x02 #define DRM_VIV_GEM_TS_COMPRESSED 0x03 +/* ts cache mode. */ +#define DRM_VIV_GEM_TS_CACHE_MODE_64B 0x00 +#define DRM_VIV_GEM_TS_CACHE_MODE_128B 0x01 +#define DRM_VIV_GEM_TS_CACHE_MODE_256B 0x02 + struct drm_viv_gem_set_tiling { __u32 handle; __u32 tiling_mode; __u32 ts_mode; + __u32 ts_cache_mode; __u64 clear_value; }; @@ -148,6 +154,7 @@ struct drm_viv_gem_get_tiling { __u32 tiling_mode; __u32 ts_mode; + __u32 ts_cache_mode; __u64 clear_value; }; diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h index b510691ea360..455355e2b096 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h +++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h @@ -52,6 +52,7 @@ * *****************************************************************************/ + #include "gc_hal_version.h" #include "gc_hal_options.h" #include "shared/gc_hal_types_shared.h" diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h index 0a2546548d78..3557882b5ae0 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h +++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h @@ -62,9 +62,9 @@ #define gcvVERSION_PATCH 3 -#define gcvVERSION_BUILD 286725 +#define gcvVERSION_BUILD 305572 -#define gcvVERSION_STRING "6.4.3.p0.286725" +#define gcvVERSION_STRING "6.4.3.p1.305572" #endif /* __gc_hal_version_h_ */ diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c index a29b696b2a45..823e712c3679 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_dma.c @@ -456,7 +456,7 @@ _DmaMapUser( gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) down_write(¤t->mm->mmap_lock); #else down_write(¤t->mm->mmap_sem); @@ -484,7 +484,7 @@ _DmaMapUser( } while (gcvFALSE); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) up_write(¤t->mm->mmap_lock); #else up_write(¤t->mm->mmap_sem); diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c index 3f3d6c0f53ba..2f18712918fb 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c @@ -1068,7 +1068,7 @@ _GFPMapUser( gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,8,0) down_write(¤t->mm->mmap_lock); #else down_write(¤t->mm->mmap_sem); @@ -1094,7 +1094,7 @@ _GFPMapUser( } while (gcvFALSE); -#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,8,0) up_write(¤t->mm->mmap_lock); #else up_write(¤t->mm->mmap_sem); diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_reserved_mem.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_reserved_mem.c index e22d74d355a5..bbb9096331a7 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_reserved_mem.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_reserved_mem.c @@ -348,7 +348,7 @@ reserved_mem_map_user( gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) down_write(¤t->mm->mmap_lock); #else down_write(¤t->mm->mmap_sem); @@ -376,7 +376,7 @@ reserved_mem_map_user( } while (gcvFALSE); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) up_write(¤t->mm->mmap_lock); #else up_write(¤t->mm->mmap_sem); diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c index f522655b129a..d7f47c772071 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c @@ -141,7 +141,7 @@ static int import_page_map(struct um_desc *um, if (!pages) return -ENOMEM; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) down_read(¤t->mm->mmap_lock); #else down_read(¤t->mm->mmap_sem); @@ -163,7 +163,7 @@ static int import_page_map(struct um_desc *um, pages, NULL); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) up_read(¤t->mm->mmap_lock); #else up_read(¤t->mm->mmap_sem); @@ -248,7 +248,7 @@ static int import_pfn_map(struct um_desc *um, if (!current->mm) return -ENOTTY; -#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,8,0) down_read(¤t->mm->mmap_lock); vma = find_vma(current->mm, addr); up_read(¤t->mm->mmap_lock); @@ -438,7 +438,9 @@ _Import( } } + down_read(¤t->mm->mmap_sem); vma = find_vma(current->mm, memory); + up_read(¤t->mm->mmap_sem); if (!vma) { @@ -454,6 +456,7 @@ _Import( vm_flags = vma->vm_flags; vaddr = vma->vm_end; + down_read(¤t->mm->mmap_sem); while (vaddr < memory + Size) { vma = find_vma(current->mm, vaddr); @@ -461,17 +464,20 @@ _Import( if (!vma) { /* No such memory. */ + up_read(¤t->mm->mmap_sem); gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT); } if ((vma->vm_flags & VM_PFNMAP) != (vm_flags & VM_PFNMAP)) { /* Can not support different map type: both PFN and PAGE detected. */ + up_read(¤t->mm->mmap_sem); gcmkONERROR(gcvSTATUS_NOT_SUPPORTED); } vaddr = vma->vm_end; } + up_read(¤t->mm->mmap_sem); } if (Physical != gcvINVALID_PHYSICAL_ADDRESS) diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c index b61df83b460e..f1e87be26ea7 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c @@ -444,7 +444,7 @@ _CMAFSLMapUser( gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) down_write(¤t->mm->mmap_lock); #else down_write(¤t->mm->mmap_sem); @@ -471,7 +471,7 @@ _CMAFSLMapUser( } while (gcvFALSE); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) up_write(¤t->mm->mmap_lock); #else up_write(¤t->mm->mmap_sem); diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c index befe086a9f75..795a0e1866b8 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c @@ -478,9 +478,10 @@ static int viv_ioctl_gem_set_tiling(struct drm_device *drm, void *data, } viv_obj = container_of(gem_obj, struct viv_gem_object, base); - viv_obj->node_object->tilingMode = args->tiling_mode; - viv_obj->node_object->tsMode = args->ts_mode; - viv_obj->node_object->clearValue = args->clear_value; + viv_obj->node_object->tilingMode = args->tiling_mode; + viv_obj->node_object->tsMode = args->ts_mode; + viv_obj->node_object->tsCacheMode = args->ts_cache_mode; + viv_obj->node_object->clearValue = args->clear_value; OnError: if (gem_obj) @@ -513,9 +514,10 @@ static int viv_ioctl_gem_get_tiling(struct drm_device *drm, void *data, } viv_obj = container_of(gem_obj, struct viv_gem_object, base); - args->tiling_mode = viv_obj->node_object->tilingMode; - args->ts_mode = viv_obj->node_object->tsMode; - args->clear_value = viv_obj->node_object->clearValue; + args->tiling_mode = viv_obj->node_object->tilingMode; + args->ts_mode = viv_obj->node_object->tsMode; + args->ts_cache_mode = viv_obj->node_object->tsCacheMode; + args->clear_value = viv_obj->node_object->clearValue; OnError: if (gem_obj) diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c index 55d102258493..edc279c60c02 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c @@ -451,7 +451,7 @@ _QueryProcessPageTable( if (!current->mm) return gcvSTATUS_NOT_FOUND; -#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION (5,8,0) down_read(¤t->mm->mmap_lock); vma = find_vma(current->mm, logical); up_read(¤t->mm->mmap_lock); diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx.c index bf714d291ed3..3e6c75ae75a0 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx.c @@ -1478,7 +1478,7 @@ static inline int set_power(int gpu, int enable) #ifdef CONFIG_PM pm_runtime_get_sync(priv->pmdev[gpu]); if(priv->pm_qos_core == gpu) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0) cpu_latency_qos_add_request(&priv->pm_qos, 0); #else pm_qos_add_request(&(priv->pm_qos), PM_QOS_CPU_DMA_LATENCY, 0); @@ -1550,7 +1550,7 @@ static inline int set_power(int gpu, int enable) #ifdef CONFIG_PM pm_runtime_put_sync(priv->pmdev[gpu]); if(priv->pm_qos_core == gpu) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0) cpu_latency_qos_remove_request(&priv->pm_qos); #else pm_qos_remove_request(&(priv->pm_qos)); |