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

Reply via email to