Detaching fbcon: Remove calls to pci_disable_device()
PATCH 3/7 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 <[email protected]>
---
drivers/video/aty/radeon_base.c | 2 -- drivers/video/cirrusfb.c | 2 -- drivers/video/geode/gx1fb_core.c | 3 --- drivers/video/geode/gxfb_core.c | 3 --- drivers/video/i810/i810_main.c | 3 --- drivers/video/nvidia/nvidia.c | 7 ++----- drivers/video/riva/fbdev.c | 2 -- 7 files changed, 2 insertions(+), 20 deletions(-)
drivers/video/aty/radeon_base.c +0 -2
@@ -2382,7 +2382,6 @@ err_release_pci0: err_release_fb:framebuffer_release (info); err_disable: -pci_disable_device (pdev); err_out:return ret; }
@@ -2439,7 +2438,6 @@ #ifdef CONFIG_FB_RADEON_I2C#endif fb_dealloc_cmap (&info->cmap);framebuffer_release (info); -pci_disable_device (pdev); }
drivers/video/cirrusfb.c +0 -2
@@ -2227,7 +2227,6 @@ #endifrelease_region (0x3C0 ,32 );pci_release_regions (pdev); framebuffer_release(cinfo->info); - pci_disable_device(pdev); }#endif /* CONFIG_PCI */
@@ -2458,7 +2457,6 @@ #endif err_release_fb:framebuffer_release (info); err_disable: -pci_disable_device (pdev); err_out:return ret; }
drivers/video/geode/gx1fb_core.c +0 -3
@@ -376,8 +376,6 @@ static int __init gx1fb_probe(struct pcirelease_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_deviounmap (par->dc_regs);release_mem_region (gx1_gx_base () +0x8300 ,0x100 ); -pci_disable_device (pdev);pci_set_drvdata (pdev,NULL );framebuffer_release (info);
drivers/video/geode/gxfb_core.c +0 -3
@@ -354,8 +354,6 @@ static int __init gxfb_probe(struct pci_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 *iounmap (par->dc_regs);pci_release_region (pdev,2 ); -pci_disable_device (pdev);pci_set_drvdata (pdev,NULL );framebuffer_release (info);
drivers/video/i810/i810_main.c +0 -3
@@ -2110,9 +2110,6 @@ static void i810fb_release_resource(struif (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); }
drivers/video/nvidia/nvidia.c +2 -5
@@ -1219,7 +1219,7 @@ static int __devinit nvidiafb_probe(struif (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 @@ #endif /* CONFIG_MTRR */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 );
drivers/video/riva/fbdev.c +0 -2
@@ -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 @@ #endif /* CONFIG_MTRR */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 );