Skip to content

Commit

Permalink
x86/efi/bgrt: Don't ignore the BGRT if the 'valid' bit is 0
Browse files Browse the repository at this point in the history
Unintuitively, the BGRT graphic is apparently meant to be usable
if the valid bit in not set. The valid bit only conveys
uncertainty about the validity in relation to the screen state.

Windows 10 actually uses the BGRT image for its boot screen even
if not 'valid', for example when the user triggered the boot
menu. Because it is unclear if all firmwares will provide a
usable graphic in this case, we now look at the BMP magic number
as an additional check.

Reviewed-by: Josh Triplett <[email protected]>
Signed-off-by: Môshe van der Sterre <[email protected]>
Signed-off-by: Matt Fleming <[email protected]>
Cc: =?UTF-8?q?M=C3=B4she=20van=20der=20Sterre?= <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
  • Loading branch information
moshevds authored and Ingo Molnar committed Feb 3, 2016
1 parent 9c09a34 commit 66dbe99
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions arch/x86/platform/efi/efi-bgrt.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,6 @@ void __init efi_bgrt_init(void)
bgrt_tab->status);
return;
}
if (bgrt_tab->status != 1) {
pr_debug("Ignoring BGRT: invalid status %u (expected 1)\n",
bgrt_tab->status);
return;
}
if (bgrt_tab->image_type != 0) {
pr_err("Ignoring BGRT: invalid image type %u (expected 0)\n",
bgrt_tab->image_type);
Expand All @@ -80,6 +75,11 @@ void __init efi_bgrt_init(void)

memcpy(&bmp_header, image, sizeof(bmp_header));
memunmap(image);
if (bmp_header.id != 0x4d42) {
pr_err("Ignoring BGRT: Incorrect BMP magic number 0x%x (expected 0x4d42)\n",
bmp_header.id);
return;
}
bgrt_image_size = bmp_header.size;

bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN);
Expand Down

0 comments on commit 66dbe99

Please sign in to comment.