diff --git a/stand/efi/loader/framebuffer.c b/stand/efi/loader/framebuffer.c --- a/stand/efi/loader/framebuffer.c +++ b/stand/efi/loader/framebuffer.c @@ -880,14 +880,16 @@ sprintf(command_errbuf, "mode is an integer"); return (CMD_ERROR); } - status = gop->SetMode(gop, mode); - if (EFI_ERROR(status)) { - snprintf(command_errbuf, sizeof(command_errbuf), - "%s: Unable to set mode to %u (error=%lu)", - argv[0], mode, EFI_ERROR_CODE(status)); - return (CMD_ERROR); + if (gop->Mode->Mode != mode) { + status = gop->SetMode(gop, mode); + if (EFI_ERROR(status)) { + snprintf(command_errbuf, sizeof(command_errbuf), + "%s: Unable to set mode to %u (error=%lu)", + argv[0], mode, EFI_ERROR_CODE(status)); + return (CMD_ERROR); + } + (void) cons_update_mode(true); } - (void) cons_update_mode(true); } else if (strcmp(argv[1], "blt") == 0) { /* * "blt on" does allow gop->Blt() to be used (default).