drm/amdgpu: be explicit about cpu vram access for driver BOs (v2)
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index fefeeb2c491864bdf3ebd9e7a89861c22148bd88..6ff6ae945794a24167d6403a48bb8aa57d2fa4a2 100644 (file)
@@ -244,7 +244,8 @@ static int amdgpu_vram_scratch_init(struct amdgpu_device *adev)
 
        if (adev->vram_scratch.robj == NULL) {
                r = amdgpu_bo_create(adev, AMDGPU_GPU_PAGE_SIZE,
-                                    PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM, 0,
+                                    PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM,
+                                    AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
                                     NULL, &adev->vram_scratch.robj);
                if (r) {
                        return r;
@@ -1525,6 +1526,11 @@ int amdgpu_device_init(struct amdgpu_device *adev,
                return r;
        }
 
+       r = amdgpu_ctx_init(adev, true, &adev->kernel_ctx);
+       if (r) {
+               dev_err(adev->dev, "failed to create kernel context (%d).\n", r);
+               return r;
+       }
        r = amdgpu_ib_ring_tests(adev);
        if (r)
                DRM_ERROR("ib ring test failed (%d).\n", r);
@@ -1586,6 +1592,7 @@ void amdgpu_device_fini(struct amdgpu_device *adev)
        adev->shutdown = true;
        /* evict vram memory */
        amdgpu_bo_evict_vram(adev);
+       amdgpu_ctx_fini(&adev->kernel_ctx);
        amdgpu_ib_pool_fini(adev);
        amdgpu_fence_driver_fini(adev);
        amdgpu_fbdev_fini(adev);