According to the UEFI spec -- and to the edk2 header
"MdePkg/Include/Protocol/EdidOverride.h" too --,
EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID takes an (EFI_HANDLE*), and not an
EFI_HANDLE, as second parameter ("ChildHandle").

This is probably [*] a bug in the UEFI spec. Given that this CSM module
(VideoDxe) had been used for a long time on physical platforms before it
was moved to OvmfPkg, keep the current "ChildHandle" argument, just cast
it explicitly.

[*] The edk2 tree contains no other GetEdid() call, and also no GetEdid()
    implementation.

    The edk2-platforms tree contains two GetEdid() calls, at commit
    022c212167e0, in files
    - "Drivers/DisplayLink/DisplayLinkPkg/DisplayLinkGop/Edid.c",
    - "Drivers/OptionRomPkg/CirrusLogic5430Dxe/Edid.c".

    From these, the first passes an (EFI_HANDLE*) as "ChildHandle", the
    second passes an EFI_HANDLE. It's difficult to draw a conclusion. :/

No functional changes.

(I've also requested a non-normative (informative) clarification for the
UEFI spec: <https://mantis.uefi.org/mantis/view.php?id=2018>, in the
direction that matches this patch.)

Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Cc: David Woodhouse <dw...@infradead.org>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---

Notes:
    build-tested only

 OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c 
b/OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c
index 0640656dba14..995136adee27 100644
--- a/OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c
+++ b/OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c
@@ -1402,9 +1402,13 @@ BiosVideoCheckForVbe (
       goto Done;
     }
 
+    //
+    // Cast "ChildHandle" to (EFI_HANDLE*) in order to work around the spec bug
+    // in UEFI v2.8, reported as Mantis#2018.
+    //
     Status = EdidOverride->GetEdid (
                              EdidOverride,
-                             BiosVideoPrivate->Handle,
+                             (EFI_HANDLE *) BiosVideoPrivate->Handle,
                              &EdidAttributes,
                              &EdidOverrideDataSize,
                              (UINT8 **) &EdidOverrideDataBlock
-- 
2.19.1.3.g30247aa5d201



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#47412): https://edk2.groups.io/g/devel/message/47412
Mute This Topic: https://groups.io/mt/34180226/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to