OSDN Git Service

drm/amdgpu: cleanup amdgpu_cs_ioctl to make code logicality clear
authorHuang Rui <ray.huang@amd.com>
Sun, 30 Oct 2016 15:05:47 +0000 (23:05 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 11 Nov 2016 15:20:55 +0000 (10:20 -0500)
Signed-off-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

index 78da52f..15c56c8 100644 (file)
@@ -1054,29 +1054,29 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
        r = amdgpu_cs_parser_init(&parser, data);
        if (r) {
                DRM_ERROR("Failed to initialize parser !\n");
-               amdgpu_cs_parser_fini(&parser, r, false);
-               r = amdgpu_cs_handle_lockup(adev, r);
-               return r;
-       }
-       r = amdgpu_cs_parser_bos(&parser, data);
-       if (r == -ENOMEM)
-               DRM_ERROR("Not enough memory for command submission!\n");
-       else if (r && r != -ERESTARTSYS)
-               DRM_ERROR("Failed to process the buffer list %d!\n", r);
-       else if (!r) {
-               reserved_buffers = true;
-               r = amdgpu_cs_ib_fill(adev, &parser);
+               goto out;
        }
 
-       if (!r) {
-               r = amdgpu_cs_dependencies(adev, &parser);
-               if (r)
-                       DRM_ERROR("Failed in the dependencies handling %d!\n", r);
+       r = amdgpu_cs_parser_bos(&parser, data);
+       if (r) {
+               if (r == -ENOMEM)
+                       DRM_ERROR("Not enough memory for command submission!\n");
+               else if (r != -ERESTARTSYS)
+                       DRM_ERROR("Failed to process the buffer list %d!\n", r);
+               goto out;
        }
 
+       reserved_buffers = true;
+       r = amdgpu_cs_ib_fill(adev, &parser);
        if (r)
                goto out;
 
+       r = amdgpu_cs_dependencies(adev, &parser);
+       if (r) {
+               DRM_ERROR("Failed in the dependencies handling %d!\n", r);
+               goto out;
+       }
+
        for (i = 0; i < parser.job->num_ibs; i++)
                trace_amdgpu_cs(&parser, i);