summaryrefslogtreecommitdiff
path: root/linux-core/drm_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core/drm_drv.c')
-rw-r--r--linux-core/drm_drv.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c
index 39c893ce..6c1e5feb 100644
--- a/linux-core/drm_drv.c
+++ b/linux-core/drm_drv.c
@@ -310,7 +310,7 @@ int drm_init(struct drm_driver *driver,
{
struct pci_dev *pdev;
struct pci_device_id *pid;
- int i;
+ int rc, i;
DRM_DEBUG("\n");
@@ -351,7 +351,10 @@ int drm_init(struct drm_driver *driver,
pdev))) {
/* stealth mode requires a manual probe */
pci_dev_get(pdev);
- drm_get_dev(pdev, &pciidlist[i], driver);
+ if ((rc = drm_get_dev(pdev, &pciidlist[i], driver))) {
+ pci_dev_put(pdev);
+ return rc;
+ }
}
}
DRM_INFO("Used old pci detect: framebuffer loaded\n");
@@ -438,9 +441,6 @@ static void __exit drm_cleanup(drm_device_t * dev)
DRM_DEBUG("mtrr_del=%d\n", retval);
}
- if (drm_fb_loaded)
- drm_pm_cleanup();
-
if (drm_core_has_AGP(dev) && dev->agp) {
drm_free(dev->agp, sizeof(*dev->agp), DRM_MEM_AGPLISTS);
dev->agp = NULL;
@@ -539,6 +539,7 @@ static void __exit drm_core_exit(void)
unregister_chrdev(DRM_MAJOR, "drm");
drm_free(drm_heads, sizeof(*drm_heads) * cards_limit, DRM_MEM_STUB);
+ drm_pm_exit();
}
module_init(drm_core_init);