--- grub-core/video/efi_gop.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) --- a/grub-core/video/efi_gop.c +++ b/grub-core/video/efi_gop.c @@ -358,6 +358,7 @@ grub_video_gop_setup (unsigned int width grub_err_t err; unsigned bpp; int found = 0; + int avoid_low_resolution = 1; unsigned long long best_volume = 0; unsigned int preferred_width = 0, preferred_height = 0; grub_uint8_t *buffer; @@ -376,8 +377,11 @@ grub_video_gop_setup (unsigned int width } } +again: /* Keep current mode if possible. */ - if (gop->mode->info) + if (gop->mode->info && + (!avoid_low_resolution || + (gop->mode->info->width >= 800 && gop->mode->info->height >= 600))) { bpp = grub_video_gop_get_bpp (gop->mode->info); if (bpp && ((width == gop->mode->info->width @@ -450,6 +454,11 @@ grub_video_gop_setup (unsigned int width if (!found) { + if (avoid_low_resolution && gop->mode->info) + { + avoid_low_resolution = 0; + goto again; + } grub_dprintf ("video", "GOP: no mode found\n"); return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "no matching mode found"); }