mirror of
https://github.com/torvalds/linux.git
synced 2026-04-27 02:52:27 -04:00
drm/amdgpu: fix random data corruption for sdma 7
There is random data corruption caused by const fill, this is caused by write compression mode not correctly configured. So correct compression mode for const fill. Signed-off-by: Frank Min <Frank.Min@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -51,6 +51,12 @@ MODULE_FIRMWARE("amdgpu/sdma_7_0_1.bin");
|
||||
#define SDMA0_HYP_DEC_REG_END 0x589a
|
||||
#define SDMA1_HYP_DEC_REG_OFFSET 0x20
|
||||
|
||||
/*define for compression field for sdma7*/
|
||||
#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_offset 0
|
||||
#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_mask 0x00000001
|
||||
#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_shift 16
|
||||
#define SDMA_PKT_CONSTANT_FILL_HEADER_COMPRESS(x) (((x) & SDMA_PKT_CONSTANT_FILL_HEADER_compress_mask) << SDMA_PKT_CONSTANT_FILL_HEADER_compress_shift)
|
||||
|
||||
static const struct amdgpu_hwip_reg_entry sdma_reg_list_7_0[] = {
|
||||
SOC15_REG_ENTRY_STR(GC, 0, regSDMA0_STATUS_REG),
|
||||
SOC15_REG_ENTRY_STR(GC, 0, regSDMA0_STATUS1_REG),
|
||||
@@ -1720,7 +1726,8 @@ static void sdma_v7_0_emit_fill_buffer(struct amdgpu_ib *ib,
|
||||
uint64_t dst_offset,
|
||||
uint32_t byte_count)
|
||||
{
|
||||
ib->ptr[ib->length_dw++] = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_CONST_FILL);
|
||||
ib->ptr[ib->length_dw++] = SDMA_PKT_CONSTANT_FILL_HEADER_OP(SDMA_OP_CONST_FILL) |
|
||||
SDMA_PKT_CONSTANT_FILL_HEADER_COMPRESS(1);
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user