| From 687e79c0feb4243b141b1e9a20adba3c0ec66f7f Mon Sep 17 00:00:00 2001 |
| From: Likun Gao <Likun.Gao@amd.com> |
| Date: Thu, 22 Oct 2020 00:50:07 +0800 |
| Subject: drm/amdgpu: correct the cu and rb info for sienna cichlid |
| |
| From: Likun Gao <Likun.Gao@amd.com> |
| |
| commit 687e79c0feb4243b141b1e9a20adba3c0ec66f7f upstream. |
| |
| Skip disabled sa to correct the cu_info and active_rbs for sienna cichlid. |
| |
| Signed-off-by: Likun Gao <Likun.Gao@amd.com> |
| Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Cc: stable@vger.kernel.org # 5.9.x |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| |
| --- |
| drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c |
| +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c |
| @@ -4537,12 +4537,17 @@ static void gfx_v10_0_setup_rb(struct am |
| int i, j; |
| u32 data; |
| u32 active_rbs = 0; |
| + u32 bitmap; |
| u32 rb_bitmap_width_per_sh = adev->gfx.config.max_backends_per_se / |
| adev->gfx.config.max_sh_per_se; |
| |
| mutex_lock(&adev->grbm_idx_mutex); |
| for (i = 0; i < adev->gfx.config.max_shader_engines; i++) { |
| for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) { |
| + bitmap = i * adev->gfx.config.max_sh_per_se + j; |
| + if ((adev->asic_type == CHIP_SIENNA_CICHLID) && |
| + ((gfx_v10_3_get_disabled_sa(adev) >> bitmap) & 1)) |
| + continue; |
| gfx_v10_0_select_se_sh(adev, i, j, 0xffffffff); |
| data = gfx_v10_0_get_rb_active_bitmap(adev); |
| active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) * |
| @@ -8761,6 +8766,10 @@ static int gfx_v10_0_get_cu_info(struct |
| mutex_lock(&adev->grbm_idx_mutex); |
| for (i = 0; i < adev->gfx.config.max_shader_engines; i++) { |
| for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) { |
| + bitmap = i * adev->gfx.config.max_sh_per_se + j; |
| + if ((adev->asic_type == CHIP_SIENNA_CICHLID) && |
| + ((gfx_v10_3_get_disabled_sa(adev) >> bitmap) & 1)) |
| + continue; |
| mask = 1; |
| ao_bitmap = 0; |
| counter = 0; |