Like done in radeon_cs_ioctl.

In particular it avoids mesa to call map/unmap:
  radeon_create_bo
    ioctl(DRM_RADEON_GEM_CREATE) -> ok
    ioctl(DRM_RADEON_GEM_VA-MAP)
  radeon_destroy_bo
    ioctl(DRM_RADEON_GEM_VA-UNMAP)

Encountered also cases where the vm_manager succeeded to be enabled after
a gpu reset while the GFX ring was not responding so accel was disabled.

https://bugs.freedesktop.org/show_bug.cgi?id=96271

Signed-off-by: Julien Isorce <jiso...@oblong.com>
---
 drivers/gpu/drm/radeon/radeon_gem.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/radeon/radeon_gem.c 
b/drivers/gpu/drm/radeon/radeon_gem.c
index b97c92b..1030001 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -259,6 +259,13 @@ int radeon_gem_create_ioctl(struct drm_device *dev, void 
*data,
        int r;
 
        down_read(&rdev->exclusive_lock);
+
+       if (!rdev->accel_working &&
+           args->initial_domain != RADEON_GEM_DOMAIN_CPU) {
+               up_read(&rdev->exclusive_lock);
+               return -EBUSY;
+       }
+
        /* create a gem object to contain this object in */
        args->size = roundup(args->size, PAGE_SIZE);
        r = radeon_gem_object_create(rdev, args->size, args->alignment,
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to