static int psp_hw_start(struct psp_context *psp) { struct amdgpu_device *adev = psp->adev; int ret; if (!amdgpu_sriov_vf(adev) || !adev->in_gpu_reset) { ret = psp_bootloader_load_sysdrv(psp); if (ret) return ret; ret = psp_bootloader_load_sos(psp); if (ret) return ret; } ret = psp_ring_create(psp, PSP_RING_TYPE__KM); if (ret) return ret; ret = psp_tmr_load(psp); if (ret) return ret; ret = psp_asd_load(psp); if (ret) return ret; return 0; }
static int psp_hw_start(struct psp_context *psp) { int ret; ret = psp_bootloader_load_sysdrv(psp); if (ret) return ret; ret = psp_bootloader_load_sos(psp); if (ret) return ret; ret = psp_ring_create(psp, PSP_RING_TYPE__KM); if (ret) return ret; ret = psp_tmr_load(psp); if (ret) return ret; ret = psp_asd_load(psp); if (ret) return ret; return 0; }
static int psp_hw_start(struct psp_context *psp) { struct amdgpu_device *adev = psp->adev; int ret; if (!amdgpu_sriov_vf(adev) || !adev->in_gpu_reset) { ret = psp_bootloader_load_sysdrv(psp); if (ret) { DRM_ERROR("PSP load sysdrv failed!\n"); return ret; } ret = psp_bootloader_load_sos(psp); if (ret) { DRM_ERROR("PSP load sos failed!\n"); return ret; } } ret = psp_ring_create(psp, PSP_RING_TYPE__KM); if (ret) { DRM_ERROR("PSP create ring failed!\n"); return ret; } ret = psp_tmr_load(psp); if (ret) { DRM_ERROR("PSP load tmr failed!\n"); return ret; } ret = psp_asd_load(psp); if (ret) { DRM_ERROR("PSP load asd failed!\n"); return ret; } if (adev->gmc.xgmi.num_physical_nodes > 1) { ret = psp_xgmi_initialize(psp); /* Warning the XGMI seesion initialize failure * Instead of stop driver initialization */ if (ret) dev_err(psp->adev->dev, "XGMI: Failed to initialize XGMI session\n"); } if (psp->adev->psp.ta_fw) { ret = psp_ras_initialize(psp); if (ret) dev_err(psp->adev->dev, "RAS: Failed to initialize RAS\n"); } return 0; }