Remove the unnecessary parser of the CSB buffer in the GFX8, and
directly use the result from "adev->gfx.rlc.cs_ptr".

Signed-off-by: Rodrigo Siqueira <sique...@igalia.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 22 +++++-----------------
 1 file changed, 5 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 5ee2237d8ee8..bdd09d77713c 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -4126,9 +4126,8 @@ static u32 gfx_v8_0_get_csb_size(struct amdgpu_device 
*adev)
 static int gfx_v8_0_cp_gfx_start(struct amdgpu_device *adev)
 {
        struct amdgpu_ring *ring = &adev->gfx.gfx_ring[0];
-       const struct cs_section_def *sect = NULL;
-       const struct cs_extent_def *ext = NULL;
-       int r, i;
+       u32 csb_size;
+       int r;
 
        /* init the CP */
        WREG32(mmCP_MAX_CONTEXT, adev->gfx.config.max_hw_contexts - 1);
@@ -4137,7 +4136,8 @@ static int gfx_v8_0_cp_gfx_start(struct amdgpu_device 
*adev)
 
        gfx_v8_0_cp_gfx_enable(adev, true);
 
-       r = amdgpu_ring_alloc(ring, gfx_v8_0_get_csb_size(adev) + 4);
+       csb_size = gfx_v8_0_get_csb_size(adev);
+       r = amdgpu_ring_alloc(ring, csb_size + 4);
        if (r) {
                DRM_ERROR("amdgpu: cp failed to lock ring (%d).\n", r);
                return r;
@@ -4151,19 +4151,7 @@ static int gfx_v8_0_cp_gfx_start(struct amdgpu_device 
*adev)
        amdgpu_ring_write(ring, 0x80000000);
        amdgpu_ring_write(ring, 0x80000000);
 
-       for (sect = vi_cs_data; sect->section != NULL; ++sect) {
-               for (ext = sect->section; ext->extent != NULL; ++ext) {
-                       if (sect->id == SECT_CONTEXT) {
-                               amdgpu_ring_write(ring,
-                                      PACKET3(PACKET3_SET_CONTEXT_REG,
-                                              ext->reg_count));
-                               amdgpu_ring_write(ring,
-                                      ext->reg_index - 
PACKET3_SET_CONTEXT_REG_START);
-                               for (i = 0; i < ext->reg_count; i++)
-                                       amdgpu_ring_write(ring, ext->extent[i]);
-                       }
-               }
-       }
+       amdgpu_gfx_write_csb_to_ring(ring, adev->gfx.rlc.cs_ptr, csb_size);
 
        amdgpu_ring_write(ring, PACKET3(PACKET3_SET_CONTEXT_REG, 2));
        amdgpu_ring_write(ring, mmPA_SC_RASTER_CONFIG - 
PACKET3_SET_CONTEXT_REG_START);
-- 
2.47.2

Reply via email to