From 2afe3d23d4dc63c61d999086f1eef366e7738765 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 19 Sep 2022 11:53:08 -0600 Subject: [PATCH 1/2] Revert "fbdev: Disable sysfb device registration when removing conflicting FBs" This reverts commit ee7a69aa38d87a3bbced7b8245c732c05ed0c6ec. --- drivers/video/fbdev/core/fbmem.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 7ee6eb2fa71517..8e7ac18ec6314b 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -1765,17 +1764,6 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, do_free = true; } - /* - * If a driver asked to unregister a platform device registered by - * sysfb, then can be assumed that this is a driver for a display - * that is set up by the system firmware and has a generic driver. - * - * Drivers for devices that don't have a generic driver will never - * ask for this, so let's assume that a real driver for the display - * was already probed and prevent sysfb to register devices later. - */ - sysfb_disable(); - mutex_lock(®istration_lock); do_remove_conflicting_framebuffers(a, name, primary); mutex_unlock(®istration_lock); From 28340d4b764c06b931355d4bb01a0465178d14af Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 21 Sep 2022 14:10:54 -0600 Subject: [PATCH 2/2] Revert "drm/aperture: Run fbdev removal before internal helpers" This reverts commit 84499c5d220a4f8fb0a35fa4673148525c81ea83. --- drivers/gpu/drm/drm_aperture.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_aperture.c b/drivers/gpu/drm/drm_aperture.c index 059fd71424f6b6..74bd4a76b253cf 100644 --- a/drivers/gpu/drm/drm_aperture.c +++ b/drivers/gpu/drm/drm_aperture.c @@ -329,20 +329,7 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const struct drm_driver *req_driver) { resource_size_t base, size; - int bar, ret; - - /* - * WARNING: Apparently we must kick fbdev drivers before vgacon, - * otherwise the vga fbdev driver falls over. - */ -#if IS_REACHABLE(CONFIG_FB) - ret = remove_conflicting_pci_framebuffers(pdev, req_driver->name); - if (ret) - return ret; -#endif - ret = vga_remove_vgacon(pdev); - if (ret) - return ret; + int bar, ret = 0; for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) { if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) @@ -352,6 +339,15 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, drm_aperture_detach_drivers(base, size); } - return 0; + /* + * WARNING: Apparently we must kick fbdev drivers before vgacon, + * otherwise the vga fbdev driver falls over. + */ +#if IS_REACHABLE(CONFIG_FB) + ret = remove_conflicting_pci_framebuffers(pdev, req_driver->name); +#endif + if (ret == 0) + ret = vga_remove_vgacon(pdev); + return ret; } EXPORT_SYMBOL(drm_aperture_remove_conflicting_pci_framebuffers);