diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index c5343371ac4..a7edac57c44 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -1315,6 +1315,11 @@ ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, */ info->has_attr_ring_wait_bug = info->gfx_level == GFX11 || info->gfx_level == GFX11_5; + /* On GFX8-9, CP DMA is broken with NULL PRT page, it doesn't read 0 and it + * doesn't discard writes which causes GPU hangs. + */ + info->has_cp_dma_with_null_prt_bug = info->family >= CHIP_POLARIS10 && info->gfx_level <= GFX9; + /* When LLVM is fixed to handle multiparts shaders, this value will depend * on the known good versions of LLVM. Until then, enable the equivalent WA * in the nir -> llvm backend. diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h index fa6c0c02e30..40a1eb93f91 100644 --- a/src/amd/common/ac_gpu_info.h +++ b/src/amd/common/ac_gpu_info.h @@ -120,6 +120,7 @@ struct radeon_info { bool has_ngg_passthru_no_msg; bool has_export_conflict_bug; bool has_attr_ring_wait_bug; + bool has_cp_dma_with_null_prt_bug; bool has_vrs_ds_export_bug; bool has_taskmesh_indirect0_bug; bool sdma_supports_sparse; /* Whether SDMA can safely access sparse resources. */