drm/amd/amdgpu/sriov temporarily skip ras,dtm,hdcp for arcturus VF
authorJack Zhang <Jack.Zhang1@amd.com>
Thu, 21 Nov 2019 05:59:28 +0000 (13:59 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 22 Nov 2019 19:55:19 +0000 (14:55 -0500)
Temporarily skip ras,dtm,hdcp initialize and terminate for arcturus VF
Currently the three features haven't been enabled at SRIOV, it would
trigger guest driver load fail with the bare-metal path of the three
features.

Signed-off-by: Jack Zhang <Jack.Zhang1@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 1f044c8..3ee1f03 100644 (file)
@@ -758,6 +758,12 @@ static int psp_ras_terminate(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the terminate in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->ras.ras_initialized)
                return 0;
 
@@ -779,6 +785,12 @@ static int psp_ras_initialize(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the initialize in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->adev->psp.ta_ras_ucode_size ||
            !psp->adev->psp.ta_ras_start_addr) {
                dev_warn(psp->adev->dev, "RAS: ras ta ucode is not available\n");
@@ -874,6 +886,12 @@ static int psp_hdcp_initialize(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the initialize in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->adev->psp.ta_hdcp_ucode_size ||
            !psp->adev->psp.ta_hdcp_start_addr) {
                dev_warn(psp->adev->dev, "HDCP: hdcp ta ucode is not available\n");
@@ -962,6 +980,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the terminate in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->hdcp_context.hdcp_initialized)
                return 0;
 
@@ -1053,6 +1077,12 @@ static int psp_dtm_initialize(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the initialize in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->adev->psp.ta_dtm_ucode_size ||
            !psp->adev->psp.ta_dtm_start_addr) {
                dev_warn(psp->adev->dev, "DTM: dtm ta ucode is not available\n");
@@ -1111,6 +1141,12 @@ static int psp_dtm_terminate(struct psp_context *psp)
 {
        int ret;
 
+       /*
+        * TODO: bypass the terminate in sriov for now
+        */
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
        if (!psp->dtm_context.dtm_initialized)
                return 0;