From nobody Wed May 1 12:14:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85729+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85729+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1642413525; cv=none; d=zohomail.com; s=zohoarc; b=O7mZewdSawEjUGI8FZ2f4ihbQlN1kc2/fl7YmuTer6Ai0bn6OQrVULqkSuwWW8J9JBY/UVGplRMfzzEBZtRi0BCs20ZP+/w0d2nr2AHeuMFr0yjBVbnXxHJ0nxaIRYvjg3m50y74E/tz3M/Vv53VOiQqJxFhZaFslC/E8qTHZSc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642413525; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=XkHnkWvyOntMk5TpYHOAmtBywKVQ91MT4vIBxrpbcYw=; b=Lcvz3oZw6g3ANGRyzy/1EgoYBO2kZygZp2uwwtyqrUAqjhGr2FwbE2AJDrOQG1XIxxFsWnmIBf199GZN++pMlUAjFaS5kzcdEtPkwy0RjOUEkC6GGQtLbnBWMPXtC2etTsf65YF2CeNdoQjCGSGqtfUUg2MSrqNrC6YsXFKj6QY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85729+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1642413525243370.1146449261355; Mon, 17 Jan 2022 01:58:45 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id glxkYY1788612xkdsSqDKqEQ; Mon, 17 Jan 2022 01:58:44 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web08.9308.1642413523969637022 for ; Mon, 17 Jan 2022 01:58:44 -0800 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-3-6UNDp240NdyshJpRyssWwQ-1; Mon, 17 Jan 2022 04:58:40 -0500 X-MC-Unique: 6UNDp240NdyshJpRyssWwQ-1 X-Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0418B1023F4E; Mon, 17 Jan 2022 09:58:38 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F41D8703A2; Mon, 17 Jan 2022 09:58:18 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 252EC180060F; Mon, 17 Jan 2022 10:58:17 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Gerd Hoffmann , Jordan Justen , Min Xu , Jiewen Yao , Julien Grall , Tom Lendacky , Brijesh Singh , James Bottomley , Erdem Aktas , Pawel Polawski , Anthony Perard , Ard Biesheuvel Subject: [edk2-devel] [PATCH v2 1/5] OvmfPkg: add PcdVideoResolutionSource Date: Mon, 17 Jan 2022 10:58:13 +0100 Message-Id: <20220117095817.1964424-2-kraxel@redhat.com> In-Reply-To: <20220117095817.1964424-1-kraxel@redhat.com> References: <20220117095817.1964424-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: lR3Rxf9MLrAXhsQ0oXKUu4Pvx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642413524; bh=rlcCXzlvAnecwXkfuuQnypYyhrm0Q0ByDl5oDebyvcw=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=LJLd+eI1TQi5u4MPKZEEXjB7Gl02PK7k+SLsFcbc/BuhESc6a+udSFYuzwt1M6bwRsO PYuUpYlX31WdFkwL3C3QphlbCPe/EFbgVHMi2tUS+bMbjYaXxMDoQ3LfSPODaqF3xbaPI X5RPq40yWYZdjp7phfmePXmMRhpx4vz9oxE= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642413527029100001 Content-Type: text/plain; charset="utf-8" It's a UINT8 (enum) PCD telling where the PcdVideoHorizontalResolution and PcdVideoVerticalResolution values are coming from. It can be: 0 (unset aka default from dsc file), or 1 (from PlatformConfig), or 2 (set by Video Driver). It will be used by video drivers to avoid overriding PlatformConfig values, or override each others values in case multiple display devices are present. The underlying problem this tries to solve is that the GOP protocol has no way to indicate the preferred video mode. On physical hardware this isn't much of a problem because using the highest resolution available works just fine as that is typically the native display resolution But in a virtual machine you don't want come up with a huge 4k window by default just because the virtual vga is able to handle that. Cutting down the video mode list isn't a great solution either as that would also remove the modes from the platform configuration so the user wouldn't be able to pick a resolution higher than the default any more. So with patch drivers can use use PcdVideoHorizontalResolution and PcdVideoVerticalResolution to indicate what the preferred display resolution is, without overwriting the user preferences from PlatformConfig if present. A possible alternative approach would be to extend the GOP protocol, but I'm not sure this is a good plan given this is mostly a problem for virtual machines and using PCDs allows to keep this local to OvmfPkg. Signed-off-by: Gerd Hoffmann Acked-by: Ard Biesheuvel --- OvmfPkg/OvmfPkg.dec | 7 +++++++ OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + OvmfPkg/Microvm/MicrovmX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfXen.dsc | 1 + OvmfPkg/PlatformDxe/Platform.inf | 1 + OvmfPkg/PlatformDxe/Platform.c | 3 +++ 9 files changed, 17 insertions(+) diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 769bef0ffa12..7aa94ca02863 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -408,6 +408,13 @@ [PcdsDynamic, PcdsDynamicEx] # instance in PiSmmCpuDxeSmm, and CpuHotplugSmm. gUefiOvmfPkgTokenSpaceGuid.PcdCpuHotEjectDataAddress|0|UINT64|0x46 =20 + ## This PCD tracks where PcdVideo{Horizontal,Vertical}Resolution + # values are coming from. + # 0 - unset (defaults from platform dsc) + # 1 - set from PlatformConfig + # 2 - set by GOP Driver. + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0|UINT8|0x64 + [PcdsFeatureFlag] gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0= x1c gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN= |0x1d diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc index 04ae61cf69d8..343ac643f021 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.dsc +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc @@ -527,6 +527,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc index 1c2e600febee..cb28bd8bba2c 100644 --- a/OvmfPkg/Microvm/MicrovmX64.dsc +++ b/OvmfPkg/Microvm/MicrovmX64.dsc @@ -560,6 +560,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 085cc7ece15d..2f05d93ed4af 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -590,6 +590,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index 0ce122ddb50c..bcab54aaa02a 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -596,6 +596,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 4589adff388d..ee0fdf492fd4 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -595,6 +595,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc index de0d30bfb807..1f6352195b75 100644 --- a/OvmfPkg/OvmfXen.dsc +++ b/OvmfPkg/OvmfXen.dsc @@ -468,6 +468,7 @@ [PcdsDynamicDefault] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 diff --git a/OvmfPkg/PlatformDxe/Platform.inf b/OvmfPkg/PlatformDxe/Platfor= m.inf index 14727c1220e8..d2f75d78b601 100644 --- a/OvmfPkg/PlatformDxe/Platform.inf +++ b/OvmfPkg/PlatformDxe/Platform.inf @@ -47,6 +47,7 @@ [LibraryClasses] [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource =20 [Protocols] gEfiDevicePathProtocolGuid ## PRODUCES diff --git a/OvmfPkg/PlatformDxe/Platform.c b/OvmfPkg/PlatformDxe/Platform.c index 69a7ecb83d03..4bf22712c78f 100644 --- a/OvmfPkg/PlatformDxe/Platform.c +++ b/OvmfPkg/PlatformDxe/Platform.c @@ -742,6 +742,9 @@ ExecutePlatformConfig ( PlatformConfig.VerticalResolution ); ASSERT_RETURN_ERROR (PcdStatus); + + PcdStatus =3D PcdSet8S (PcdVideoResolutionSource, 1); + ASSERT_RETURN_ERROR (PcdStatus); } =20 return EFI_SUCCESS; --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85729): https://edk2.groups.io/g/devel/message/85729 Mute This Topic: https://groups.io/mt/88481077/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 1 12:14:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85731+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85731+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1642413538; cv=none; d=zohomail.com; s=zohoarc; b=EBQuWeyy92jL6JDquahLNw/RJCPVgPt+K49lgJLhog77e0/712cHsCWs2gJMYMhBwPZgSTeEAPgIaonBThGNInFCSaiQzoNeNfiK+wVeA31g4JOMN/rh50vJdaql9wE813ex6zFp2QeLgDgTiBdzRGstVREItHqco/+3P99+8E0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642413538; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=RSWZLfpH0dbg8+E1tb+bhLm8FWS4QlO3N1+MJKt5hoU=; b=kCcYlNgmlBwy1HmFUX24hRSd9j4eGi51dSnckJNj3ruSGAwjBGbn4hDfwZEg15TMs+g8fm5Wl2CzS2UOocKLlHbSYDD8xXS/69c5+G37TTXcXjQ6i2RficTWmOqdnkTZeZbwL6TmHZ1Ij51Zax6B7dMqEnZDyVTAeMoUNYH2NoI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85731+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1642413538976951.2311599670359; Mon, 17 Jan 2022 01:58:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 2HZQYY1788612xBqq2Q1IIAs; Mon, 17 Jan 2022 01:58:58 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web11.9410.1642413537772396482 for ; Mon, 17 Jan 2022 01:58:58 -0800 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-81-Q7KwJLpNOQaDjPx0qMX8aQ-1; Mon, 17 Jan 2022 04:58:54 -0500 X-MC-Unique: Q7KwJLpNOQaDjPx0qMX8aQ-1 X-Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3CB3A64092; Mon, 17 Jan 2022 09:58:52 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CE7F260C42; Mon, 17 Jan 2022 09:58:39 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 2AEF11800614; Mon, 17 Jan 2022 10:58:17 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Gerd Hoffmann , Jordan Justen , Min Xu , Jiewen Yao , Julien Grall , Tom Lendacky , Brijesh Singh , James Bottomley , Erdem Aktas , Pawel Polawski , Anthony Perard , Ard Biesheuvel Subject: [edk2-devel] [PATCH v2 2/5] OvmfPkg/QemuVideoDxe: simplify InitializeBochsGraphicsMode Date: Mon, 17 Jan 2022 10:58:14 +0100 Message-Id: <20220117095817.1964424-3-kraxel@redhat.com> In-Reply-To: <20220117095817.1964424-1-kraxel@redhat.com> References: <20220117095817.1964424-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: ylTb4iu4zAJMkEH93CpsZIIJx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642413538; bh=Mh2UtkcN8xFTRAGizNaP+Yh+6Dc0InwWyXjMtl3+LDU=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=UJqQEgH1B3MggincjS2PhFMsRWJwTazhVTd3gU3p1PzudPHSeaSeZJYFeNEYQ6O5Acp JWYJEbNrFgyhu3GfGb0oDfxFaZYMEZqwXm8VajGRVJlt0cuVZwH0AvMMBEreo7q3IHFRJ BSd9EdH0MaVDBsXyFmt12plA/oXLUexJHn4= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642413540865100002 Content-Type: text/plain; charset="utf-8" struct QEMU_VIDEO_MODE_DATA has all the data needed to set the video mode, there is no need to take the extra indirection and use struct QEMU_VIDEO_BOCHS_MODES. Signed-off-by: Gerd Hoffmann Acked-by: Ard Biesheuvel --- OvmfPkg/QemuVideoDxe/Qemu.h | 3 +-- OvmfPkg/QemuVideoDxe/Driver.c | 14 +++++++------- OvmfPkg/QemuVideoDxe/Gop.c | 2 +- OvmfPkg/QemuVideoDxe/Initialize.c | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h index 8f05898f862c..fef648c967b2 100644 --- a/OvmfPkg/QemuVideoDxe/Qemu.h +++ b/OvmfPkg/QemuVideoDxe/Qemu.h @@ -150,7 +150,6 @@ extern UINT16 Seq_800_600_256_60= []; extern UINT8 Crtc_1024_768_256_60[]; extern UINT16 Seq_1024_768_256_60[]; extern QEMU_VIDEO_CIRRUS_MODES QemuVideoCirrusModes[]; -extern QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[]; extern EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding; extern EFI_COMPONENT_NAME_PROTOCOL gQemuVideoComponentName; extern EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2; @@ -414,7 +413,7 @@ InitializeCirrusGraphicsMode ( VOID InitializeBochsGraphicsMode ( QEMU_VIDEO_PRIVATE_DATA *Private, - QEMU_VIDEO_BOCHS_MODES *ModeData + QEMU_VIDEO_MODE_DATA *ModeData ); =20 VOID diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c index d9f0a2464aa3..b91909a14e59 100644 --- a/OvmfPkg/QemuVideoDxe/Driver.c +++ b/OvmfPkg/QemuVideoDxe/Driver.c @@ -987,14 +987,14 @@ VgaOutb ( VOID InitializeBochsGraphicsMode ( QEMU_VIDEO_PRIVATE_DATA *Private, - QEMU_VIDEO_BOCHS_MODES *ModeData + QEMU_VIDEO_MODE_DATA *ModeData ) { DEBUG (( DEBUG_INFO, "InitializeBochsGraphicsMode: %dx%d @ %d\n", - ModeData->Width, - ModeData->Height, + ModeData->HorizontalResolution, + ModeData->VerticalResolution, ModeData->ColorDepth )); =20 @@ -1007,10 +1007,10 @@ InitializeBochsGraphicsMode ( BochsWrite (Private, VBE_DISPI_INDEX_Y_OFFSET, 0); =20 BochsWrite (Private, VBE_DISPI_INDEX_BPP, (UINT16)ModeData->ColorDepth); - BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16)ModeData->Width); - BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16)ModeData->Width= ); - BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16)ModeData->Height); - BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16)ModeData->Heig= ht); + BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16)ModeData->HorizontalR= esolution); + BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16)ModeData->Horiz= ontalResolution); + BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16)ModeData->VerticalRes= olution); + BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16)ModeData->Vert= icalResolution); =20 BochsWrite ( Private, diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c index 5ad0afe88378..0c4dea7fb6f2 100644 --- a/OvmfPkg/QemuVideoDxe/Gop.c +++ b/OvmfPkg/QemuVideoDxe/Gop.c @@ -177,7 +177,7 @@ Routine Description: break; case QEMU_VIDEO_BOCHS_MMIO: case QEMU_VIDEO_BOCHS: - InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData-= >InternalModeIndex]); + InitializeBochsGraphicsMode (Private, ModeData); break; default: ASSERT (FALSE); diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initi= alize.c index 533ec661d64f..8a70cf848483 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -202,7 +202,7 @@ QemuVideoCirrusModeSetup ( /// /// Table of supported video modes /// -QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] =3D { +STATIC QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] =3D { { 640, 480, 32 }, { 800, 480, 32 }, { 800, 600, 32 }, --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85731): https://edk2.groups.io/g/devel/message/85731 Mute This Topic: https://groups.io/mt/88481081/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 1 12:14:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85733+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85733+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1642413550; cv=none; d=zohomail.com; s=zohoarc; b=jEFUIV24vsAxYJ0oVmM/ShOvHycKNU3uvxr4xFF7uza0FmziIQvw3WwLb4nD27WX2DEMahe+ccq5xlaSob5ZEjD537UV+fGKbhM5gHgDjKlVjHWP6+FlKgvWK7/VyqGSUcg0cpFCz/YTjvjd1QY29KQWkdUur/APZC2dw8Cx6tY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642413550; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=57lqia3oXQTLGjJNgciPf1XmKut85S2cPAfzZc9oacY=; b=lLkyZKYP7XDT3nkaXM4LIX2298jgMBxuOIFGzKE7rxtK3tKSuMpAiyYjsc1U2dHh+M1hAL4GCjA41v1HBz5wwlBRzmVQ92EshZq7y5h/67XJdCKxGhYW8cuR8iQWPA6m0e0pMQ3el5iu9SzjBca2/0CEs7oOi7Amzo0ooPMMJcI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85733+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1642413550010338.0052115680512; Mon, 17 Jan 2022 01:59:10 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id h9BIYY1788612xI0b5JBFa76; Mon, 17 Jan 2022 01:59:09 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web10.9368.1642413548354018914 for ; Mon, 17 Jan 2022 01:59:08 -0800 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-557-vpxYF6G7PmKidmb6Nx77eA-1; Mon, 17 Jan 2022 04:58:54 -0500 X-MC-Unique: vpxYF6G7PmKidmb6Nx77eA-1 X-Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4E3948144E1; Mon, 17 Jan 2022 09:58:52 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CA13B22E04; Mon, 17 Jan 2022 09:58:39 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3606B1800618; Mon, 17 Jan 2022 10:58:17 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Gerd Hoffmann , Jordan Justen , Min Xu , Jiewen Yao , Julien Grall , Tom Lendacky , Brijesh Singh , James Bottomley , Erdem Aktas , Pawel Polawski , Anthony Perard , Ard Biesheuvel Subject: [edk2-devel] [PATCH v2 3/5] OvmfPkg/QemuVideoDxe: drop QEMU_VIDEO_BOCHS_MODES->ColorDepth Date: Mon, 17 Jan 2022 10:58:15 +0100 Message-Id: <20220117095817.1964424-4-kraxel@redhat.com> In-Reply-To: <20220117095817.1964424-1-kraxel@redhat.com> References: <20220117095817.1964424-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: xjxEY9Z83MRmO6C7Yas8kEffx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642413549; bh=CUh83zDkLfpU40soBzs4I9D9OphBHF9HLK1BJDx/5IA=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=wm4gCi/YsRL9LfvIifBOPr42MAn9bnVygggl7d+bseRZh59MIu/lB3hmyBsP4ZT4VDA nCVNrVTvzCZxEhVl+vhYaNCPqaURdXfzfcWNh3G1kHW4u+ZR1Eg6RRALqWAq1EIDxcWh5 U6YuR4mguD6gV2y+bBlJHcNDMVtXxBCzF5g= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642413552158100005 Content-Type: text/plain; charset="utf-8" All video modes in the list are 32-bit, so drop the useless ColorDepth field. Signed-off-by: Gerd Hoffmann Acked-by: Ard Biesheuvel --- OvmfPkg/QemuVideoDxe/Qemu.h | 1 - OvmfPkg/QemuVideoDxe/Initialize.c | 80 +++++++++++++++---------------- 2 files changed, 39 insertions(+), 42 deletions(-) diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h index fef648c967b2..1e6507f44caa 100644 --- a/OvmfPkg/QemuVideoDxe/Qemu.h +++ b/OvmfPkg/QemuVideoDxe/Qemu.h @@ -132,7 +132,6 @@ typedef struct { typedef struct { UINT32 Width; UINT32 Height; - UINT32 ColorDepth; } QEMU_VIDEO_BOCHS_MODES; =20 #define QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS(a) \ diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initi= alize.c index 8a70cf848483..2b174d13faf2 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -203,43 +203,43 @@ QemuVideoCirrusModeSetup ( /// Table of supported video modes /// STATIC QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] =3D { - { 640, 480, 32 }, - { 800, 480, 32 }, - { 800, 600, 32 }, - { 832, 624, 32 }, - { 960, 640, 32 }, - { 1024, 600, 32 }, - { 1024, 768, 32 }, - { 1152, 864, 32 }, - { 1152, 870, 32 }, - { 1280, 720, 32 }, - { 1280, 760, 32 }, - { 1280, 768, 32 }, - { 1280, 800, 32 }, - { 1280, 960, 32 }, - { 1280, 1024, 32 }, - { 1360, 768, 32 }, - { 1366, 768, 32 }, - { 1400, 1050, 32 }, - { 1440, 900, 32 }, - { 1600, 900, 32 }, - { 1600, 1200, 32 }, - { 1680, 1050, 32 }, - { 1920, 1080, 32 }, - { 1920, 1200, 32 }, - { 1920, 1440, 32 }, - { 2000, 2000, 32 }, - { 2048, 1536, 32 }, - { 2048, 2048, 32 }, - { 2560, 1440, 32 }, - { 2560, 1600, 32 }, - { 2560, 2048, 32 }, - { 2800, 2100, 32 }, - { 3200, 2400, 32 }, - { 3840, 2160, 32 }, - { 4096, 2160, 32 }, - { 7680, 4320, 32 }, - { 8192, 4320, 32 } + { 640, 480 }, + { 800, 480 }, + { 800, 600 }, + { 832, 624 }, + { 960, 640 }, + { 1024, 600 }, + { 1024, 768 }, + { 1152, 864 }, + { 1152, 870 }, + { 1280, 720 }, + { 1280, 760 }, + { 1280, 768 }, + { 1280, 800 }, + { 1280, 960 }, + { 1280, 1024 }, + { 1360, 768 }, + { 1366, 768 }, + { 1400, 1050 }, + { 1440, 900 }, + { 1600, 900 }, + { 1600, 1200 }, + { 1680, 1050 }, + { 1920, 1080 }, + { 1920, 1200 }, + { 1920, 1440 }, + { 2000, 2000 }, + { 2048, 1536 }, + { 2048, 2048 }, + { 2560, 1440 }, + { 2560, 1600 }, + { 2560, 2048 }, + { 2800, 2100 }, + { 3200, 2400 }, + { 3840, 2160 }, + { 4096, 2160 }, + { 7680, 4320 }, + { 8192, 4320 } }; =20 #define QEMU_VIDEO_BOCHS_MODE_COUNT \ @@ -348,14 +348,12 @@ QemuVideoBochsModeSetup ( for (Index =3D 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) { UINTN RequiredFbSize; =20 - ASSERT (VideoMode->ColorDepth % 8 =3D=3D 0); - RequiredFbSize =3D (UINTN)VideoMode->Width * VideoMode->Height * - (VideoMode->ColorDepth / 8); + RequiredFbSize =3D (UINTN)VideoMode->Width * VideoMode->Height * 4; if (RequiredFbSize <=3D AvailableFbSize) { ModeData->InternalModeIndex =3D Index; ModeData->HorizontalResolution =3D VideoMode->Width; ModeData->VerticalResolution =3D VideoMode->Height; - ModeData->ColorDepth =3D VideoMode->ColorDepth; + ModeData->ColorDepth =3D 32; DEBUG (( DEBUG_INFO, "Adding Mode %d as Bochs Internal Mode %d: %dx%d, %d-bit\n", --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85733): https://edk2.groups.io/g/devel/message/85733 Mute This Topic: https://groups.io/mt/88481084/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 1 12:14:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85734+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85734+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1642413558; cv=none; d=zohomail.com; s=zohoarc; b=ZMsDAgymC6GmbTbD3KS6B8YuS1LBTKIcsjdlfozXWm6+83g9P2gh5MfRej4odReuRqItLq0OpvmnYqBNUKAlmrxLiCGlUflNky+LVqAFvfi0WryAKo3NcdVPU56FRGwUaF8MNdWX5C0GhF6EKtJVA8UlT9nxwz0ChEDDnn8n1XA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642413558; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=ez0XCGyJsQ2DaUJ1JpHC7jMv+qp03mq6JhHo9qsoHAs=; b=aw4bliUMmfGYDKA3GacE6xLGpyKSEg6WeduYBPB5Pn0otqLa8gMVXTuCm4H2qZzVhgY06izvz+aPd8IhW5RHv6LkUSdJH2r2RD2JSgt87PeQNPYu4N2rRxto3zU7i9T8iL+dHBvsMAwSRX3rJ0/UzMV7yjXto5X1c+oaN4NErQw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85734+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1642413558003190.45703377356028; Mon, 17 Jan 2022 01:59:18 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 2qdpYY1788612xLCUEXTBiHL; Mon, 17 Jan 2022 01:59:17 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web12.9273.1642413556991670168 for ; Mon, 17 Jan 2022 01:59:17 -0800 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-633-sr_lX7oIOgi9MX5RYtd-VA-1; Mon, 17 Jan 2022 04:59:11 -0500 X-MC-Unique: sr_lX7oIOgi9MX5RYtd-VA-1 X-Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2FBB218C8C01; Mon, 17 Jan 2022 09:59:06 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F2A2870D26; Mon, 17 Jan 2022 09:58:53 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3C2FF1800620; Mon, 17 Jan 2022 10:58:17 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Gerd Hoffmann , Jordan Justen , Min Xu , Jiewen Yao , Julien Grall , Tom Lendacky , Brijesh Singh , James Bottomley , Erdem Aktas , Pawel Polawski , Anthony Perard , Ard Biesheuvel Subject: [edk2-devel] [PATCH v2 4/5] OvmfPkg/QemuVideoDxe: factor out QemuVideoBochsAddMode Date: Mon, 17 Jan 2022 10:58:16 +0100 Message-Id: <20220117095817.1964424-5-kraxel@redhat.com> In-Reply-To: <20220117095817.1964424-1-kraxel@redhat.com> References: <20220117095817.1964424-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: AsLGnPIyo5QQlKWbIxKiPpNAx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642413557; bh=Imz0cSst/4rV0TXnba+Ly4Nw0OzjNKSulcXnW5XvXNw=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=EA2w0GErQBvW+v66DABkN2LhHLp5VXXhThXvr/8tYQA8k96ov1BywSv91RGN2avf+ea dPowc7CfVHSdJ67901B/V8aCzF7IabAThqsS9wy4ws2hx+WUAaHZDEAxatcFQjAWe0NqT QmobsoLsll7Nqbe7zs1js0JGGpns8LTIxss= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642413559063100001 Content-Type: text/plain; charset="utf-8" Add helper function to add a video mode to the list of modes. Move code. Minor debug logging tweaks, no other functional change. Signed-off-by: Gerd Hoffmann Acked-by: Ard Biesheuvel --- OvmfPkg/QemuVideoDxe/Initialize.c | 77 +++++++++++++++++++------------ 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initi= alize.c index 2b174d13faf2..8c5c9176ad21 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -245,16 +245,53 @@ STATIC QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] = =3D { #define QEMU_VIDEO_BOCHS_MODE_COUNT \ (ARRAY_SIZE (QemuVideoBochsModes)) =20 +STATIC +VOID +QemuVideoBochsAddMode ( + QEMU_VIDEO_PRIVATE_DATA *Private, + UINT32 AvailableFbSize, + UINT32 Width, + UINT32 Height + ) +{ + QEMU_VIDEO_MODE_DATA *ModeData =3D Private->ModeData + Private->MaxMode; + UINTN RequiredFbSize; + + RequiredFbSize =3D (UINTN)Width * Height * 4; + if (RequiredFbSize > AvailableFbSize) { + DEBUG (( + DEBUG_INFO, + "Skipping Bochs Mode %dx%d, 32-bit (not enough vram)\n", + Width, + Height + )); + return; + } + + ModeData->InternalModeIndex =3D (UINT32)Private->MaxMode; + ModeData->HorizontalResolution =3D Width; + ModeData->VerticalResolution =3D Height; + ModeData->ColorDepth =3D 32; + DEBUG (( + DEBUG_INFO, + "Adding Bochs Internal Mode %d: %dx%d, %d-bit\n", + ModeData->InternalModeIndex, + ModeData->HorizontalResolution, + ModeData->VerticalResolution, + ModeData->ColorDepth + )); + + Private->MaxMode++; +} + EFI_STATUS QemuVideoBochsModeSetup ( QEMU_VIDEO_PRIVATE_DATA *Private, BOOLEAN IsQxl ) { - UINT32 AvailableFbSize; - UINT32 Index; - QEMU_VIDEO_MODE_DATA *ModeData; - QEMU_VIDEO_BOCHS_MODES *VideoMode; + UINT32 AvailableFbSize; + UINT32 Index; =20 // // Fetch the available framebuffer size. @@ -343,34 +380,14 @@ QemuVideoBochsModeSetup ( return EFI_OUT_OF_RESOURCES; } =20 - ModeData =3D Private->ModeData; - VideoMode =3D &QemuVideoBochsModes[0]; for (Index =3D 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) { - UINTN RequiredFbSize; - - RequiredFbSize =3D (UINTN)VideoMode->Width * VideoMode->Height * 4; - if (RequiredFbSize <=3D AvailableFbSize) { - ModeData->InternalModeIndex =3D Index; - ModeData->HorizontalResolution =3D VideoMode->Width; - ModeData->VerticalResolution =3D VideoMode->Height; - ModeData->ColorDepth =3D 32; - DEBUG (( - DEBUG_INFO, - "Adding Mode %d as Bochs Internal Mode %d: %dx%d, %d-bit\n", - (INT32)(ModeData - Private->ModeData), - ModeData->InternalModeIndex, - ModeData->HorizontalResolution, - ModeData->VerticalResolution, - ModeData->ColorDepth - )); - - ModeData++; - } - - VideoMode++; + QemuVideoBochsAddMode ( + Private, + AvailableFbSize, + QemuVideoBochsModes[Index].Width, + QemuVideoBochsModes[Index].Height + ); } =20 - Private->MaxMode =3D ModeData - Private->ModeData; - return EFI_SUCCESS; } --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85734): https://edk2.groups.io/g/devel/message/85734 Mute This Topic: https://groups.io/mt/88481085/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 1 12:14:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85732+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85732+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1642413549; cv=none; d=zohomail.com; s=zohoarc; b=F939CBgQ8MXw3qc3D/DqjLmqM5f3pQqKQWg25wtLzEpZBysAeslX0fYCr4JMdORnviKa+yFBTOLVg/DrPgjyOp/bQTA8VHLkm3Y+pvcwN703HhVkgyYBu1XiKEbqWwFDiaIk49NlCHVvrp39IAr5f5g4mJgHp5O9uE9uG2FRh0E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642413549; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=BVRSu7E4enSd9bB7yksUPMq9090Q2cXMClE1egkmR8s=; b=h9Qicw0oGkq17xImBENGJW2JlnCiS/AUJS43kbjdUw7hIBH8Kiqdp8SoEZ+IDneAmiz1PIfHM4m+jSPvTaFCQ32P/4OKq/vJEHxNKzPxzKrdGE2ATSAlpFfvuCiDL7xCGx6uiLDXoknCN49RMj1eFSl/k6ZieLWiN25v4zurnD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85732+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1642413549166293.0939327341513; Mon, 17 Jan 2022 01:59:09 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 5diSYY1788612xXICTGy5q03; Mon, 17 Jan 2022 01:59:08 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web08.9315.1642413548117853052 for ; Mon, 17 Jan 2022 01:59:08 -0800 X-Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-661-YmFjGU16MJCxiTwjbKEkzg-1; Mon, 17 Jan 2022 04:59:02 -0500 X-MC-Unique: YmFjGU16MJCxiTwjbKEkzg-1 X-Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5CFB41023F4D; Mon, 17 Jan 2022 09:59:00 +0000 (UTC) X-Received: from sirius.home.kraxel.org (unknown [10.39.192.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 00AFC7B9F2; Mon, 17 Jan 2022 09:58:54 +0000 (UTC) X-Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 4232E1800634; Mon, 17 Jan 2022 10:58:17 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Gerd Hoffmann , Jordan Justen , Min Xu , Jiewen Yao , Julien Grall , Tom Lendacky , Brijesh Singh , James Bottomley , Erdem Aktas , Pawel Polawski , Anthony Perard , Ard Biesheuvel Subject: [edk2-devel] [PATCH v2 5/5] OvmfPkg/QemuVideoDxe: parse edid blob, detect display resolution Date: Mon, 17 Jan 2022 10:58:17 +0100 Message-Id: <20220117095817.1964424-6-kraxel@redhat.com> In-Reply-To: <20220117095817.1964424-1-kraxel@redhat.com> References: <20220117095817.1964424-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com X-Gm-Message-State: eBcIGAxOdoS8gy8te7KZZDZLx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642413548; bh=gH0y4a1TMYHBv7omHeG7S6mTDNTGDU2zEJXfMDaaBD4=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=miFGfesJGDE2cMvrPm95hS7Q2yQy6Wnz4ShcuMFNavgc7BYgywYhvsszfpIkycxsVEm UNTAfiwwLdGYi2Q7RMYowdImHtv5hu25bK3XUNjSaJ9CymDOd+2HC02TEQiCHJ93lUV1w Zz8ZHMxqzBrJQLjtdwifTfcS2YWadz9dEL0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642413550099100001 Content-Type: text/plain; charset="utf-8" Check whenever an EDID blob is present. In case it is get the display resolution from it. Unless PcdVideoResolutionSource indicates the display resolution has been set already update PcdVideoHorizontalResolution and PcdVideoVerticalResolution accordingly. Also add the resolution to the mode list. This will make OVMF boot up with the display resolution configured by QEMU, which is 1024x768 by default. The resolution can be set using the xres and yres properties. Here is an example for FullHD: qemu-system-x86_64 -device VGA,xres=3D1920,yres=3D1080 Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3778 Ref: https://bugzilla.redhat.com/show_bug.cgi?id=3D1749250 Signed-off-by: Gerd Hoffmann Acked-by: Ard Biesheuvel --- OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 3 + OvmfPkg/QemuVideoDxe/Qemu.h | 2 + OvmfPkg/QemuVideoDxe/Initialize.c | 102 +++++++++++++++++++++++++- 3 files changed, 105 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/Q= emuVideoDxe.inf index fe8befd51d3c..43a6e07faa88 100644 --- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf +++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf @@ -63,4 +63,7 @@ [Protocols] =20 [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId + gUefiOvmfPkgTokenSpaceGuid.PcdVideoResolutionSource gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask + gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution + gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h index 1e6507f44caa..57341a0bbfc4 100644 --- a/OvmfPkg/QemuVideoDxe/Qemu.h +++ b/OvmfPkg/QemuVideoDxe/Qemu.h @@ -115,6 +115,8 @@ typedef struct { FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure; UINTN FrameBufferBltConfigureSize; UINT8 FrameBufferVramBarIndex; + + UINT8 Edid[128]; } QEMU_VIDEO_PRIVATE_DATA; =20 /// diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initi= alize.c index 8c5c9176ad21..2a3cbc65c32a 100644 --- a/OvmfPkg/QemuVideoDxe/Initialize.c +++ b/OvmfPkg/QemuVideoDxe/Initialize.c @@ -284,6 +284,88 @@ QemuVideoBochsAddMode ( Private->MaxMode++; } =20 +STATIC +VOID +QemuVideoBochsEdid ( + QEMU_VIDEO_PRIVATE_DATA *Private, + UINT32 *XRes, + UINT32 *YRes + ) +{ + EFI_STATUS Status; + + if (Private->Variant !=3D QEMU_VIDEO_BOCHS_MMIO) { + return; + } + + Status =3D Private->PciIo->Mem.Read ( + Private->PciIo, + EfiPciIoWidthUint8, + PCI_BAR_IDX2, + 0, + sizeof (Private->Edid), + Private->Edid + ); + if (Status !=3D EFI_SUCCESS) { + DEBUG (( + DEBUG_INFO, + "%a: mmio read failed\n", + __FUNCTION__ + )); + return; + } + + if ((Private->Edid[0] !=3D 0x00) || + (Private->Edid[1] !=3D 0xff)) + { + DEBUG (( + DEBUG_INFO, + "%a: magic check failed\n", + __FUNCTION__ + )); + return; + } + + DEBUG (( + DEBUG_INFO, + "%a: blob found (extensions: %d)\n", + __FUNCTION__, + Private->Edid[126] + )); + + if ((Private->Edid[54] =3D=3D 0x00) && + (Private->Edid[55] =3D=3D 0x00)) + { + DEBUG (( + DEBUG_INFO, + "%a: no detailed timing descriptor\n", + __FUNCTION__ + )); + return; + } + + *XRes =3D Private->Edid[56] | ((Private->Edid[58] & 0xf0) << 4); + *YRes =3D Private->Edid[59] | ((Private->Edid[61] & 0xf0) << 4); + DEBUG (( + DEBUG_INFO, + "%a: default resolution: %dx%d\n", + __FUNCTION__, + *XRes, + *YRes + )); + + if (PcdGet8 (PcdVideoResolutionSource) =3D=3D 0) { + Status =3D PcdSet32S (PcdVideoHorizontalResolution, *XRes); + ASSERT_RETURN_ERROR (Status); + Status =3D PcdSet32S (PcdVideoVerticalResolution, *YRes); + ASSERT_RETURN_ERROR (Status); + Status =3D PcdSet8S (PcdVideoResolutionSource, 2); + ASSERT_RETURN_ERROR (Status); + } + + // TODO: register edid as gEfiEdidDiscoveredProtocolGuid ? +} + EFI_STATUS QemuVideoBochsModeSetup ( QEMU_VIDEO_PRIVATE_DATA *Private, @@ -291,7 +373,7 @@ QemuVideoBochsModeSetup ( ) { UINT32 AvailableFbSize; - UINT32 Index; + UINT32 Index, XRes =3D 0, YRes =3D 0; =20 // // Fetch the available framebuffer size. @@ -374,13 +456,29 @@ QemuVideoBochsModeSetup ( // Setup Video Modes // Private->ModeData =3D AllocatePool ( - sizeof (Private->ModeData[0]) * QEMU_VIDEO_BOCHS_M= ODE_COUNT + sizeof (Private->ModeData[0]) * (QEMU_VIDEO_BOCHS_= MODE_COUNT+1) ); if (Private->ModeData =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } =20 + QemuVideoBochsEdid (Private, &XRes, &YRes); + if (XRes && YRes) { + QemuVideoBochsAddMode ( + Private, + AvailableFbSize, + XRes, + YRes + ); + } + for (Index =3D 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) { + if ((QemuVideoBochsModes[Index].Width =3D=3D XRes) && + (QemuVideoBochsModes[Index].Height =3D=3D YRes)) + { + continue; // duplicate with edid resolution + } + QemuVideoBochsAddMode ( Private, AvailableFbSize, --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85732): https://edk2.groups.io/g/devel/message/85732 Mute This Topic: https://groups.io/mt/88481083/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-