Re: [edk2] [PATCH v5] OvmfPkg/QemuVideoDxe: child handles should have open parent protocol BY_CHILD_CONTROLLER

Subject: Re: [edk2] [PATCH v5] OvmfPkg/QemuVideoDxe: child handles should have open parent protocol BY_CHILD_CONTROLLER

From: Jordan Justen <jljusten@gmail.com>

To: "edk2-devel@lists.sourceforge.net" <edk2-devel@lists.sourceforge.net>

Date: 2013-12-15 21:56:23

Committed in r14987. Thanks Chris!

(And Laszlo for the r-b.)

On Sun, Dec 15, 2013 at 8:55 AM, Chris Ruffin  wrote:
> The QemuVideoDxe driver creates child controller handles, so it is acting
> as a hybrid bus driver. The child handles should open the parent's bus
> protocol BY_CHILD_CONTROLLER to properly maintain the protocol usage count.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Chris Ruffin 
> ---
>
> Per review, just let the child PciIo protocol interface drop from the stack.
> It's unused and isn't needed to close the protocols.
>
>  OvmfPkg/QemuVideoDxe/Driver.c | 33 ++++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
>
> diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
> index 53718e1..b253ec7 100644
> --- a/OvmfPkg/QemuVideoDxe/Driver.c
> +++ b/OvmfPkg/QemuVideoDxe/Driver.c
> @@ -209,6 +209,7 @@ QemuVideoControllerDriverStart (
>    PCI_TYPE00                        Pci;
>    QEMU_VIDEO_CARD                   *Card;
>    EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *MmioDesc;
> +  EFI_PCI_IO_PROTOCOL               *ChildPciIo;
>
>    PciAttributesSaved = FALSE;
>    //
> @@ -419,6 +420,22 @@ QemuVideoControllerDriverStart (
>                      &Private->GraphicsOutput,
>                      NULL
>                      );
> +    if (EFI_ERROR (Status)) {
> +      goto Error;
> +    }
> +
> +    Status = gBS->OpenProtocol (
> +                  Controller,
> +                  &gEfiPciIoProtocolGuid,
> +                  (VOID **) &ChildPciIo,
> +                  This->DriverBindingHandle,
> +                  Private->Handle,
> +                  EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
> +                  );
> +
> +    if (EFI_ERROR (Status)) {
> +      goto Error;
> +    }
>    }
>
>  Error:
> @@ -440,7 +457,14 @@ Error:
>          // Close the PCI I/O Protocol
>          //
>          gBS->CloseProtocol (
> -              Private->Handle,
> +              Controller,
> +              &gEfiPciIoProtocolGuid,
> +              This->DriverBindingHandle,
> +              Controller
> +              );
> +
> +        gBS->CloseProtocol (
> +              Controller,
>                &gEfiPciIoProtocolGuid,
>                This->DriverBindingHandle,
>                Private->Handle
> @@ -533,6 +557,13 @@ QemuVideoControllerDriverStop (
>          Controller
>          );
>
> +  gBS->CloseProtocol (
> +        Controller,
> +        &gEfiPciIoProtocolGuid,
> +        This->DriverBindingHandle,
> +        Private->Handle
> +        );
> +
>    //
>    // Free our instance data
>    //
> --
> 1.8.4.msysgit.0
>
>
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel