浏览代码

Merge branch 'drm-fixes-4.10' of git://people.freedesktop.org/~agd5f/linux into drm-fixes

Just a few small fixes.

* 'drm-fixes-4.10' of git://people.freedesktop.org/~agd5f/linux:
  Revert "drm/radeon: always apply pci shutdown callbacks"
  drm/amdgpu: fix unload driver issue for virtual display
  drm/amdgpu: check ring being ready before using
Dave Airlie 8 年之前
父节点
当前提交
1fb2d35411

+ 7 - 0
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

@@ -83,6 +83,13 @@ int amdgpu_cs_get_ring(struct amdgpu_device *adev, u32 ip_type,
 		}
 		}
 		break;
 		break;
 	}
 	}
+
+	if (!(*out_ring && (*out_ring)->adev)) {
+		DRM_ERROR("Ring %d is not initialized on IP %d\n",
+			  ring, ip_type);
+		return -EINVAL;
+	}
+
 	return 0;
 	return 0;
 }
 }
 
 

+ 1 - 4
drivers/gpu/drm/amd/amdgpu/dce_virtual.c

@@ -627,11 +627,8 @@ static const struct drm_encoder_helper_funcs dce_virtual_encoder_helper_funcs =
 
 
 static void dce_virtual_encoder_destroy(struct drm_encoder *encoder)
 static void dce_virtual_encoder_destroy(struct drm_encoder *encoder)
 {
 {
-	struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
-
-	kfree(amdgpu_encoder->enc_priv);
 	drm_encoder_cleanup(encoder);
 	drm_encoder_cleanup(encoder);
-	kfree(amdgpu_encoder);
+	kfree(encoder);
 }
 }
 
 
 static const struct drm_encoder_funcs dce_virtual_encoder_funcs = {
 static const struct drm_encoder_funcs dce_virtual_encoder_funcs = {

+ 3 - 4
drivers/gpu/drm/radeon/radeon_drv.c

@@ -366,11 +366,10 @@ static void
 radeon_pci_shutdown(struct pci_dev *pdev)
 radeon_pci_shutdown(struct pci_dev *pdev)
 {
 {
 	/* if we are running in a VM, make sure the device
 	/* if we are running in a VM, make sure the device
-	 * torn down properly on reboot/shutdown.
-	 * unfortunately we can't detect certain
-	 * hypervisors so just do this all the time.
+	 * torn down properly on reboot/shutdown
 	 */
 	 */
-	radeon_pci_remove(pdev);
+	if (radeon_device_is_virtual())
+		radeon_pci_remove(pdev);
 }
 }
 
 
 static int radeon_pmops_suspend(struct device *dev)
 static int radeon_pmops_suspend(struct device *dev)