drm/radeon/kms: move modeset init outside of GPU init
We are splitting GPU & modeset init so that it's easier to abord only remaining GPU init when somethings fails. We want to always provide enough funcionalities to get fbcon and a shadowfb X working. Only acceptable error during initialization are memory allocation failure or io mapping failure. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
923f6848e1
commit
6cf8a3f588
@@ -54,12 +54,23 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
|
||||
flags |= RADEON_IS_PCI;
|
||||
}
|
||||
|
||||
/* radeon_device_init should report only fatal error
|
||||
* like memory allocation failure or iomapping failure,
|
||||
* or memory manager initialization failure, it must
|
||||
* properly initialize the GPU MC controller and permit
|
||||
* VRAM allocation
|
||||
*/
|
||||
r = radeon_device_init(rdev, dev, dev->pdev, flags);
|
||||
if (r) {
|
||||
DRM_ERROR("Failed to initialize radeon, disabling IOCTL\n");
|
||||
radeon_device_fini(rdev);
|
||||
kfree(rdev);
|
||||
dev->dev_private = NULL;
|
||||
DRM_ERROR("Fatal error while trying to initialize radeon.\n");
|
||||
return r;
|
||||
}
|
||||
/* Again modeset_init should fail only on fatal error
|
||||
* otherwise it should provide enough functionalities
|
||||
* for shadowfb to run
|
||||
*/
|
||||
r = radeon_modeset_init(rdev);
|
||||
if (r) {
|
||||
return r;
|
||||
}
|
||||
return 0;
|
||||
@@ -69,6 +80,9 @@ int radeon_driver_unload_kms(struct drm_device *dev)
|
||||
{
|
||||
struct radeon_device *rdev = dev->dev_private;
|
||||
|
||||
if (rdev == NULL)
|
||||
return 0;
|
||||
radeon_modeset_fini(rdev);
|
||||
radeon_device_fini(rdev);
|
||||
kfree(rdev);
|
||||
dev->dev_private = NULL;
|
||||
|
Reference in New Issue
Block a user