diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 76f531b8e97b..2157d4509e84 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | |||
@@ -334,23 +334,26 @@ static int psp_load_fw(struct amdgpu_device *adev) | |||
334 | int ret; | 334 | int ret; |
335 | struct psp_context *psp = &adev->psp; | 335 | struct psp_context *psp = &adev->psp; |
336 | 336 | ||
337 | if (amdgpu_sriov_vf(adev) && adev->in_gpu_reset != 0) | ||
338 | goto skip_memalloc; | ||
339 | |||
337 | psp->cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL); | 340 | psp->cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL); |
338 | if (!psp->cmd) | 341 | if (!psp->cmd) |
339 | return -ENOMEM; | 342 | return -ENOMEM; |
340 | 343 | ||
341 | ret = amdgpu_bo_create_kernel(adev, PSP_1_MEG, PSP_1_MEG, | 344 | ret = amdgpu_bo_create_kernel(adev, PSP_1_MEG, PSP_1_MEG, |
342 | AMDGPU_GEM_DOMAIN_GTT, | 345 | AMDGPU_GEM_DOMAIN_GTT, |
343 | &psp->fw_pri_bo, | 346 | &psp->fw_pri_bo, |
344 | &psp->fw_pri_mc_addr, | 347 | &psp->fw_pri_mc_addr, |
345 | &psp->fw_pri_buf); | 348 | &psp->fw_pri_buf); |
346 | if (ret) | 349 | if (ret) |
347 | goto failed; | 350 | goto failed; |
348 | 351 | ||
349 | ret = amdgpu_bo_create_kernel(adev, PSP_FENCE_BUFFER_SIZE, PAGE_SIZE, | 352 | ret = amdgpu_bo_create_kernel(adev, PSP_FENCE_BUFFER_SIZE, PAGE_SIZE, |
350 | AMDGPU_GEM_DOMAIN_VRAM, | 353 | AMDGPU_GEM_DOMAIN_VRAM, |
351 | &psp->fence_buf_bo, | 354 | &psp->fence_buf_bo, |
352 | &psp->fence_buf_mc_addr, | 355 | &psp->fence_buf_mc_addr, |
353 | &psp->fence_buf); | 356 | &psp->fence_buf); |
354 | if (ret) | 357 | if (ret) |
355 | goto failed_mem2; | 358 | goto failed_mem2; |
356 | 359 | ||
@@ -375,6 +378,7 @@ static int psp_load_fw(struct amdgpu_device *adev) | |||
375 | if (ret) | 378 | if (ret) |
376 | goto failed_mem; | 379 | goto failed_mem; |
377 | 380 | ||
381 | skip_memalloc: | ||
378 | ret = psp_hw_start(psp); | 382 | ret = psp_hw_start(psp); |
379 | if (ret) | 383 | if (ret) |
380 | goto failed_mem; | 384 | goto failed_mem; |