aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1492-drm-amdgpu-Implement-get_tile_config-in-amdgpu.patch
diff options
context:
space:
mode:
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.patch108
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
+