diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c index 231ca06bc9c7..78ec3420ef85 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -64,7 +64,7 @@ int amdgpu_sdma_get_index_from_ring(struct amdgpu_ring *ring, uint32_t *index)  }  uint64_t amdgpu_sdma_get_csa_mc_addr(struct amdgpu_ring *ring, -				     unsigned vmid) +				     unsigned int vmid)  {  	struct amdgpu_device *adev = ring->adev;  	uint64_t csa_mc_addr; @@ -252,6 +252,13 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *adev,  				if (!duplicate && (instance != i))  					continue;  				else { +					/* Use a single copy per SDMA firmware type. PSP uses the same instance for all +					 * groups of SDMAs */ +					if (adev->ip_versions[SDMA0_HWIP][0] == IP_VERSION(4, 4, 2) && +					    adev->firmware.load_type == AMDGPU_FW_LOAD_PSP && +					    adev->sdma.num_inst_per_aid == i) { +						break; +					}  					info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];  					info->ucode_id = AMDGPU_UCODE_ID_SDMA0 + i;  					info->fw = adev->sdma.instance[i].fw; | 
