Revert "fbdev: Hot-unplug firmware fb devices on forced removal"

This reverts commit c894ac4478.

It breaks the kernel abi so revert it for now.  We will add it back
later at the next kabi update.

Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I3ea6942053c06dac9e05d6a05081e404e10324eb
This commit is contained in:
Greg Kroah-Hartman 2022-04-12 16:28:45 +02:00
parent 240526f655
commit 5cc70dfa47
2 changed files with 3 additions and 27 deletions

View File

@ -25,7 +25,6 @@
#include <linux/init.h>
#include <linux/linux_logo.h>
#include <linux/proc_fs.h>
#include <linux/platform_device.h>
#include <linux/seq_file.h>
#include <linux/console.h>
#include <linux/kmod.h>
@ -1558,36 +1557,18 @@ static void do_remove_conflicting_framebuffers(struct apertures_struct *a,
/* check all firmware fbs and kick off if the base addr overlaps */
for_each_registered_fb(i) {
struct apertures_struct *gen_aper;
struct device *device;
if (!(registered_fb[i]->flags & FBINFO_MISC_FIRMWARE))
continue;
gen_aper = registered_fb[i]->apertures;
device = registered_fb[i]->device;
if (fb_do_apertures_overlap(gen_aper, a) ||
(primary && gen_aper && gen_aper->count &&
gen_aper->ranges[0].base == VGA_FB_PHYS)) {
printk(KERN_INFO "fb%d: switching to %s from %s\n",
i, name, registered_fb[i]->fix.id);
/*
* If we kick-out a firmware driver, we also want to remove
* the underlying platform device, such as simple-framebuffer,
* VESA, EFI, etc. A native driver will then be able to
* allocate the memory range.
*
* If it's not a platform device, at least print a warning. A
* fix would add code to remove the device from the system.
*/
if (dev_is_platform(device)) {
registered_fb[i]->forced_out = true;
platform_device_unregister(to_platform_device(device));
} else {
pr_warn("fb%d: cannot remove device\n", i);
do_unregister_framebuffer(registered_fb[i]);
}
do_unregister_framebuffer(registered_fb[i]);
}
}
}
@ -1914,13 +1895,9 @@ EXPORT_SYMBOL(register_framebuffer);
void
unregister_framebuffer(struct fb_info *fb_info)
{
bool forced_out = fb_info->forced_out;
if (!forced_out)
mutex_lock(&registration_lock);
mutex_lock(&registration_lock);
do_unregister_framebuffer(fb_info);
if (!forced_out)
mutex_unlock(&registration_lock);
mutex_unlock(&registration_lock);
}
EXPORT_SYMBOL(unregister_framebuffer);

View File

@ -502,7 +502,6 @@ struct fb_info {
} *apertures;
bool skip_vt_switch; /* no VT switch on suspend/resume required */
bool forced_out; /* set when being removed by another driver */
};
static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {