@@ -74,8 +74,14 @@ static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
goto err_mgag200_driver_unload;
+ ret = drm_fbdev_generic_setup(dev, 0);
+ if (ret)
+ goto err_mgag200_driver_unregister;
+
return 0;
+err_mgag200_driver_unregister:
+ drm_dev_unregister(dev);
err_mgag200_driver_unload:
mgag200_driver_unload(dev);
err_drm_dev_put:
@@ -181,10 +181,6 @@ int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
dev_warn(&dev->pdev->dev,
"Could not initialize cursors. Not doing hardware cursors.\n");
- r = drm_fbdev_generic_setup(mdev->dev, 0);
- if (r)
- goto err_modeset;
-
return 0;
err_modeset:
Generic fbdev console emulation is a DRM client. For consistency with other clients, it should be created after registering the DRM device. Hence move the fbdev code to the appropriate place. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/mgag200/mgag200_drv.c | 6 ++++++ drivers/gpu/drm/mgag200/mgag200_main.c | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-)