The patch titled Detaching fbcon: remove calls to pci_disable_device() has been added to the -mm tree. Its filename is detaching-fbcon-remove-calls-to-pci_disable_device.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: Detaching fbcon: remove calls to pci_disable_device() From: "Antonino A. Daplas" <adaplas@xxxxxxxxx> 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@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- 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(-) diff -puN drivers/video/aty/radeon_base.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/aty/radeon_base.c --- devel/drivers/video/aty/radeon_base.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/aty/radeon_base.c 2006-06-06 15:12:53.000000000 -0700 @@ -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 @@ static void __devexit radeonfb_pci_unreg #endif fb_dealloc_cmap(&info->cmap); framebuffer_release(info); - pci_disable_device(pdev); } diff -puN drivers/video/cirrusfb.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/cirrusfb.c --- devel/drivers/video/cirrusfb.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/cirrusfb.c 2006-06-06 15:12:53.000000000 -0700 @@ -2227,7 +2227,6 @@ static void cirrusfb_pci_unmap (struct c 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; } diff -puN drivers/video/geode/gx1fb_core.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/geode/gx1fb_core.c --- devel/drivers/video/geode/gx1fb_core.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/geode/gx1fb_core.c 2006-06-06 15:12:53.000000000 -0700 @@ -376,8 +376,6 @@ static int __init gx1fb_probe(struct pci 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 iounmap(par->dc_regs); release_mem_region(gx1_gx_base() + 0x8300, 0x100); - pci_disable_device(pdev); pci_set_drvdata(pdev, NULL); framebuffer_release(info); diff -puN drivers/video/geode/gxfb_core.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/geode/gxfb_core.c --- devel/drivers/video/geode/gxfb_core.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/geode/gxfb_core.c 2006-06-06 15:12:53.000000000 -0700 @@ -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); diff -puN drivers/video/i810/i810_main.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/i810/i810_main.c --- devel/drivers/video/i810/i810_main.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/i810/i810_main.c 2006-06-06 15:12:53.000000000 -0700 @@ -2110,9 +2110,6 @@ static void i810fb_release_resource(stru 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); } diff -puN drivers/video/nvidia/nvidia.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/nvidia/nvidia.c --- devel/drivers/video/nvidia/nvidia.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/nvidia/nvidia.c 2006-06-06 15:12:53.000000000 -0700 @@ -1219,7 +1219,7 @@ static int __devinit nvidiafb_probe(stru 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(struc 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); diff -puN drivers/video/riva/fbdev.c~detaching-fbcon-remove-calls-to-pci_disable_device drivers/video/riva/fbdev.c --- devel/drivers/video/riva/fbdev.c~detaching-fbcon-remove-calls-to-pci_disable_device 2006-06-06 15:12:53.000000000 -0700 +++ devel-akpm/drivers/video/riva/fbdev.c 2006-06-06 15:12:53.000000000 -0700 @@ -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 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); _ Patches currently in -mm which might be from adaplas@xxxxxxxxx are git-intelfb.patch savagefb-allocate-space-for-current-and-saved-register.patch savagefb-add-state-save-and_restore-hooks.patch savagefb-add-state-save-and_restore-hooks-fix.patch fbdev-more-accurate-sync-range-extrapolation.patch nvidiafb-revise-pci_device_id-table.patch atyfb-fix-hardware-cursor-handling.patch atyfb-remove-unneeded-calls-to-wait_for_idle.patch atyfb-set-correct-acceleration-flags.patch epson1355fb-update-platform-code.patch vesafb-update-platform-code.patch vfb-update-platform-code.patch vga16fb-update-platform-code.patch fbdev-static-pseudocolor-with-depth-less-than-4-does.patch savagefb-whitespace-cleanup.patch fbdev-firmware-edid-fixes.patch nvidiafb-add-support-for-geforce-6100-and-related-chipsets.patch vesafb-fix-return-code-of-vesafb_setcolreg.patch vesafb-prefer-vga-registers-over-pmi.patch atyfb-fix-dead-code.patch fbdev-coverity-bug-85.patch fbdev-coverity-bug-90.patch backlight-fix-kconfig-dependency.patch detaching-fbcon-fix-vgacon-to-allow-retaking-of-the.patch detaching-fbcon-fix-give_up_console.patch detaching-fbcon-remove-calls-to-pci_disable_device.patch detaching-fbcon-add-sysfs-class-device-entry-for-fbcon.patch detaching-fbcon-clean-up-exit-code.patch detaching-fbcon-add-capability-to-attach-detach-fbcon.patch detaching-fbcon-update-documentation.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html