From 0ddcdbae55f2dd6bbd4c4893ecfc0feeb21b9d91 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 23 Aug 2024 14:36:16 +0200 Subject: [PATCH 2/3] OvmfPkg/QemuVideoDxe: ignore display resolutions smaller than 640x480 RH-Author: Gerd Hoffmann RH-MergeRequest: 73: ignore display resolutions smaller than 640x480 RH-Jira: RHEL-56249 RH-Acked-by: Oliver Steffen RH-Commit: [2/2] 95d973e06f759c00637831a9521063794ce5cf28 (kraxel.rh/centos-src-edk2) GraphicsConsoleDxe will assert in case the resolution is too small. Signed-off-by: Gerd Hoffmann (cherry picked from commit 391666da2c1dc5671bbb3393079d86f46e3435af) --- OvmfPkg/QemuVideoDxe/Initialize.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initialize.c index 050ae878ec..2d1f50637f 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -293,6 +293,8 @@ QemuVideoBochsEdid ( ) { EFI_STATUS Status; + UINT32 X; + UINT32 Y; if (Private->Variant != QEMU_VIDEO_BOCHS_MMIO) { return; @@ -344,16 +346,24 @@ QemuVideoBochsEdid ( return; } - *XRes = Private->Edid[56] | ((Private->Edid[58] & 0xf0) << 4); - *YRes = Private->Edid[59] | ((Private->Edid[61] & 0xf0) << 4); + X = Private->Edid[56] | ((Private->Edid[58] & 0xf0) << 4); + Y = Private->Edid[59] | ((Private->Edid[61] & 0xf0) << 4); DEBUG (( DEBUG_INFO, "%a: default resolution: %dx%d\n", __func__, - *XRes, - *YRes + X, + Y )); + if ((X < 640) || (Y < 480)) { + /* ignore hint, GraphicsConsoleDxe needs 640x480 or larger */ + return; + } + + *XRes = X; + *YRes = Y; + if (PcdGet8 (PcdVideoResolutionSource) == 0) { Status = PcdSet32S (PcdVideoHorizontalResolution, *XRes); ASSERT_RETURN_ERROR (Status); -- 2.39.3