OSDN Git Service

drm/amdgpu: only check mmBIF_IOV_FUNC_IDENTIFIER on tonga/fiji
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Dec 2017 14:52:31 +0000 (09:52 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Feb 2018 09:19:44 +0000 (10:19 +0100)
commit 57ad33a307bf85cafda3a77c03a555c9f9ee4139 upstream.

We only support SR-IOV on tonga/fiji.  Don't check this register
on other VI parts.

Fixes: 048765ad5af7c89 (amdgpu: fix asic initialization for virtualized environments (v2))
Reviewed-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/amdgpu/vi.c

index 9ff69b9..4968b6b 100644 (file)
@@ -448,14 +448,19 @@ static bool vi_read_bios_from_rom(struct amdgpu_device *adev,
 
 static void vi_detect_hw_virtualization(struct amdgpu_device *adev)
 {
-       uint32_t reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
-       /* bit0: 0 means pf and 1 means vf */
-       /* bit31: 0 means disable IOV and 1 means enable */
-       if (reg & 1)
-               adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
-
-       if (reg & 0x80000000)
-               adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
+       uint32_t reg = 0;
+
+       if (adev->asic_type == CHIP_TONGA ||
+           adev->asic_type == CHIP_FIJI) {
+              reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
+              /* bit0: 0 means pf and 1 means vf */
+              /* bit31: 0 means disable IOV and 1 means enable */
+              if (reg & 1)
+                      adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
+
+              if (reg & 0x80000000)
+                      adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
+       }
 
        if (reg == 0) {
                if (is_virtual_machine()) /* passthrough mode exclus sr-iov mode */