Follow-up Comment #6, bug #49814 (project grub):
As this bug keeps hitting all i915 notebooks
(read: all notebooks), I had to dig a bit more.
The fix is attached.
> May be we need wrapper around ->fini() method that resets
> current page (moving code from
> grub_video_fb_get_info_and_fini()).
I tried that and this didn't work.
Below are the 2 code pathes:
1.
grub_video_get_info_and_fini() ->
grub_video_vbe_get_info_and_fini() ->
grub_video_fb_get_info_and_fini() ->
{ set_page(); grub_video_fb_fini() }
2.
grub_video_set_mode() ->
grub_video_vbe_fini() ->
{ grub_vbe_bios_set_mode(); grub_video_fb_fini() }
If you move set_page() to grub_video_fb_fini(),
then it will work for case 1 but not for case 2,
as in case 2 it will be called _after_ grub_vbe_bios_set_mode(),
yielding no results. Of course I could also move
grub_video_fb_fini() before grub_vbe_bios_set_mode(),
but not knowing the grub code well enough I was
afraid that then grub_vbe_bios_set_mode() will
use some already freed resources.
So I attached the simplest possible solution that
can't potentially break anything.
What do you think?
(file #44509)
_______________________________________________________
Additional Item Attachment:
File name: 0001-reset-display_start-before-switching-mode.patch Size:1 KB
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?49814>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
_______________________________________________
Bug-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-grub