[PATCH] Detaching fbcon: remove calls to pci_disable_device()
Detaching fbcon allows individual drivers to be unloaded. However several drivers call pci_disable_device() upon exit. This function will disable the BAR's which will kill VGA text mode and/or affect X/DRM. To prevent this, remove calls to pci_disable_device() from several drivers. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
1c8ce271fe
commit
a06630f3e7
@ -2379,7 +2379,6 @@ err_release_pci0:
|
||||
err_release_fb:
|
||||
framebuffer_release(info);
|
||||
err_disable:
|
||||
pci_disable_device(pdev);
|
||||
err_out:
|
||||
return ret;
|
||||
}
|
||||
@ -2436,7 +2435,6 @@ static void __devexit radeonfb_pci_unregister (struct pci_dev *pdev)
|
||||
#endif
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
framebuffer_release(info);
|
||||
pci_disable_device(pdev);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2227,7 +2227,6 @@ static void cirrusfb_pci_unmap (struct cirrusfb_info *cinfo)
|
||||
release_region(0x3C0, 32);
|
||||
pci_release_regions(pdev);
|
||||
framebuffer_release(cinfo->info);
|
||||
pci_disable_device(pdev);
|
||||
}
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
@ -2458,7 +2457,6 @@ err_release_regions:
|
||||
err_release_fb:
|
||||
framebuffer_release(info);
|
||||
err_disable:
|
||||
pci_disable_device(pdev);
|
||||
err_out:
|
||||
return ret;
|
||||
}
|
||||
|
@ -376,8 +376,6 @@ static int __init gx1fb_probe(struct pci_dev *pdev, const struct pci_device_id *
|
||||
release_mem_region(gx1_gx_base() + 0x8300, 0x100);
|
||||
}
|
||||
|
||||
pci_disable_device(pdev);
|
||||
|
||||
if (info)
|
||||
framebuffer_release(info);
|
||||
return ret;
|
||||
@ -399,7 +397,6 @@ static void gx1fb_remove(struct pci_dev *pdev)
|
||||
iounmap(par->dc_regs);
|
||||
release_mem_region(gx1_gx_base() + 0x8300, 0x100);
|
||||
|
||||
pci_disable_device(pdev);
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
|
||||
framebuffer_release(info);
|
||||
|
@ -354,8 +354,6 @@ static int __init gxfb_probe(struct pci_dev *pdev, const struct pci_device_id *i
|
||||
pci_release_region(pdev, 2);
|
||||
}
|
||||
|
||||
pci_disable_device(pdev);
|
||||
|
||||
if (info)
|
||||
framebuffer_release(info);
|
||||
return ret;
|
||||
@ -377,7 +375,6 @@ static void gxfb_remove(struct pci_dev *pdev)
|
||||
iounmap(par->dc_regs);
|
||||
pci_release_region(pdev, 2);
|
||||
|
||||
pci_disable_device(pdev);
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
|
||||
framebuffer_release(info);
|
||||
|
@ -2110,9 +2110,6 @@ static void i810fb_release_resource(struct fb_info *info,
|
||||
if (par->res_flags & MMIO_REQ)
|
||||
release_mem_region(par->mmio_start_phys, MMIO_SIZE);
|
||||
|
||||
if (par->res_flags & PCI_DEVICE_ENABLED)
|
||||
pci_disable_device(par->dev);
|
||||
|
||||
framebuffer_release(info);
|
||||
|
||||
}
|
||||
|
@ -1219,7 +1219,7 @@ static int __devinit nvidiafb_probe(struct pci_dev *pd,
|
||||
|
||||
if (pci_request_regions(pd, "nvidiafb")) {
|
||||
printk(KERN_ERR PFX "cannot request PCI regions\n");
|
||||
goto err_out_request;
|
||||
goto err_out_enable;
|
||||
}
|
||||
|
||||
par->FlatPanel = flatpanel;
|
||||
@ -1338,10 +1338,8 @@ err_out_free_base1:
|
||||
nvidia_delete_i2c_busses(par);
|
||||
err_out_arch:
|
||||
iounmap(par->REGS);
|
||||
err_out_free_base0:
|
||||
err_out_free_base0:
|
||||
pci_release_regions(pd);
|
||||
err_out_request:
|
||||
pci_disable_device(pd);
|
||||
err_out_enable:
|
||||
kfree(info->pixmap.addr);
|
||||
err_out_kfree:
|
||||
@ -1371,7 +1369,6 @@ static void __exit nvidiafb_remove(struct pci_dev *pd)
|
||||
nvidia_delete_i2c_busses(par);
|
||||
iounmap(par->REGS);
|
||||
pci_release_regions(pd);
|
||||
pci_disable_device(pd);
|
||||
kfree(info->pixmap.addr);
|
||||
framebuffer_release(info);
|
||||
pci_set_drvdata(pd, NULL);
|
||||
|
@ -2152,7 +2152,6 @@ err_iounmap_ctrl_base:
|
||||
err_release_region:
|
||||
pci_release_regions(pd);
|
||||
err_disable_device:
|
||||
pci_disable_device(pd);
|
||||
err_free_pixmap:
|
||||
kfree(info->pixmap.addr);
|
||||
err_framebuffer_release:
|
||||
@ -2187,7 +2186,6 @@ static void __exit rivafb_remove(struct pci_dev *pd)
|
||||
if (par->riva.Architecture == NV_ARCH_03)
|
||||
iounmap(par->riva.PRAMIN);
|
||||
pci_release_regions(pd);
|
||||
pci_disable_device(pd);
|
||||
kfree(info->pixmap.addr);
|
||||
framebuffer_release(info);
|
||||
pci_set_drvdata(pd, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user