diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index 51841259e23f..6f0b26dae3b0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <drm/drmP.h> | 28 | #include <drm/drmP.h> |
29 | #include "amdgpu.h" | 29 | #include "amdgpu.h" |
30 | #include <drm/amdgpu_drm.h> | 30 | #include <drm/amdgpu_drm.h> |
31 | #include "amdgpu_sched.h" | ||
31 | #include "amdgpu_uvd.h" | 32 | #include "amdgpu_uvd.h" |
32 | #include "amdgpu_vce.h" | 33 | #include "amdgpu_vce.h" |
33 | 34 | ||
@@ -269,7 +270,6 @@ static int amdgpu_firmware_info(struct drm_amdgpu_info_firmware *fw_info, | |||
269 | static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) | 270 | static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) |
270 | { | 271 | { |
271 | struct amdgpu_device *adev = dev->dev_private; | 272 | struct amdgpu_device *adev = dev->dev_private; |
272 | struct amdgpu_fpriv *fpriv = filp->driver_priv; | ||
273 | struct drm_amdgpu_info *info = data; | 273 | struct drm_amdgpu_info *info = data; |
274 | struct amdgpu_mode_info *minfo = &adev->mode_info; | 274 | struct amdgpu_mode_info *minfo = &adev->mode_info; |
275 | void __user *out = (void __user *)(uintptr_t)info->return_pointer; | 275 | void __user *out = (void __user *)(uintptr_t)info->return_pointer; |
@@ -282,8 +282,6 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
282 | 282 | ||
283 | if (!info->return_size || !info->return_pointer) | 283 | if (!info->return_size || !info->return_pointer) |
284 | return -EINVAL; | 284 | return -EINVAL; |
285 | if (amdgpu_kms_vram_lost(adev, fpriv)) | ||
286 | return -ENODEV; | ||
287 | 285 | ||
288 | switch (info->query) { | 286 | switch (info->query) { |
289 | case AMDGPU_INFO_ACCEL_WORKING: | 287 | case AMDGPU_INFO_ACCEL_WORKING: |
@@ -765,6 +763,9 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
765 | } | 763 | } |
766 | return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0; | 764 | return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0; |
767 | } | 765 | } |
766 | case AMDGPU_INFO_VRAM_LOST_COUNTER: | ||
767 | ui32 = atomic_read(&adev->vram_lost_counter); | ||
768 | return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0; | ||
768 | default: | 769 | default: |
769 | DRM_DEBUG_KMS("Invalid request %d\n", info->query); | 770 | DRM_DEBUG_KMS("Invalid request %d\n", info->query); |
770 | return -EINVAL; | 771 | return -EINVAL; |
@@ -791,12 +792,6 @@ void amdgpu_driver_lastclose_kms(struct drm_device *dev) | |||
791 | vga_switcheroo_process_delayed_switch(); | 792 | vga_switcheroo_process_delayed_switch(); |
792 | } | 793 | } |
793 | 794 | ||
794 | bool amdgpu_kms_vram_lost(struct amdgpu_device *adev, | ||
795 | struct amdgpu_fpriv *fpriv) | ||
796 | { | ||
797 | return fpriv->vram_lost_counter != atomic_read(&adev->vram_lost_counter); | ||
798 | } | ||
799 | |||
800 | /** | 795 | /** |
801 | * amdgpu_driver_open_kms - drm callback for open | 796 | * amdgpu_driver_open_kms - drm callback for open |
802 | * | 797 | * |
@@ -853,7 +848,6 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) | |||
853 | 848 | ||
854 | amdgpu_ctx_mgr_init(&fpriv->ctx_mgr); | 849 | amdgpu_ctx_mgr_init(&fpriv->ctx_mgr); |
855 | 850 | ||
856 | fpriv->vram_lost_counter = atomic_read(&adev->vram_lost_counter); | ||
857 | file_priv->driver_priv = fpriv; | 851 | file_priv->driver_priv = fpriv; |
858 | 852 | ||
859 | out_suspend: | 853 | out_suspend: |
@@ -1023,6 +1017,7 @@ const struct drm_ioctl_desc amdgpu_ioctls_kms[] = { | |||
1023 | DRM_IOCTL_DEF_DRV(AMDGPU_GEM_CREATE, amdgpu_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), | 1017 | DRM_IOCTL_DEF_DRV(AMDGPU_GEM_CREATE, amdgpu_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), |
1024 | DRM_IOCTL_DEF_DRV(AMDGPU_CTX, amdgpu_ctx_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), | 1018 | DRM_IOCTL_DEF_DRV(AMDGPU_CTX, amdgpu_ctx_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), |
1025 | DRM_IOCTL_DEF_DRV(AMDGPU_VM, amdgpu_vm_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), | 1019 | DRM_IOCTL_DEF_DRV(AMDGPU_VM, amdgpu_vm_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), |
1020 | DRM_IOCTL_DEF_DRV(AMDGPU_SCHED, amdgpu_sched_ioctl, DRM_MASTER), | ||
1026 | DRM_IOCTL_DEF_DRV(AMDGPU_BO_LIST, amdgpu_bo_list_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), | 1021 | DRM_IOCTL_DEF_DRV(AMDGPU_BO_LIST, amdgpu_bo_list_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), |
1027 | DRM_IOCTL_DEF_DRV(AMDGPU_FENCE_TO_HANDLE, amdgpu_cs_fence_to_handle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), | 1022 | DRM_IOCTL_DEF_DRV(AMDGPU_FENCE_TO_HANDLE, amdgpu_cs_fence_to_handle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), |
1028 | /* KMS */ | 1023 | /* KMS */ |