Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jan 2026 17:33:11 +0000
From:      Ahmad Khalifa <vexeduxr@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 6741fb1bd4f4 - stable/14 - loader.efi: only use firmware provided Blt on GOP
Message-ID:  <69653057.36ae9.2334c772@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch stable/14 has been updated by vexeduxr:

URL: https://cgit.FreeBSD.org/src/commit/?id=6741fb1bd4f473f3bc46e46841d2e53a9629907c

commit 6741fb1bd4f473f3bc46e46841d2e53a9629907c
Author:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
AuthorDate: 2026-01-04 13:15:37 +0000
Commit:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
CommitDate: 2026-01-12 17:26:33 +0000

    loader.efi: only use firmware provided Blt on GOP
    
    gfx_state.tg_private points to a EFI_GRAPHICS_OUTPUT_PROTOCOL only when
    using GOP.
    
    The firmware provided Blt functions on UGA platforms have been observed
    to not work on old MacBooks, and are likley hit or miss anyways as UGA
    has been deprecated since 2006.
    
    Reviewed by:    tsoome
    PR:             291935
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D54432
    
    (cherry picked from commit 9595055ae7494997bb07b4aaed544f88ac4c5e7f)
---
 stand/common/gfx_fb.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/stand/common/gfx_fb.c b/stand/common/gfx_fb.c
index 9942c629d124..67f757983cd3 100644
--- a/stand/common/gfx_fb.c
+++ b/stand/common/gfx_fb.c
@@ -83,6 +83,7 @@
  */
 
 #include <sys/param.h>
+#include <assert.h>
 #include <stand.h>
 #include <teken.h>
 #include <gfx_fb.h>
@@ -783,7 +784,7 @@ gfxfb_blt(void *BltBuffer, GFXFB_BLT_OPERATION BltOperation,
 	int rv;
 #if defined(EFI)
 	EFI_STATUS status;
-	EFI_GRAPHICS_OUTPUT *gop = gfx_state.tg_private;
+	EFI_GRAPHICS_OUTPUT *gop;
 	EFI_TPL tpl;
 
 	/*
@@ -793,7 +794,9 @@ gfxfb_blt(void *BltBuffer, GFXFB_BLT_OPERATION BltOperation,
 	 * done as they are provided by protocols that disappear when exit
 	 * boot services.
 	 */
-	if (gop != NULL && boot_services_active) {
+	if (gfx_state.tg_fb_type == FB_GOP && boot_services_active) {
+		assert(gfx_state.tg_private != NULL);
+		gop = gfx_state.tg_private;
 		tpl = BS->RaiseTPL(TPL_NOTIFY);
 		switch (BltOperation) {
 		case GfxFbBltVideoFill:


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69653057.36ae9.2334c772>