firmware/sysfb: Clear screen_info state after consuming it
After consuming the global screen_info_state in sysfb_init(), the created platform device maintains the firmware framebuffer. Clear screen_info to avoid conflicting access. Subsequent kexec reboots now ignore the firmware framebuffer. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
parent
0aa0838c84
commit
df67699c9c
@ -71,7 +71,7 @@ EXPORT_SYMBOL_GPL(sysfb_disable);
|
||||
|
||||
static __init int sysfb_init(void)
|
||||
{
|
||||
struct screen_info *si = &screen_info;
|
||||
const struct screen_info *si = &screen_info;
|
||||
struct simplefb_platform_data mode;
|
||||
const char *name;
|
||||
bool compatible;
|
||||
@ -119,6 +119,18 @@ static __init int sysfb_init(void)
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
/*
|
||||
* The firmware framebuffer is now maintained by the created
|
||||
* device. Disable screen_info after we've consumed it. Prevents
|
||||
* invalid access during kexec reboots.
|
||||
*
|
||||
* TODO: Vgacon still relies on the global screen_info. Make
|
||||
* vgacon work with the platform device, so we can clear
|
||||
* the screen_info unconditionally.
|
||||
*/
|
||||
if (strcmp(name, "platform-framebuffer"))
|
||||
screen_info.orig_video_isVGA = 0;
|
||||
|
||||
goto unlock_mutex;
|
||||
err:
|
||||
platform_device_put(pd);
|
||||
|
Loading…
Reference in New Issue
Block a user