aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch')
-rw-r--r--common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch134
1 files changed, 134 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch b/common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch
new file mode 100644
index 00000000..be55999b
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0337-drm-amdgpu-fix-rb-bitmap-cu-bitmap-calculation.patch
@@ -0,0 +1,134 @@
+From 009b73a51358b0ed72610b683f8fe866a8c45fc8 Mon Sep 17 00:00:00 2001
+From: Flora Cui <Flora.Cui@amd.com>
+Date: Thu, 3 Mar 2016 12:59:49 +0800
+Subject: [PATCH 0337/1110] drm/amdgpu: fix rb bitmap & cu bitmap calculation
+
+Fix some copy paste typos.
+
+Signed-off-by: Flora Cui <Flora.Cui@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/cikd.h | 3 ---
+ drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 15 +++++++--------
+ drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 9 ++++++---
+ drivers/gpu/drm/amd/amdgpu/vid.h | 2 --
+ 4 files changed, 13 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/cikd.h b/drivers/gpu/drm/amd/amdgpu/cikd.h
+index 7f6d457..60d4493 100644
+--- a/drivers/gpu/drm/amd/amdgpu/cikd.h
++++ b/drivers/gpu/drm/amd/amdgpu/cikd.h
+@@ -46,9 +46,6 @@
+ #define BONAIRE_GB_ADDR_CONFIG_GOLDEN 0x12010001
+ #define HAWAII_GB_ADDR_CONFIG_GOLDEN 0x12011003
+
+-#define CIK_RB_BITMAP_WIDTH_PER_SH 2
+-#define HAWAII_RB_BITMAP_WIDTH_PER_SH 4
+-
+ #define AMDGPU_NUM_OF_VMIDS 8
+
+ #define PIPEID(x) ((x) << 0)
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+index d0cb200..361ce1b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+@@ -1637,18 +1637,16 @@ static void gfx_v7_0_setup_rb(struct amdgpu_device *adev)
+ int i, j;
+ u32 data;
+ u32 active_rbs = 0;
++ 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++) {
+ gfx_v7_0_select_se_sh(adev, i, j);
+ data = gfx_v7_0_get_rb_active_bitmap(adev);
+- if (adev->asic_type == CHIP_HAWAII)
+- active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *
+- HAWAII_RB_BITMAP_WIDTH_PER_SH);
+- else
+- active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *
+- CIK_RB_BITMAP_WIDTH_PER_SH);
++ active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *
++ rb_bitmap_width_per_sh);
+ }
+ }
+ gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);
+@@ -3833,8 +3831,7 @@ static u32 gfx_v7_0_get_cu_active_bitmap(struct amdgpu_device *adev)
+ data &= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_CUS_MASK;
+ data >>= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_CUS__SHIFT;
+
+- mask = gfx_v7_0_create_bitmask(adev->gfx.config.max_backends_per_se /
+- adev->gfx.config.max_sh_per_se);
++ mask = gfx_v7_0_create_bitmask(adev->gfx.config.max_cu_per_sh);
+
+ return (~data) & mask;
+ }
+@@ -5245,6 +5242,8 @@ int gfx_v7_0_get_cu_info(struct amdgpu_device *adev,
+ if (!adev || !cu_info)
+ return -EINVAL;
+
++ memset(cu_info, 0, sizeof(*cu_info));
++
+ 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++) {
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+index fadbfd8..1cda1af 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+@@ -2615,6 +2615,8 @@ static void gfx_v8_0_setup_rb(struct amdgpu_device *adev)
+ int i, j;
+ u32 data;
+ u32 active_rbs = 0;
++ 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++) {
+@@ -2622,7 +2624,7 @@ static void gfx_v8_0_setup_rb(struct amdgpu_device *adev)
+ gfx_v8_0_select_se_sh(adev, i, j);
+ data = gfx_v8_0_get_rb_active_bitmap(adev);
+ active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *
+- RB_BITMAP_WIDTH_PER_SH);
++ rb_bitmap_width_per_sh);
+ }
+ }
+ gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);
+@@ -5127,8 +5129,7 @@ static u32 gfx_v8_0_get_cu_active_bitmap(struct amdgpu_device *adev)
+ data &= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_CUS_MASK;
+ data >>= CC_GC_SHADER_ARRAY_CONFIG__INACTIVE_CUS__SHIFT;
+
+- mask = gfx_v8_0_create_bitmask(adev->gfx.config.max_backends_per_se /
+- adev->gfx.config.max_sh_per_se);
++ mask = gfx_v8_0_create_bitmask(adev->gfx.config.max_cu_per_sh);
+
+ return (~data) & mask;
+ }
+@@ -5142,6 +5143,8 @@ int gfx_v8_0_get_cu_info(struct amdgpu_device *adev,
+ if (!adev || !cu_info)
+ return -EINVAL;
+
++ memset(cu_info, 0, sizeof(*cu_info));
++
+ 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++) {
+diff --git a/drivers/gpu/drm/amd/amdgpu/vid.h b/drivers/gpu/drm/amd/amdgpu/vid.h
+index d98aa9d..ace4997 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vid.h
++++ b/drivers/gpu/drm/amd/amdgpu/vid.h
+@@ -71,8 +71,6 @@
+ #define VMID(x) ((x) << 4)
+ #define QUEUEID(x) ((x) << 8)
+
+-#define RB_BITMAP_WIDTH_PER_SH 2
+-
+ #define MC_SEQ_MISC0__MT__MASK 0xf0000000
+ #define MC_SEQ_MISC0__MT__GDDR1 0x10000000
+ #define MC_SEQ_MISC0__MT__DDR2 0x20000000
+--
+2.7.4
+