[edk2-devel] [Patch] OvmfPkg/QemuVideoDxe: Remove dependency on OptionRomPkg

Michael D Kinney posted 1 patch 4 years, 11 months ago
Failed in applying to current master (apply log)
OvmfPkg/QemuVideoDxe/Driver.c                    | 15 +--------------
OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c | 15 ---------------
OvmfPkg/QemuVideoDxe/Qemu.h                      |  3 +--
OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf            |  6 +-----
4 files changed, 3 insertions(+), 36 deletions(-)
delete mode 100644 OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c
[edk2-devel] [Patch] OvmfPkg/QemuVideoDxe: Remove dependency on OptionRomPkg
Posted by Michael D Kinney 4 years, 11 months ago
Update the QemuVideoDxe driver to not depend on the
OptionRomPkg to support moving OptionRomPkg to the
edk2-platforms repository.

The only dependency on the OptionRomPkg is the use of
PcdDriverSupportedEfiVersion to set the version value in the
EFI Driver Supported EFI Version Protocol.  This protocol is
intended for use in drivers for add-in devices, which does not
apply to the QEMU integrated video controller.  Since this
protocol does not apply to QEMU environment, remove both the
PCD and the installation of the EFI Driver Supported EFI
Version Protocol.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 OvmfPkg/QemuVideoDxe/Driver.c                    | 15 +--------------
 OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c | 15 ---------------
 OvmfPkg/QemuVideoDxe/Qemu.h                      |  3 +--
 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf            |  6 +-----
 4 files changed, 3 insertions(+), 36 deletions(-)
 delete mode 100644 OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c

diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
index 45bcfb8fd1..e8a613ef33 100644
--- a/OvmfPkg/QemuVideoDxe/Driver.c
+++ b/OvmfPkg/QemuVideoDxe/Driver.c
@@ -2,7 +2,7 @@
   This driver is a sample implementation of the Graphics Output Protocol for
   the QEMU (Cirrus Logic 5446) video controller.
 
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -982,18 +982,5 @@ InitializeQemuVideo (
              );
   ASSERT_EFI_ERROR (Status);
 
-  //
-  // Install EFI Driver Supported EFI Version Protocol required for
-  // EFI drivers that are on PCI and other plug in cards.
-  //
-  gQemuVideoDriverSupportedEfiVersion.FirmwareVersion = PcdGet32 (PcdDriverSupportedEfiVersion);
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &ImageHandle,
-                  &gEfiDriverSupportedEfiVersionProtocolGuid,
-                  &gQemuVideoDriverSupportedEfiVersion,
-                  NULL
-                  );
-  ASSERT_EFI_ERROR (Status);
-
   return Status;
 }
diff --git a/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c b/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c
deleted file mode 100644
index c06f1d73cf..0000000000
--- a/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/** @file
-  Driver supported version protocol for the QEMU video driver.
-
-  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-#include "Qemu.h"
-
-EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL gQemuVideoDriverSupportedEfiVersion = {
-  sizeof (EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL), // Size of Protocol structure.
-  0                                                   // Version number to be filled at start up.
-};
-
diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h
index 2b64f1e2b0..87c933935f 100644
--- a/OvmfPkg/QemuVideoDxe/Qemu.h
+++ b/OvmfPkg/QemuVideoDxe/Qemu.h
@@ -1,7 +1,7 @@
 /** @file
   QEMU Video Controller Driver
 
-  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -156,7 +156,6 @@ extern QEMU_VIDEO_BOCHS_MODES                     QemuVideoBochsModes[];
 extern EFI_DRIVER_BINDING_PROTOCOL                gQemuVideoDriverBinding;
 extern EFI_COMPONENT_NAME_PROTOCOL                gQemuVideoComponentName;
 extern EFI_COMPONENT_NAME2_PROTOCOL               gQemuVideoComponentName2;
-extern EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL  gQemuVideoDriverSupportedEfiVersion;
 
 //
 // Io Registers defined by VGA
diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
index 4e29b0c20f..fe8befd51d 100644
--- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
@@ -2,7 +2,7 @@
 #  This driver is a sample implementation of the Graphics Output Protocol for
 #  the QEMU (Cirrus Logic 5446) video controller.
 #
-#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -29,7 +29,6 @@ [Defines]
 [Sources.common]
   ComponentName.c
   Driver.c
-  DriverSupportedEfiVersion.c
   Gop.c
   Initialize.c
   Qemu.h
@@ -41,7 +40,6 @@ [Sources.Ia32, Sources.X64]
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
-  OptionRomPkg/OptionRomPkg.dec
   OvmfPkg/OvmfPkg.dec
 
 [LibraryClasses]
@@ -59,12 +57,10 @@ [LibraryClasses]
   UefiLib
 
 [Protocols]
-  gEfiDriverSupportedEfiVersionProtocolGuid     # PROTOCOL ALWAYS_PRODUCED
   gEfiGraphicsOutputProtocolGuid                # PROTOCOL BY_START
   gEfiDevicePathProtocolGuid                    # PROTOCOL BY_START
   gEfiPciIoProtocolGuid                         # PROTOCOL TO_START
 
 [Pcd]
-  gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
   gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask
-- 
2.21.0.windows.1


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

View/Reply Online (#40373): https://edk2.groups.io/g/devel/message/40373
Mute This Topic: https://groups.io/mt/31566345/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch] OvmfPkg/QemuVideoDxe: Remove dependency on OptionRomPkg
Posted by Laszlo Ersek 4 years, 11 months ago
Hello Mike,

On 05/09/19 19:39, Michael D Kinney wrote:
> Update the QemuVideoDxe driver to not depend on the
> OptionRomPkg to support moving OptionRomPkg to the
> edk2-platforms repository.
> 
> The only dependency on the OptionRomPkg is the use of
> PcdDriverSupportedEfiVersion to set the version value in the
> EFI Driver Supported EFI Version Protocol.  This protocol is
> intended for use in drivers for add-in devices, which does not
> apply to the QEMU integrated video controller.  Since this
> protocol does not apply to QEMU environment, remove both the
> PCD and the installation of the EFI Driver Supported EFI
> Version Protocol.
> 
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
>  OvmfPkg/QemuVideoDxe/Driver.c                    | 15 +--------------
>  OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c | 15 ---------------
>  OvmfPkg/QemuVideoDxe/Qemu.h                      |  3 +--
>  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf            |  6 +-----
>  4 files changed, 3 insertions(+), 36 deletions(-)
>  delete mode 100644 OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c

Thanks for the patch!

The code is ready to go in. I'd like to request one update with the
commit message. Please replace the following sentence in the middle:

    This protocol is intended for use in drivers for add-in devices,
    which does not apply to the QEMU integrated video controller.

with:

    Quoting the UEFI-2.8 spec, "This protocol is required for EFI
    drivers that are *on* PCI and other plug in cards" (emphasis ours).
    However, QemuVideoDxe is always part of the OVMF platform firmware,
    and is never read by PciBusDxe from the PCI ROM BAR of QEMU's
    emulated graphics cards.

(I'm asking for this update because I don't consider the QEMU GPUs in
question integrated devices (such as the IGD is, on physical boards).
The QEMU GPUs may not be hotpluggable, yes, but I think they still
qualify as discrete (cold-pluggable) PCI devices. For example, OVMF can
be run on "headless" (serial port only) QEMU VMs too.)

With that update:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thank you very much!
Laszlo

> 
> diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
> index 45bcfb8fd1..e8a613ef33 100644
> --- a/OvmfPkg/QemuVideoDxe/Driver.c
> +++ b/OvmfPkg/QemuVideoDxe/Driver.c
> @@ -2,7 +2,7 @@
>    This driver is a sample implementation of the Graphics Output Protocol for
>    the QEMU (Cirrus Logic 5446) video controller.
>  
> -  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
>  
>    SPDX-License-Identifier: BSD-2-Clause-Patent
>  
> @@ -982,18 +982,5 @@ InitializeQemuVideo (
>               );
>    ASSERT_EFI_ERROR (Status);
>  
> -  //
> -  // Install EFI Driver Supported EFI Version Protocol required for
> -  // EFI drivers that are on PCI and other plug in cards.
> -  //
> -  gQemuVideoDriverSupportedEfiVersion.FirmwareVersion = PcdGet32 (PcdDriverSupportedEfiVersion);
> -  Status = gBS->InstallMultipleProtocolInterfaces (
> -                  &ImageHandle,
> -                  &gEfiDriverSupportedEfiVersionProtocolGuid,
> -                  &gQemuVideoDriverSupportedEfiVersion,
> -                  NULL
> -                  );
> -  ASSERT_EFI_ERROR (Status);
> -
>    return Status;
>  }
> diff --git a/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c b/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c
> deleted file mode 100644
> index c06f1d73cf..0000000000
> --- a/OvmfPkg/QemuVideoDxe/DriverSupportedEfiVersion.c
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -/** @file
> -  Driver supported version protocol for the QEMU video driver.
> -
> -  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -#include "Qemu.h"
> -
> -EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL gQemuVideoDriverSupportedEfiVersion = {
> -  sizeof (EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL), // Size of Protocol structure.
> -  0                                                   // Version number to be filled at start up.
> -};
> -
> diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h
> index 2b64f1e2b0..87c933935f 100644
> --- a/OvmfPkg/QemuVideoDxe/Qemu.h
> +++ b/OvmfPkg/QemuVideoDxe/Qemu.h
> @@ -1,7 +1,7 @@
>  /** @file
>    QEMU Video Controller Driver
>  
> -  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
>    SPDX-License-Identifier: BSD-2-Clause-Patent
>  
>  **/
> @@ -156,7 +156,6 @@ extern QEMU_VIDEO_BOCHS_MODES                     QemuVideoBochsModes[];
>  extern EFI_DRIVER_BINDING_PROTOCOL                gQemuVideoDriverBinding;
>  extern EFI_COMPONENT_NAME_PROTOCOL                gQemuVideoComponentName;
>  extern EFI_COMPONENT_NAME2_PROTOCOL               gQemuVideoComponentName2;
> -extern EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL  gQemuVideoDriverSupportedEfiVersion;
>  
>  //
>  // Io Registers defined by VGA
> diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> index 4e29b0c20f..fe8befd51d 100644
> --- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> +++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> @@ -2,7 +2,7 @@
>  #  This driver is a sample implementation of the Graphics Output Protocol for
>  #  the QEMU (Cirrus Logic 5446) video controller.
>  #
> -#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -29,7 +29,6 @@ [Defines]
>  [Sources.common]
>    ComponentName.c
>    Driver.c
> -  DriverSupportedEfiVersion.c
>    Gop.c
>    Initialize.c
>    Qemu.h
> @@ -41,7 +40,6 @@ [Sources.Ia32, Sources.X64]
>  [Packages]
>    MdePkg/MdePkg.dec
>    MdeModulePkg/MdeModulePkg.dec
> -  OptionRomPkg/OptionRomPkg.dec
>    OvmfPkg/OvmfPkg.dec
>  
>  [LibraryClasses]
> @@ -59,12 +57,10 @@ [LibraryClasses]
>    UefiLib
>  
>  [Protocols]
> -  gEfiDriverSupportedEfiVersionProtocolGuid     # PROTOCOL ALWAYS_PRODUCED
>    gEfiGraphicsOutputProtocolGuid                # PROTOCOL BY_START
>    gEfiDevicePathProtocolGuid                    # PROTOCOL BY_START
>    gEfiPciIoProtocolGuid                         # PROTOCOL TO_START
>  
>  [Pcd]
> -  gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
>    gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask
> 


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

View/Reply Online (#40381): https://edk2.groups.io/g/devel/message/40381
Mute This Topic: https://groups.io/mt/31566345/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-