diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch new file mode 100644 index 00000000..585b6b8c --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch @@ -0,0 +1,108 @@ +From fcc6cbb263c92ff4cd63e84feb7da72fc3ccc8cd Mon Sep 17 00:00:00 2001 +From: Yong Zhao <yong.zhao@amd.com> +Date: Wed, 24 Aug 2016 12:48:40 -0400 +Subject: [PATCH 1492/4131] drm/amdgpu: Implement get_tile_config() in amdgpu + +Change-Id: Ifed629801efca89efa7da8b21128893678aa68f1 +Signed-off-by: Yong Zhao <yong.zhao@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 29 ++++++++++++++++++++++- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 28 +++++++++++++++++++++- + 2 files changed, 55 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c +index 65b5e2b..9948b37 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c +@@ -147,6 +147,32 @@ static int write_config_static_mem(struct kgd_dev *kgd, bool swizzle_enable, + static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid, + uint32_t page_table_base); + ++/* Because of REG_GET_FIELD() being used, we put this function in the ++ * asic specific file. ++ */ ++static int amdgpu_amdkfd_get_tile_config(struct kgd_dev *kgd, ++ struct tile_config *config) ++{ ++ struct amdgpu_device *adev = (struct amdgpu_device *)kgd; ++ ++ config->gb_addr_config = adev->gfx.config.gb_addr_config; ++ config->num_banks = REG_GET_FIELD(adev->gfx.config.mc_arb_ramcfg, ++ MC_ARB_RAMCFG, NOOFBANK); ++ config->num_ranks = REG_GET_FIELD(adev->gfx.config.mc_arb_ramcfg, ++ MC_ARB_RAMCFG, NOOFRANKS); ++ ++ config->tile_config_ptr = adev->gfx.config.tile_mode_array; ++ config->num_tile_configs = ++ ARRAY_SIZE(adev->gfx.config.tile_mode_array); ++ config->macro_tile_config_ptr = ++ adev->gfx.config.macrotile_mode_array; ++ config->num_macro_tile_configs = ++ ARRAY_SIZE(adev->gfx.config.macrotile_mode_array); ++ ++ ++ return 0; ++} ++ + static const struct kfd2kgd_calls kfd2kgd = { + .init_gtt_mem_allocation = alloc_gtt_mem, + .free_gtt_mem = free_gtt_mem, +@@ -198,7 +224,8 @@ static const struct kfd2kgd_calls kfd2kgd = { + .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, + .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, + .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info, +- .submit_ib = amdgpu_amdkfd_submit_ib ++ .submit_ib = amdgpu_amdkfd_submit_ib, ++ .get_tile_config = amdgpu_amdkfd_get_tile_config, + }; + + struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions() +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c +index af2fcec..56a88ef 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c +@@ -127,6 +127,31 @@ static int write_config_static_mem(struct kgd_dev *kgd, bool swizzle_enable, + static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid, + uint32_t page_table_base); + ++/* Because of REG_GET_FIELD() being used, we put this function in the ++ * asic specific file. ++ */ ++static int amdgpu_amdkfd_get_tile_config(struct kgd_dev *kgd, ++ struct tile_config *config) ++{ ++ struct amdgpu_device *adev = (struct amdgpu_device *)kgd; ++ ++ config->gb_addr_config = adev->gfx.config.gb_addr_config; ++ config->num_banks = REG_GET_FIELD(adev->gfx.config.mc_arb_ramcfg, ++ MC_ARB_RAMCFG, NOOFBANK); ++ config->num_ranks = REG_GET_FIELD(adev->gfx.config.mc_arb_ramcfg, ++ MC_ARB_RAMCFG, NOOFRANKS); ++ ++ config->tile_config_ptr = adev->gfx.config.tile_mode_array; ++ config->num_tile_configs = ++ ARRAY_SIZE(adev->gfx.config.tile_mode_array); ++ config->macro_tile_config_ptr = ++ adev->gfx.config.macrotile_mode_array; ++ config->num_macro_tile_configs = ++ ARRAY_SIZE(adev->gfx.config.macrotile_mode_array); ++ ++ return 0; ++} ++ + static const struct kfd2kgd_calls kfd2kgd = { + .init_gtt_mem_allocation = alloc_gtt_mem, + .free_gtt_mem = free_gtt_mem, +@@ -180,7 +205,8 @@ static const struct kfd2kgd_calls kfd2kgd = { + .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, + .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, + .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info, +- .submit_ib = amdgpu_amdkfd_submit_ib ++ .submit_ib = amdgpu_amdkfd_submit_ib, ++ .get_tile_config = amdgpu_amdkfd_get_tile_config, + }; + + struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions() +-- +2.7.4 + |