aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_device.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2009-09-16 09:24:21 -0400
committerDave Airlie <airlied@redhat.com>2009-09-18 02:01:57 -0400
commit733289c2656c556d5cf36eafa1c8ec77222c359f (patch)
treebb4df1305a867baf63fba27620d6f8c0f68db1a4 /drivers/gpu/drm/radeon/radeon_device.c
parent7cbb355e947b3b426cefd9a3dc0dda3af9f9345a (diff)
drm/radeon/kms: don't fail if we fail to init GPU acceleration
Userspace can query if acceleration is working or not true get info ioctl and could fallback to software if for some reason kernel failed to initialize KMS. This should allow to give a working KMS setup in all case (even with non functionning accel). Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c44
1 files changed, 18 insertions, 26 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index db5ae73d628..0b5014c2ae7 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -504,6 +504,7 @@ int radeon_device_init(struct radeon_device *rdev,
504 rdev->usec_timeout = RADEON_MAX_USEC_TIMEOUT; 504 rdev->usec_timeout = RADEON_MAX_USEC_TIMEOUT;
505 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024; 505 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
506 rdev->gpu_lockup = false; 506 rdev->gpu_lockup = false;
507 rdev->accel_working = false;
507 /* mutex initialization are all done here so we 508 /* mutex initialization are all done here so we
508 * can recall function without having locking issues */ 509 * can recall function without having locking issues */
509 mutex_init(&rdev->cs_mutex); 510 mutex_init(&rdev->cs_mutex);
@@ -649,35 +650,26 @@ int radeon_device_init(struct radeon_device *rdev,
649 /* Initialize GART (initialize after TTM so we can allocate 650 /* Initialize GART (initialize after TTM so we can allocate
650 * memory through TTM but finalize after TTM) */ 651 * memory through TTM but finalize after TTM) */
651 r = radeon_gart_enable(rdev); 652 r = radeon_gart_enable(rdev);
652 if (!r) { 653 if (r)
654 return 0;
653 r = radeon_gem_init(rdev); 655 r = radeon_gem_init(rdev);
654 } 656 if (r)
657 return 0;
655 658
656 /* 1M ring buffer */ 659 /* 1M ring buffer */
657 if (!r) { 660 r = radeon_cp_init(rdev, 1024 * 1024);
658 r = radeon_cp_init(rdev, 1024 * 1024); 661 if (r)
659 } 662 return 0;
660 if (!r) { 663 r = radeon_wb_init(rdev);
661 r = radeon_wb_init(rdev); 664 if (r)
662 if (r) { 665 DRM_ERROR("radeon: failled initializing WB (%d).\n", r);
663 DRM_ERROR("radeon: failled initializing WB (%d).\n", r); 666 r = radeon_ib_pool_init(rdev);
664 return r; 667 if (r)
665 } 668 return 0;
666 } 669 r = radeon_ib_test(rdev);
667 if (!r) { 670 if (r)
668 r = radeon_ib_pool_init(rdev); 671 return 0;
669 if (r) { 672 rdev->accel_working = true;
670 DRM_ERROR("radeon: failled initializing IB pool (%d).\n", r);
671 return r;
672 }
673 }
674 if (!r) {
675 r = radeon_ib_test(rdev);
676 if (r) {
677 DRM_ERROR("radeon: failled testing IB (%d).\n", r);
678 return r;
679 }
680 }
681 } 673 }
682 DRM_INFO("radeon: kernel modesetting successfully initialized.\n"); 674 DRM_INFO("radeon: kernel modesetting successfully initialized.\n");
683 if (radeon_testing) { 675 if (radeon_testing) {