diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2016-05-03 16:25:53 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-05-11 12:31:21 -0400 |
commit | 7dae69a2905c34a97678645c8e4c95095f5390b8 (patch) | |
tree | c60bebc39578bf13cd64989775e9dc9e71819a3a | |
parent | edf600dac65eecb6c8bcf21fa986db30ee21a2ac (diff) |
drm/amdgpu: fetch cu_info once at init
Fetch this info once at init and just store the results
for future requests.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 20 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 23 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 1 |
9 files changed, 25 insertions, 46 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index abe62ecaaef4..6589d43bd094 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -1148,6 +1148,12 @@ struct amdgpu_gca_config { | |||
1148 | uint32_t macrotile_mode_array[16]; | 1148 | uint32_t macrotile_mode_array[16]; |
1149 | }; | 1149 | }; |
1150 | 1150 | ||
1151 | struct amdgpu_cu_info { | ||
1152 | uint32_t number; /* total active CU number */ | ||
1153 | uint32_t ao_cu_mask; | ||
1154 | uint32_t bitmap[4][4]; | ||
1155 | }; | ||
1156 | |||
1151 | struct amdgpu_gfx { | 1157 | struct amdgpu_gfx { |
1152 | struct mutex gpu_clock_mutex; | 1158 | struct mutex gpu_clock_mutex; |
1153 | struct amdgpu_gca_config config; | 1159 | struct amdgpu_gca_config config; |
@@ -1180,9 +1186,10 @@ struct amdgpu_gfx { | |||
1180 | struct amdgpu_irq_src priv_reg_irq; | 1186 | struct amdgpu_irq_src priv_reg_irq; |
1181 | struct amdgpu_irq_src priv_inst_irq; | 1187 | struct amdgpu_irq_src priv_inst_irq; |
1182 | /* gfx status */ | 1188 | /* gfx status */ |
1183 | uint32_t gfx_current_status; | 1189 | uint32_t gfx_current_status; |
1184 | /* ce ram size*/ | 1190 | /* ce ram size*/ |
1185 | unsigned ce_ram_size; | 1191 | unsigned ce_ram_size; |
1192 | struct amdgpu_cu_info cu_info; | ||
1186 | }; | 1193 | }; |
1187 | 1194 | ||
1188 | int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm, | 1195 | int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm, |
@@ -1794,13 +1801,6 @@ struct amdgpu_allowed_register_entry { | |||
1794 | bool grbm_indexed; | 1801 | bool grbm_indexed; |
1795 | }; | 1802 | }; |
1796 | 1803 | ||
1797 | struct amdgpu_cu_info { | ||
1798 | uint32_t number; /* total active CU number */ | ||
1799 | uint32_t ao_cu_mask; | ||
1800 | uint32_t bitmap[4][4]; | ||
1801 | }; | ||
1802 | |||
1803 | |||
1804 | /* | 1804 | /* |
1805 | * ASIC specific functions. | 1805 | * ASIC specific functions. |
1806 | */ | 1806 | */ |
@@ -1818,7 +1818,6 @@ struct amdgpu_asic_funcs { | |||
1818 | u32 (*get_xclk)(struct amdgpu_device *adev); | 1818 | u32 (*get_xclk)(struct amdgpu_device *adev); |
1819 | /* get the gpu clock counter */ | 1819 | /* get the gpu clock counter */ |
1820 | uint64_t (*get_gpu_clock_counter)(struct amdgpu_device *adev); | 1820 | uint64_t (*get_gpu_clock_counter)(struct amdgpu_device *adev); |
1821 | int (*get_cu_info)(struct amdgpu_device *adev, struct amdgpu_cu_info *info); | ||
1822 | /* MM block clocks */ | 1821 | /* MM block clocks */ |
1823 | int (*set_uvd_clocks)(struct amdgpu_device *adev, u32 vclk, u32 dclk); | 1822 | int (*set_uvd_clocks)(struct amdgpu_device *adev, u32 vclk, u32 dclk); |
1824 | int (*set_vce_clocks)(struct amdgpu_device *adev, u32 evclk, u32 ecclk); | 1823 | int (*set_vce_clocks)(struct amdgpu_device *adev, u32 evclk, u32 ecclk); |
@@ -2210,7 +2209,6 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
2210 | #define amdgpu_asic_read_disabled_bios(adev) (adev)->asic_funcs->read_disabled_bios((adev)) | 2209 | #define amdgpu_asic_read_disabled_bios(adev) (adev)->asic_funcs->read_disabled_bios((adev)) |
2211 | #define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) | 2210 | #define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) |
2212 | #define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) | 2211 | #define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) |
2213 | #define amdgpu_asic_get_cu_info(adev, info) (adev)->asic_funcs->get_cu_info((adev), (info)) | ||
2214 | #define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) | 2212 | #define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) |
2215 | #define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) | 2213 | #define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) |
2216 | #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) | 2214 | #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index 490464e39322..199f76baf22c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -793,7 +793,6 @@ static int amdgpu_cgs_query_system_info(struct cgs_device *cgs_device, | |||
793 | struct cgs_system_info *sys_info) | 793 | struct cgs_system_info *sys_info) |
794 | { | 794 | { |
795 | CGS_FUNC_ADEV; | 795 | CGS_FUNC_ADEV; |
796 | struct amdgpu_cu_info cu_info; | ||
797 | 796 | ||
798 | if (NULL == sys_info) | 797 | if (NULL == sys_info) |
799 | return -ENODEV; | 798 | return -ENODEV; |
@@ -818,8 +817,7 @@ static int amdgpu_cgs_query_system_info(struct cgs_device *cgs_device, | |||
818 | sys_info->value = adev->pg_flags; | 817 | sys_info->value = adev->pg_flags; |
819 | break; | 818 | break; |
820 | case CGS_SYSTEM_INFO_GFX_CU_INFO: | 819 | case CGS_SYSTEM_INFO_GFX_CU_INFO: |
821 | amdgpu_asic_get_cu_info(adev, &cu_info); | 820 | sys_info->value = adev->gfx.cu_info.number; |
822 | sys_info->value = cu_info.number; | ||
823 | break; | 821 | break; |
824 | default: | 822 | default: |
825 | return -ENODEV; | 823 | return -ENODEV; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index 7db271278e70..40a23704a981 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
@@ -427,7 +427,6 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
427 | } | 427 | } |
428 | case AMDGPU_INFO_DEV_INFO: { | 428 | case AMDGPU_INFO_DEV_INFO: { |
429 | struct drm_amdgpu_info_device dev_info = {}; | 429 | struct drm_amdgpu_info_device dev_info = {}; |
430 | struct amdgpu_cu_info cu_info; | ||
431 | 430 | ||
432 | dev_info.device_id = dev->pdev->device; | 431 | dev_info.device_id = dev->pdev->device; |
433 | dev_info.chip_rev = adev->rev_id; | 432 | dev_info.chip_rev = adev->rev_id; |
@@ -461,11 +460,11 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
461 | AMDGPU_GPU_PAGE_SIZE; | 460 | AMDGPU_GPU_PAGE_SIZE; |
462 | dev_info.gart_page_size = AMDGPU_GPU_PAGE_SIZE; | 461 | dev_info.gart_page_size = AMDGPU_GPU_PAGE_SIZE; |
463 | 462 | ||
464 | amdgpu_asic_get_cu_info(adev, &cu_info); | 463 | dev_info.cu_active_number = adev->gfx.cu_info.number; |
465 | dev_info.cu_active_number = cu_info.number; | 464 | dev_info.cu_ao_mask = adev->gfx.cu_info.ao_cu_mask; |
466 | dev_info.cu_ao_mask = cu_info.ao_cu_mask; | ||
467 | dev_info.ce_ram_size = adev->gfx.ce_ram_size; | 465 | dev_info.ce_ram_size = adev->gfx.ce_ram_size; |
468 | memcpy(&dev_info.cu_bitmap[0], &cu_info.bitmap[0], sizeof(cu_info.bitmap)); | 466 | memcpy(&dev_info.cu_bitmap[0], &adev->gfx.cu_info.bitmap[0], |
467 | sizeof(adev->gfx.cu_info.bitmap)); | ||
469 | dev_info.vram_type = adev->mc.vram_type; | 468 | dev_info.vram_type = adev->mc.vram_type; |
470 | dev_info.vram_bit_width = adev->mc.vram_width; | 469 | dev_info.vram_bit_width = adev->mc.vram_width; |
471 | dev_info.vce_harvest_config = adev->vce.harvest_config; | 470 | dev_info.vce_harvest_config = adev->vce.harvest_config; |
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c index c6127d66de11..68e569853c95 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik.c +++ b/drivers/gpu/drm/amd/amdgpu/cik.c | |||
@@ -2007,7 +2007,6 @@ static const struct amdgpu_asic_funcs cik_asic_funcs = | |||
2007 | .get_xclk = &cik_get_xclk, | 2007 | .get_xclk = &cik_get_xclk, |
2008 | .set_uvd_clocks = &cik_set_uvd_clocks, | 2008 | .set_uvd_clocks = &cik_set_uvd_clocks, |
2009 | .set_vce_clocks = &cik_set_vce_clocks, | 2009 | .set_vce_clocks = &cik_set_vce_clocks, |
2010 | .get_cu_info = &gfx_v7_0_get_cu_info, | ||
2011 | /* these should be moved to their own ip modules */ | 2010 | /* these should be moved to their own ip modules */ |
2012 | .get_gpu_clock_counter = &gfx_v7_0_get_gpu_clock_counter, | 2011 | .get_gpu_clock_counter = &gfx_v7_0_get_gpu_clock_counter, |
2013 | .wait_for_mc_idle = &gmc_v7_0_mc_wait_for_idle, | 2012 | .wait_for_mc_idle = &gmc_v7_0_mc_wait_for_idle, |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index 03108909a275..0014a9ceaf29 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | |||
@@ -53,7 +53,6 @@ | |||
53 | static void gfx_v7_0_set_ring_funcs(struct amdgpu_device *adev); | 53 | static void gfx_v7_0_set_ring_funcs(struct amdgpu_device *adev); |
54 | static void gfx_v7_0_set_irq_funcs(struct amdgpu_device *adev); | 54 | static void gfx_v7_0_set_irq_funcs(struct amdgpu_device *adev); |
55 | static void gfx_v7_0_set_gds_init(struct amdgpu_device *adev); | 55 | static void gfx_v7_0_set_gds_init(struct amdgpu_device *adev); |
56 | int gfx_v7_0_get_cu_info(struct amdgpu_device *, struct amdgpu_cu_info *); | ||
57 | 56 | ||
58 | MODULE_FIRMWARE("radeon/bonaire_pfp.bin"); | 57 | MODULE_FIRMWARE("radeon/bonaire_pfp.bin"); |
59 | MODULE_FIRMWARE("radeon/bonaire_me.bin"); | 58 | MODULE_FIRMWARE("radeon/bonaire_me.bin"); |
@@ -882,6 +881,7 @@ static u32 gfx_v7_0_get_csb_size(struct amdgpu_device *adev); | |||
882 | static void gfx_v7_0_get_csb_buffer(struct amdgpu_device *adev, volatile u32 *buffer); | 881 | static void gfx_v7_0_get_csb_buffer(struct amdgpu_device *adev, volatile u32 *buffer); |
883 | static void gfx_v7_0_init_cp_pg_table(struct amdgpu_device *adev); | 882 | static void gfx_v7_0_init_cp_pg_table(struct amdgpu_device *adev); |
884 | static void gfx_v7_0_init_pg(struct amdgpu_device *adev); | 883 | static void gfx_v7_0_init_pg(struct amdgpu_device *adev); |
884 | static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev); | ||
885 | 885 | ||
886 | /* | 886 | /* |
887 | * Core functions | 887 | * Core functions |
@@ -1718,6 +1718,7 @@ static void gfx_v7_0_gpu_init(struct amdgpu_device *adev) | |||
1718 | gfx_v7_0_tiling_mode_table_init(adev); | 1718 | gfx_v7_0_tiling_mode_table_init(adev); |
1719 | 1719 | ||
1720 | gfx_v7_0_setup_rb(adev); | 1720 | gfx_v7_0_setup_rb(adev); |
1721 | gfx_v7_0_get_cu_info(adev); | ||
1721 | 1722 | ||
1722 | /* set HW defaults for 3D engine */ | 1723 | /* set HW defaults for 3D engine */ |
1723 | WREG32(mmCP_MEQ_THRESHOLDS, | 1724 | WREG32(mmCP_MEQ_THRESHOLDS, |
@@ -3869,18 +3870,13 @@ static u32 gfx_v7_0_get_cu_active_bitmap(struct amdgpu_device *adev) | |||
3869 | 3870 | ||
3870 | static void gfx_v7_0_init_ao_cu_mask(struct amdgpu_device *adev) | 3871 | static void gfx_v7_0_init_ao_cu_mask(struct amdgpu_device *adev) |
3871 | { | 3872 | { |
3872 | uint32_t tmp, active_cu_number; | 3873 | u32 tmp; |
3873 | struct amdgpu_cu_info cu_info; | ||
3874 | |||
3875 | gfx_v7_0_get_cu_info(adev, &cu_info); | ||
3876 | tmp = cu_info.ao_cu_mask; | ||
3877 | active_cu_number = cu_info.number; | ||
3878 | 3874 | ||
3879 | WREG32(mmRLC_PG_ALWAYS_ON_CU_MASK, tmp); | 3875 | WREG32(mmRLC_PG_ALWAYS_ON_CU_MASK, adev->gfx.cu_info.ao_cu_mask); |
3880 | 3876 | ||
3881 | tmp = RREG32(mmRLC_MAX_PG_CU); | 3877 | tmp = RREG32(mmRLC_MAX_PG_CU); |
3882 | tmp &= ~RLC_MAX_PG_CU__MAX_POWERED_UP_CU_MASK; | 3878 | tmp &= ~RLC_MAX_PG_CU__MAX_POWERED_UP_CU_MASK; |
3883 | tmp |= (active_cu_number << RLC_MAX_PG_CU__MAX_POWERED_UP_CU__SHIFT); | 3879 | tmp |= (adev->gfx.cu_info.number << RLC_MAX_PG_CU__MAX_POWERED_UP_CU__SHIFT); |
3884 | WREG32(mmRLC_MAX_PG_CU, tmp); | 3880 | WREG32(mmRLC_MAX_PG_CU, tmp); |
3885 | } | 3881 | } |
3886 | 3882 | ||
@@ -5015,14 +5011,11 @@ static void gfx_v7_0_set_gds_init(struct amdgpu_device *adev) | |||
5015 | } | 5011 | } |
5016 | 5012 | ||
5017 | 5013 | ||
5018 | int gfx_v7_0_get_cu_info(struct amdgpu_device *adev, | 5014 | static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev) |
5019 | struct amdgpu_cu_info *cu_info) | ||
5020 | { | 5015 | { |
5021 | int i, j, k, counter, active_cu_number = 0; | 5016 | int i, j, k, counter, active_cu_number = 0; |
5022 | u32 mask, bitmap, ao_bitmap, ao_cu_mask = 0; | 5017 | u32 mask, bitmap, ao_bitmap, ao_cu_mask = 0; |
5023 | 5018 | struct amdgpu_cu_info *cu_info = &adev->gfx.cu_info; | |
5024 | if (!adev || !cu_info) | ||
5025 | return -EINVAL; | ||
5026 | 5019 | ||
5027 | memset(cu_info, 0, sizeof(*cu_info)); | 5020 | memset(cu_info, 0, sizeof(*cu_info)); |
5028 | 5021 | ||
@@ -5053,6 +5046,4 @@ int gfx_v7_0_get_cu_info(struct amdgpu_device *adev, | |||
5053 | 5046 | ||
5054 | cu_info->number = active_cu_number; | 5047 | cu_info->number = active_cu_number; |
5055 | cu_info->ao_cu_mask = ao_cu_mask; | 5048 | cu_info->ao_cu_mask = ao_cu_mask; |
5056 | |||
5057 | return 0; | ||
5058 | } | 5049 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h index c04bfbabfc88..e747aa935c88 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.h | |||
@@ -32,6 +32,5 @@ void gfx_v7_0_exit_rlc_safe_mode(struct amdgpu_device *adev); | |||
32 | void gfx_v7_0_rlc_stop(struct amdgpu_device *adev); | 32 | void gfx_v7_0_rlc_stop(struct amdgpu_device *adev); |
33 | uint64_t gfx_v7_0_get_gpu_clock_counter(struct amdgpu_device *adev); | 33 | uint64_t gfx_v7_0_get_gpu_clock_counter(struct amdgpu_device *adev); |
34 | void gfx_v7_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num); | 34 | void gfx_v7_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num); |
35 | int gfx_v7_0_get_cu_info(struct amdgpu_device *adev, struct amdgpu_cu_info *cu_info); | ||
36 | 35 | ||
37 | #endif | 36 | #endif |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 4ea4b4eb0bc5..7525f99858f1 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
@@ -636,6 +636,7 @@ static void gfx_v8_0_set_irq_funcs(struct amdgpu_device *adev); | |||
636 | static void gfx_v8_0_set_gds_init(struct amdgpu_device *adev); | 636 | static void gfx_v8_0_set_gds_init(struct amdgpu_device *adev); |
637 | static void gfx_v8_0_set_rlc_funcs(struct amdgpu_device *adev); | 637 | static void gfx_v8_0_set_rlc_funcs(struct amdgpu_device *adev); |
638 | static u32 gfx_v8_0_get_csb_size(struct amdgpu_device *adev); | 638 | static u32 gfx_v8_0_get_csb_size(struct amdgpu_device *adev); |
639 | static void gfx_v8_0_get_cu_info(struct amdgpu_device *adev); | ||
639 | 640 | ||
640 | static void gfx_v8_0_init_golden_registers(struct amdgpu_device *adev) | 641 | static void gfx_v8_0_init_golden_registers(struct amdgpu_device *adev) |
641 | { | 642 | { |
@@ -3431,6 +3432,7 @@ static void gfx_v8_0_gpu_init(struct amdgpu_device *adev) | |||
3431 | gfx_v8_0_tiling_mode_table_init(adev); | 3432 | gfx_v8_0_tiling_mode_table_init(adev); |
3432 | 3433 | ||
3433 | gfx_v8_0_setup_rb(adev); | 3434 | gfx_v8_0_setup_rb(adev); |
3435 | gfx_v8_0_get_cu_info(adev); | ||
3434 | 3436 | ||
3435 | /* XXX SH_MEM regs */ | 3437 | /* XXX SH_MEM regs */ |
3436 | /* where to put LDS, scratch, GPUVM in FSA64 space */ | 3438 | /* where to put LDS, scratch, GPUVM in FSA64 space */ |
@@ -6212,14 +6214,11 @@ static u32 gfx_v8_0_get_cu_active_bitmap(struct amdgpu_device *adev) | |||
6212 | return (~data) & mask; | 6214 | return (~data) & mask; |
6213 | } | 6215 | } |
6214 | 6216 | ||
6215 | int gfx_v8_0_get_cu_info(struct amdgpu_device *adev, | 6217 | static void gfx_v8_0_get_cu_info(struct amdgpu_device *adev) |
6216 | struct amdgpu_cu_info *cu_info) | ||
6217 | { | 6218 | { |
6218 | int i, j, k, counter, active_cu_number = 0; | 6219 | int i, j, k, counter, active_cu_number = 0; |
6219 | u32 mask, bitmap, ao_bitmap, ao_cu_mask = 0; | 6220 | u32 mask, bitmap, ao_bitmap, ao_cu_mask = 0; |
6220 | 6221 | struct amdgpu_cu_info *cu_info = &adev->gfx.cu_info; | |
6221 | if (!adev || !cu_info) | ||
6222 | return -EINVAL; | ||
6223 | 6222 | ||
6224 | memset(cu_info, 0, sizeof(*cu_info)); | 6223 | memset(cu_info, 0, sizeof(*cu_info)); |
6225 | 6224 | ||
@@ -6250,6 +6249,4 @@ int gfx_v8_0_get_cu_info(struct amdgpu_device *adev, | |||
6250 | 6249 | ||
6251 | cu_info->number = active_cu_number; | 6250 | cu_info->number = active_cu_number; |
6252 | cu_info->ao_cu_mask = ao_cu_mask; | 6251 | cu_info->ao_cu_mask = ao_cu_mask; |
6253 | |||
6254 | return 0; | ||
6255 | } | 6252 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h index 021e05193cb9..16a49f53a2fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.h | |||
@@ -28,6 +28,5 @@ extern const struct amd_ip_funcs gfx_v8_0_ip_funcs; | |||
28 | 28 | ||
29 | uint64_t gfx_v8_0_get_gpu_clock_counter(struct amdgpu_device *adev); | 29 | uint64_t gfx_v8_0_get_gpu_clock_counter(struct amdgpu_device *adev); |
30 | void gfx_v8_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num); | 30 | void gfx_v8_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num); |
31 | int gfx_v8_0_get_cu_info(struct amdgpu_device *adev, struct amdgpu_cu_info *cu_info); | ||
32 | 31 | ||
33 | #endif | 32 | #endif |
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 31dd6304f208..b7da094f8bf9 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -1118,7 +1118,6 @@ static const struct amdgpu_asic_funcs vi_asic_funcs = | |||
1118 | .get_xclk = &vi_get_xclk, | 1118 | .get_xclk = &vi_get_xclk, |
1119 | .set_uvd_clocks = &vi_set_uvd_clocks, | 1119 | .set_uvd_clocks = &vi_set_uvd_clocks, |
1120 | .set_vce_clocks = &vi_set_vce_clocks, | 1120 | .set_vce_clocks = &vi_set_vce_clocks, |
1121 | .get_cu_info = &gfx_v8_0_get_cu_info, | ||
1122 | /* these should be moved to their own ip modules */ | 1121 | /* these should be moved to their own ip modules */ |
1123 | .get_gpu_clock_counter = &gfx_v8_0_get_gpu_clock_counter, | 1122 | .get_gpu_clock_counter = &gfx_v8_0_get_gpu_clock_counter, |
1124 | .wait_for_mc_idle = &gmc_v8_0_mc_wait_for_idle, | 1123 | .wait_for_mc_idle = &gmc_v8_0_mc_wait_for_idle, |