linux-efi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] x86/efi-bgrt: Don't ignore the BGRT if the 'valid' bit is 0
@ 2015-12-20 21:53 Môshe van der Sterre
       [not found] ` <1450648391-4631-1-git-send-email-me-A/3C56C7qwM@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Môshe van der Sterre @ 2015-12-20 21:53 UTC (permalink / raw)
  To: matt-mF/unelCI9GS6iBeEJttW/XRex20P6io
  Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA, josh-iaAMLnmF4UmaiuxdJuQwMA,
	Môshe van der Sterre

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.
---
 arch/x86/platform/efi/efi-bgrt.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/x86/platform/efi/efi-bgrt.c b/arch/x86/platform/efi/efi-bgrt.c
index b097066..a243381 100644
--- a/arch/x86/platform/efi/efi-bgrt.c
+++ b/arch/x86/platform/efi/efi-bgrt.c
@@ -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);
@@ -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);
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread
[parent not found: <1452809107-17779-1-git-send-email-me@moshe.nl>]

end of thread, other threads:[~2016-01-18 21:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-20 21:53 [PATCH] x86/efi-bgrt: Don't ignore the BGRT if the 'valid' bit is 0 Môshe van der Sterre
     [not found] ` <1450648391-4631-1-git-send-email-me-A/3C56C7qwM@public.gmane.org>
2016-01-05 15:46   ` Matt Fleming
     [not found]     ` <20160105154640.GB2714-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2016-01-05 16:38       ` Môshe van der Sterre
     [not found]         ` <568BF19E.3040701-A/3C56C7qwM@public.gmane.org>
2016-01-08 11:30           ` Matt Fleming
     [not found]             ` <20160108113047.GD2532-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2016-01-08 11:42               ` Matt Fleming
     [not found]                 ` <20160108114235.GE2532-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2016-01-14 12:29                   ` Matt Fleming
     [not found]                     ` <20160114122945.GB3602-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2016-01-14 12:31                       ` Môshe van der Sterre
2016-01-08 18:09               ` Josh Triplett
     [not found] <1452809107-17779-1-git-send-email-me@moshe.nl>
     [not found] ` <1452809107-17779-1-git-send-email-me-A/3C56C7qwM@public.gmane.org>
2016-01-18 21:08   ` Matt Fleming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).