[PATCH 4/6] drm/amdgpu/gfx: Absorb gfx_v8_0_get_csb_buffer into gfx_get_csb_buffer
Rodrigo Siqueira
siqueira at igalia.com
Sun Apr 6 23:02:59 UTC 2025
The gfx_v8_0_get_csb_buffer only differs from gfx_get_csb_buffer in a
sequence where some specific registers must be used. To assimilate
gfx_v8_0_get_csb_buffer into gfx_get_csb_buffer, it was necessary two
modifications:
1. In gfx_get_csb_buffer, check for GFX8 and, based on that, execute the
specific operation.
2. Move mmPA_SC_RASTER_CONFIG registers to the common register list.
Signed-off-by: Rodrigo Siqueira <siqueira at igalia.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 12 ++++-
drivers/gpu/drm/amd/amdgpu/cik.c | 2 +
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 2 +
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 2 +
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 51 ++-----------------
drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c | 1 +
drivers/gpu/drm/amd/amdgpu/si.c | 2 +
drivers/gpu/drm/amd/amdgpu/vi.c | 2 +
.../include/asic_reg/gc/gc_10_1_0_offset.h | 1 -
.../include/asic_reg/gc/gc_10_3_0_offset.h | 1 -
.../amd/include/asic_reg/gc/gc_9_0_offset.h | 1 -
.../amd/include/asic_reg/gc/gc_9_1_offset.h | 1 -
.../amd/include/asic_reg/gc/gc_9_2_1_offset.h | 1 -
.../include/asic_reg/gc/gc_common_offset.h | 2 +
.../drm/amd/include/asic_reg/gca/gfx_6_0_d.h | 1 -
.../drm/amd/include/asic_reg/gca/gfx_7_0_d.h | 1 -
.../drm/amd/include/asic_reg/gca/gfx_7_2_d.h | 1 -
.../drm/amd/include/asic_reg/gca/gfx_8_0_d.h | 1 -
.../drm/amd/include/asic_reg/gca/gfx_8_1_d.h | 1 -
19 files changed, 27 insertions(+), 59 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index b26f9f053670..71a25f626fee 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -2254,8 +2254,16 @@ void gfx_get_csb_buffer(struct amdgpu_device *adev, volatile u32 *buffer)
}
}
- // GFX10 and GFX11 requires the below operation, but GFX9 should skip
- // it.
+ // GFX8 specific operation
+ if (amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(8, 0, 0) &&
+ amdgpu_ip_version(adev, GC_HWIP, 0) < IP_VERSION(9, 0, 0)) {
+ buffer[count++] = cpu_to_le32(PACKET3(PACKET3_SET_CONTEXT_REG, 2));
+ buffer[count++] = cpu_to_le32(mmPA_SC_RASTER_CONFIG - PACKET3_SET_CONTEXT_REG_START);
+ buffer[count++] = cpu_to_le32(adev->gfx.config.rb_config[0][0].raster_config);
+ buffer[count++] = cpu_to_le32(adev->gfx.config.rb_config[0][0].raster_config_1);
+ }
+
+ // GFX10 and GFX11 specific operation.
if (amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(10, 0, 0) &&
amdgpu_ip_version(adev, GC_HWIP, 0) < IP_VERSION(12, 0, 0)) {
ctx_reg_offset = SOC15_REG_OFFSET(GC, 0, mmPA_SC_TILE_STEERING_OVERRIDE) - PACKET3_SET_CONTEXT_REG_START;
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c
index 9cd63b4177bf..a83549273de3 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
@@ -58,6 +58,8 @@
#include "bif/bif_4_1_d.h"
#include "bif/bif_4_1_sh_mask.h"
+#include "gc/gc_common_offset.h"
+
#include "gca/gfx_7_2_d.h"
#include "gca/gfx_7_2_enum.h"
#include "gca/gfx_7_2_sh_mask.h"
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
index d86620f38855..ff794410794d 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
@@ -37,6 +37,8 @@
#include "oss/oss_1_0_d.h"
#include "oss/oss_1_0_sh_mask.h"
+#include "gc/gc_common_offset.h"
+
#include "gca/gfx_6_0_d.h"
#include "gca/gfx_6_0_sh_mask.h"
#include "gca/gfx_7_2_enum.h"
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 0fdc4362bbc0..6423b7a31e84 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -40,6 +40,8 @@
#include "bif/bif_4_1_d.h"
#include "bif/bif_4_1_sh_mask.h"
+#include "gc/gc_common_offset.h"
+
#include "gca/gfx_7_0_d.h"
#include "gca/gfx_7_2_enum.h"
#include "gca/gfx_7_2_sh_mask.h"
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index fc73be4ab068..c781edc7f001 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -38,6 +38,8 @@
#include "atombios_i2c.h"
#include "clearstate_vi.h"
+#include "gc/gc_common_offset.h"
+
#include "gmc/gmc_8_2_d.h"
#include "gmc/gmc_8_2_sh_mask.h"
@@ -1220,51 +1222,6 @@ static int gfx_v8_0_init_microcode(struct amdgpu_device *adev)
return err;
}
-static void gfx_v8_0_get_csb_buffer(struct amdgpu_device *adev,
- volatile u32 *buffer)
-{
- u32 count = 0, i;
- const struct cs_section_def *sect = NULL;
- const struct cs_extent_def *ext = NULL;
-
- if (adev->gfx.rlc.cs_data == NULL)
- return;
- if (buffer == NULL)
- return;
-
- buffer[count++] = cpu_to_le32(PACKET3(PACKET3_PREAMBLE_CNTL, 0));
- buffer[count++] = cpu_to_le32(PACKET3_PREAMBLE_BEGIN_CLEAR_STATE);
-
- buffer[count++] = cpu_to_le32(PACKET3(PACKET3_CONTEXT_CONTROL, 1));
- buffer[count++] = cpu_to_le32(0x80000000);
- buffer[count++] = cpu_to_le32(0x80000000);
-
- for (sect = adev->gfx.rlc.cs_data; sect->section != NULL; ++sect) {
- for (ext = sect->section; ext->extent != NULL; ++ext) {
- if (sect->id == SECT_CONTEXT) {
- buffer[count++] =
- cpu_to_le32(PACKET3(PACKET3_SET_CONTEXT_REG, ext->reg_count));
- buffer[count++] = cpu_to_le32(ext->reg_index -
- PACKET3_SET_CONTEXT_REG_START);
- for (i = 0; i < ext->reg_count; i++)
- buffer[count++] = cpu_to_le32(ext->extent[i]);
- }
- }
- }
-
- buffer[count++] = cpu_to_le32(PACKET3(PACKET3_SET_CONTEXT_REG, 2));
- buffer[count++] = cpu_to_le32(mmPA_SC_RASTER_CONFIG -
- PACKET3_SET_CONTEXT_REG_START);
- buffer[count++] = cpu_to_le32(adev->gfx.config.rb_config[0][0].raster_config);
- buffer[count++] = cpu_to_le32(adev->gfx.config.rb_config[0][0].raster_config_1);
-
- buffer[count++] = cpu_to_le32(PACKET3(PACKET3_PREAMBLE_CNTL, 0));
- buffer[count++] = cpu_to_le32(PACKET3_PREAMBLE_END_CLEAR_STATE);
-
- buffer[count++] = cpu_to_le32(PACKET3(PACKET3_CLEAR_STATE, 0));
- buffer[count++] = cpu_to_le32(0);
-}
-
static int gfx_v8_0_cp_jump_table_num(struct amdgpu_device *adev)
{
if (adev->asic_type == CHIP_CARRIZO)
@@ -3875,7 +3832,8 @@ static void gfx_v8_0_enable_gui_idle_interrupt(struct amdgpu_device *adev,
static void gfx_v8_0_init_csb(struct amdgpu_device *adev)
{
- adev->gfx.rlc.funcs->get_csb_buffer(adev, adev->gfx.rlc.cs_ptr);
+ gfx_get_csb_buffer(adev, adev->gfx.rlc.cs_ptr);
+
/* csib */
WREG32(mmRLC_CSIB_ADDR_HI,
adev->gfx.rlc.clear_state_gpu_addr >> 32);
@@ -5588,7 +5546,6 @@ static const struct amdgpu_rlc_funcs iceland_rlc_funcs = {
.unset_safe_mode = gfx_v8_0_unset_safe_mode,
.init = gfx_v8_0_rlc_init,
.get_csb_size = gfx_v8_0_get_csb_size,
- .get_csb_buffer = gfx_v8_0_get_csb_buffer,
.get_cp_table_num = gfx_v8_0_cp_jump_table_num,
.resume = gfx_v8_0_rlc_resume,
.stop = gfx_v8_0_rlc_stop,
diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
index e1d63bed84bf..72a35b108135 100644
--- a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
@@ -33,6 +33,7 @@
#include "gfx_v8_0.h"
#include "sdma_v3_0.h"
#include "tonga_ih.h"
+#include "gc/gc_common_offset.h"
#include "gmc/gmc_8_2_d.h"
#include "gmc/gmc_8_2_sh_mask.h"
#include "oss/oss_3_0_d.h"
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c
index 94a6ec162640..be8d73419c23 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -51,6 +51,8 @@
#include "smu/smu_6_0_d.h"
#include "smu/smu_6_0_sh_mask.h"
+#include "gc/gc_common_offset.h"
+
#include "gca/gfx_6_0_d.h"
#include "gca/gfx_6_0_sh_mask.h"
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
index 86d8bc10d90a..910984c27480 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -44,6 +44,8 @@
#include "bif/bif_5_0_d.h"
#include "bif/bif_5_0_sh_mask.h"
+#include "gc/gc_common_offset.h"
+
#include "gca/gfx_8_0_d.h"
#include "gca/gfx_8_0_sh_mask.h"
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_1_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_1_0_offset.h
index 1e92f71f12b8..96bb71a7d4df 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_1_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_1_0_offset.h
@@ -5968,7 +5968,6 @@
#define mmPA_SC_VPORT_ZMIN_15_BASE_IDX 1
#define mmPA_SC_VPORT_ZMAX_15 0x00d3
#define mmPA_SC_VPORT_ZMAX_15_BASE_IDX 1
-#define mmPA_SC_RASTER_CONFIG 0x00d4
#define mmPA_SC_RASTER_CONFIG_BASE_IDX 1
#define mmPA_SC_RASTER_CONFIG_1 0x00d5
#define mmPA_SC_RASTER_CONFIG_1_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h
index 555a3bc26614..56f9233aa034 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h
@@ -5597,7 +5597,6 @@
#define mmPA_SC_VPORT_ZMIN_15_BASE_IDX 1
#define mmPA_SC_VPORT_ZMAX_15 0x00d3
#define mmPA_SC_VPORT_ZMAX_15_BASE_IDX 1
-#define mmPA_SC_RASTER_CONFIG 0x00d4
#define mmPA_SC_RASTER_CONFIG_BASE_IDX 1
#define mmPA_SC_RASTER_CONFIG_1 0x00d5
#define mmPA_SC_RASTER_CONFIG_1_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_0_offset.h
index d5c31df4cea7..e9357cab9cfb 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_0_offset.h
@@ -3578,7 +3578,6 @@
#define mmPA_SC_VPORT_ZMIN_15_BASE_IDX 1
#define mmPA_SC_VPORT_ZMAX_15 0x00d3
#define mmPA_SC_VPORT_ZMAX_15_BASE_IDX 1
-#define mmPA_SC_RASTER_CONFIG 0x00d4
#define mmPA_SC_RASTER_CONFIG_BASE_IDX 1
#define mmPA_SC_RASTER_CONFIG_1 0x00d5
#define mmPA_SC_RASTER_CONFIG_1_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_1_offset.h
index a7d476b6c8e3..21b43f102486 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_1_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_1_offset.h
@@ -3808,7 +3808,6 @@
#define mmPA_SC_VPORT_ZMIN_15_BASE_IDX 1
#define mmPA_SC_VPORT_ZMAX_15 0x00d3
#define mmPA_SC_VPORT_ZMAX_15_BASE_IDX 1
-#define mmPA_SC_RASTER_CONFIG 0x00d4
#define mmPA_SC_RASTER_CONFIG_BASE_IDX 1
#define mmPA_SC_RASTER_CONFIG_1 0x00d5
#define mmPA_SC_RASTER_CONFIG_1_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_2_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_2_1_offset.h
index fc5c7abb35e7..4ba0e8ccfa12 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_2_1_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_2_1_offset.h
@@ -3758,7 +3758,6 @@
#define mmPA_SC_VPORT_ZMIN_15_BASE_IDX 1
#define mmPA_SC_VPORT_ZMAX_15 0x00d3
#define mmPA_SC_VPORT_ZMAX_15_BASE_IDX 1
-#define mmPA_SC_RASTER_CONFIG 0x00d4
#define mmPA_SC_RASTER_CONFIG_BASE_IDX 1
#define mmPA_SC_RASTER_CONFIG_1 0x00d5
#define mmPA_SC_RASTER_CONFIG_1_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_common_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_common_offset.h
index 1f7c5f597c05..5fe3a031e379 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_common_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_common_offset.h
@@ -6,4 +6,6 @@
#define mmPA_SC_TILE_STEERING_OVERRIDE 0x00d7
#define mmPA_SC_TILE_STEERING_OVERRIDE_BASE_IDX 1
+#define mmPA_SC_RASTER_CONFIG 0xa0d4
+
#endif
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_6_0_d.h b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_6_0_d.h
index 6f44345277af..1dba803b8bab 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_6_0_d.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_6_0_d.h
@@ -1000,7 +1000,6 @@
#define mmPA_SC_PERFCOUNTER7_HI 0x22B7
#define mmPA_SC_PERFCOUNTER7_LO 0x22B6
#define mmPA_SC_PERFCOUNTER7_SELECT 0x22A7
-#define mmPA_SC_RASTER_CONFIG 0xA0D4
#define mmPA_SC_SCREEN_SCISSOR_BR 0xA00D
#define mmPA_SC_SCREEN_SCISSOR_TL 0xA00C
#define mmPA_SC_VPORT_SCISSOR_0_BR 0xA095
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_0_d.h b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_0_d.h
index b1d7cefb4bd1..d7fc5acb5ec7 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_0_d.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_0_d.h
@@ -1016,7 +1016,6 @@
#define mmPA_SC_LINE_STIPPLE 0xa283
#define mmPA_SC_MODE_CNTL_0 0xa292
#define mmPA_SC_MODE_CNTL_1 0xa293
-#define mmPA_SC_RASTER_CONFIG 0xa0d4
#define mmPA_SC_RASTER_CONFIG_1 0xa0d5
#define mmPA_SC_SCREEN_EXTENT_CONTROL 0xa0d6
#define mmPA_SC_GENERIC_SCISSOR_TL 0xa090
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_2_d.h b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_2_d.h
index 290ce6aa4b71..c189bff59969 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_2_d.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_7_2_d.h
@@ -1029,7 +1029,6 @@
#define mmPA_SC_LINE_STIPPLE 0xa283
#define mmPA_SC_MODE_CNTL_0 0xa292
#define mmPA_SC_MODE_CNTL_1 0xa293
-#define mmPA_SC_RASTER_CONFIG 0xa0d4
#define mmPA_SC_RASTER_CONFIG_1 0xa0d5
#define mmPA_SC_SCREEN_EXTENT_CONTROL 0xa0d6
#define mmPA_SC_GENERIC_SCISSOR_TL 0xa090
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h
index 90ff7c8a6011..7c4b43d324e6 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_0_d.h
@@ -1111,7 +1111,6 @@
#define mmPA_SC_LINE_STIPPLE 0xa283
#define mmPA_SC_MODE_CNTL_0 0xa292
#define mmPA_SC_MODE_CNTL_1 0xa293
-#define mmPA_SC_RASTER_CONFIG 0xa0d4
#define mmPA_SC_RASTER_CONFIG_1 0xa0d5
#define mmPA_SC_SCREEN_EXTENT_CONTROL 0xa0d6
#define mmPA_SC_GENERIC_SCISSOR_TL 0xa090
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_1_d.h b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_1_d.h
index 2d672b3d2fed..eba388df8674 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_1_d.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gca/gfx_8_1_d.h
@@ -1112,7 +1112,6 @@
#define mmPA_SC_LINE_STIPPLE 0xa283
#define mmPA_SC_MODE_CNTL_0 0xa292
#define mmPA_SC_MODE_CNTL_1 0xa293
-#define mmPA_SC_RASTER_CONFIG 0xa0d4
#define mmPA_SC_RASTER_CONFIG_1 0xa0d5
#define mmPA_SC_SCREEN_EXTENT_CONTROL 0xa0d6
#define mmPA_SC_GENERIC_SCISSOR_TL 0xa090
--
2.49.0
More information about the amd-gfx
mailing list