]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: add vega20 sriov capability detection
authorFrank Min <Frank.Min@amd.com>
Thu, 26 Apr 2018 19:44:11 +0000 (03:44 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 20 Sep 2018 03:32:21 +0000 (22:32 -0500)
Add sriov capability detection for vega20, then can check if device is
virtual device.

Signed-off-by: Frank Min <Frank.Min@amd.com>
Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c

index 2e65447637c699cbd5a9bb5bca757b37acce19c7..f8cee95d61cc164e605289043d1ec31db424e617 100644 (file)
@@ -205,8 +205,19 @@ static const struct nbio_hdp_flush_reg nbio_v7_4_hdp_flush_reg = {
 
 static void nbio_v7_4_detect_hw_virt(struct amdgpu_device *adev)
 {
-       if (is_virtual_machine())       /* passthrough mode exclus sriov mod */
-               adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
+       uint32_t reg;
+
+       reg = RREG32_SOC15(NBIO, 0, mmRCC_IOV_FUNC_IDENTIFIER);
+       if (reg & 1)
+               adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
+
+       if (reg & 0x80000000)
+               adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
+
+       if (!reg) {
+               if (is_virtual_machine())       /* passthrough mode exclus sriov mod */
+                       adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
+       }
 }
 
 static void nbio_v7_4_init_registers(struct amdgpu_device *adev)