aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c15
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,
269static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) 270static 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
794bool 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
859out_suspend: 853out_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 */