From fcc6cbb263c92ff4cd63e84feb7da72fc3ccc8cd Mon Sep 17 00:00:00 2001 From: Yong Zhao 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 --- 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