diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0510-drm-amdgpu-use-IB-for-fill_buffer-instead-of-direct-.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0510-drm-amdgpu-use-IB-for-fill_buffer-instead-of-direct-.patch | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0510-drm-amdgpu-use-IB-for-fill_buffer-instead-of-direct-.patch b/common/recipes-kernel/linux/files/0510-drm-amdgpu-use-IB-for-fill_buffer-instead-of-direct-.patch new file mode 100644 index 00000000..6f28f6f2 --- /dev/null +++ b/common/recipes-kernel/linux/files/0510-drm-amdgpu-use-IB-for-fill_buffer-instead-of-direct-.patch @@ -0,0 +1,122 @@ +From 6e7a3840745c950c37d37cbb0af2e753a765d4ec Mon Sep 17 00:00:00 2001 +From: Chunming Zhou <david1.zhou@amd.com> +Date: Thu, 27 Aug 2015 13:46:09 +0800 +Subject: [PATCH 0510/1050] drm/amdgpu: use IB for fill_buffer instead of + direct command + +Signed-off-by: Chunming Zhou <david1.zhou@amd.com> +Reviewed-by: Christian K?nig <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ++-- + drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 12 ++++++------ + drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 12 ++++++------ + drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 12 ++++++------ + 4 files changed, 20 insertions(+), 20 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 9fefcd9..c6812f2 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -262,7 +262,7 @@ struct amdgpu_buffer_funcs { + unsigned fill_num_dw; + + /* used for buffer clearing */ +- void (*emit_fill_buffer)(struct amdgpu_ring *ring, ++ void (*emit_fill_buffer)(struct amdgpu_ib *ib, + /* value to write to memory */ + uint32_t src_data, + /* dst addr in bytes */ +@@ -2248,7 +2248,7 @@ static inline void amdgpu_ring_write(struct amdgpu_ring *ring, uint32_t v) + #define amdgpu_display_stop_mc_access(adev, s) (adev)->mode_info.funcs->stop_mc_access((adev), (s)) + #define amdgpu_display_resume_mc_access(adev, s) (adev)->mode_info.funcs->resume_mc_access((adev), (s)) + #define amdgpu_emit_copy_buffer(adev, ib, s, d, b) (adev)->mman.buffer_funcs->emit_copy_buffer((ib), (s), (d), (b)) +-#define amdgpu_emit_fill_buffer(adev, r, s, d, b) (adev)->mman.buffer_funcs->emit_fill_buffer((r), (s), (d), (b)) ++#define amdgpu_emit_fill_buffer(adev, ib, s, d, b) (adev)->mman.buffer_funcs->emit_fill_buffer((ib), (s), (d), (b)) + #define amdgpu_dpm_get_temperature(adev) (adev)->pm.funcs->get_temperature((adev)) + #define amdgpu_dpm_pre_set_power_state(adev) (adev)->pm.funcs->pre_set_power_state((adev)) + #define amdgpu_dpm_set_power_state(adev) (adev)->pm.funcs->set_power_state((adev)) +diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +index 3920c1e..c1e7829 100644 +--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c ++++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +@@ -1363,16 +1363,16 @@ static void cik_sdma_emit_copy_buffer(struct amdgpu_ib *ib, + * + * Fill GPU buffers using the DMA engine (CIK). + */ +-static void cik_sdma_emit_fill_buffer(struct amdgpu_ring *ring, ++static void cik_sdma_emit_fill_buffer(struct amdgpu_ib *ib, + uint32_t src_data, + uint64_t dst_offset, + uint32_t byte_count) + { +- amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_CONSTANT_FILL, 0, 0)); +- amdgpu_ring_write(ring, lower_32_bits(dst_offset)); +- amdgpu_ring_write(ring, upper_32_bits(dst_offset)); +- amdgpu_ring_write(ring, src_data); +- amdgpu_ring_write(ring, byte_count); ++ ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_CONSTANT_FILL, 0, 0); ++ ib->ptr[ib->length_dw++] = lower_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = upper_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = src_data; ++ ib->ptr[ib->length_dw++] = byte_count; + } + + static const struct amdgpu_buffer_funcs cik_sdma_buffer_funcs = { +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +index 715e02d..2f3948c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +@@ -1375,16 +1375,16 @@ static void sdma_v2_4_emit_copy_buffer(struct amdgpu_ib *ib, + * + * Fill GPU buffers using the DMA engine (VI). + */ +-static void sdma_v2_4_emit_fill_buffer(struct amdgpu_ring *ring, ++static void sdma_v2_4_emit_fill_buffer(struct amdgpu_ib *ib, + uint32_t src_data, + uint64_t dst_offset, + uint32_t byte_count) + { +- amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_CONST_FILL)); +- amdgpu_ring_write(ring, lower_32_bits(dst_offset)); +- amdgpu_ring_write(ring, upper_32_bits(dst_offset)); +- amdgpu_ring_write(ring, src_data); +- amdgpu_ring_write(ring, byte_count); ++ ib->ptr[ib->length_dw++] = SDMA_PKT_HEADER_OP(SDMA_OP_CONST_FILL); ++ ib->ptr[ib->length_dw++] = lower_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = upper_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = src_data; ++ ib->ptr[ib->length_dw++] = byte_count; + } + + static const struct amdgpu_buffer_funcs sdma_v2_4_buffer_funcs = { +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +index 67128c8..a9d9607 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +@@ -1499,16 +1499,16 @@ static void sdma_v3_0_emit_copy_buffer(struct amdgpu_ib *ib, + * + * Fill GPU buffers using the DMA engine (VI). + */ +-static void sdma_v3_0_emit_fill_buffer(struct amdgpu_ring *ring, ++static void sdma_v3_0_emit_fill_buffer(struct amdgpu_ib *ib, + uint32_t src_data, + uint64_t dst_offset, + uint32_t byte_count) + { +- amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_CONST_FILL)); +- amdgpu_ring_write(ring, lower_32_bits(dst_offset)); +- amdgpu_ring_write(ring, upper_32_bits(dst_offset)); +- amdgpu_ring_write(ring, src_data); +- amdgpu_ring_write(ring, byte_count); ++ ib->ptr[ib->length_dw++] = SDMA_PKT_HEADER_OP(SDMA_OP_CONST_FILL); ++ ib->ptr[ib->length_dw++] = lower_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = upper_32_bits(dst_offset); ++ ib->ptr[ib->length_dw++] = src_data; ++ ib->ptr[ib->length_dw++] = byte_count; + } + + static const struct amdgpu_buffer_funcs sdma_v3_0_buffer_funcs = { +-- +1.9.1 + |