public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Jordan Justen <jordan.l.justen@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
	edk2-devel-01 <edk2-devel@lists.01.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Steven Shi <steven.shi@intel.com>
Subject: Re: [PATCH] OvmfPkg: remove BLOCK_MMIO_PROTOCOL and BlockMmioToBlockIoDxe
Date: Tue, 10 Apr 2018 11:26:45 -0700	[thread overview]
Message-ID: <152338480498.26190.3275925878177025934@jljusten-skl> (raw)
In-Reply-To: <20180410180950.16343-1-lersek@redhat.com>

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

On 2018-04-10 11:09:50, Laszlo Ersek wrote:
> BLOCK_MMIO_PROTOCOL and BlockMmioToBlockIoDxe were introduced to OvmfPkg
> in March 2010, in adjacent commits b0f5144676fa and efd82c5794ec. In the
> past eight years, no driver or application seems to have materialized that
> produced BLOCK_MMIO_PROTOCOL instances. Meanwhile the UEFI spec has
> developed the EFI_RAM_DISK_PROTOCOL, which edk2 implements (and OVMF
> includes) as RamDiskDxe.
> 
> Rather than fixing issues in the unused BlockMmioToBlockIoDxe driver,
> remove the driver, together with the BLOCK_MMIO_PROTOCOL definition that
> now becomes unused too.
> 
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Steven Shi <steven.shi@intel.com>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=926
> Reported-by: Steven Shi <steven.shi@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> ---
> 
> Notes:
>     Repo:   https://github.com/lersek/edk2.git
>     Branch: drop_blkmmio
> 
>  OvmfPkg/OvmfPkg.dec                           |   1 -
>  OvmfPkg/OvmfPkgIa32.dsc                       |   1 -
>  OvmfPkg/OvmfPkgIa32X64.dsc                    |   1 -
>  OvmfPkg/OvmfPkgX64.dsc                        |   1 -
>  OvmfPkg/OvmfPkgIa32.fdf                       |   1 -
>  OvmfPkg/OvmfPkgIa32X64.fdf                    |   1 -
>  OvmfPkg/OvmfPkgX64.fdf                        |   1 -
>  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf     |  56 ---
>  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.h       | 346 -------------
>  OvmfPkg/Include/Protocol/BlockMmio.h          |  50 --
>  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.c       | 528 --------------------
>  OvmfPkg/BlockMmioToBlockIoDxe/ComponentName.c | 162 ------
>  12 files changed, 1149 deletions(-)
> 
> diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
> index 27bcfc141e5a..c01a2ca7219a 100644
> --- a/OvmfPkg/OvmfPkg.dec
> +++ b/OvmfPkg/OvmfPkg.dec
> @@ -66,7 +66,6 @@ [Guids]
>  
>  [Protocols]
>    gVirtioDeviceProtocolGuid           = {0xfa920010, 0x6785, 0x4941, {0xb6, 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}}
> -  gBlockMmioProtocolGuid              = {0x6b558ce3, 0x69e5, 0x4c67, {0xa6, 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84}}
>    gXenBusProtocolGuid                 = {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, 0xac, 0x6f, 0x7d, 0x65, 0xe6}}
>    gXenIoProtocolGuid                  = {0x6efac84f, 0x0ab0, 0x4747, {0x81, 0xbe, 0x85, 0x55, 0x62, 0x59, 0x04, 0x49}}
>    gIoMmuAbsentProtocolGuid            = {0xf8775d50, 0x8abd, 0x4adf, {0x92, 0xac, 0x85, 0x3e, 0x51, 0xf6, 0xc8, 0xdc}}
> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
> index c9eb248506c5..2d6c4c4615b6 100644
> --- a/OvmfPkg/OvmfPkgIa32.dsc
> +++ b/OvmfPkg/OvmfPkgIa32.dsc
> @@ -698,7 +698,6 @@ [Components]
>        NULL|IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
>  !endif
>    }
> -  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>    OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>    OvmfPkg/Virtio10Dxe/Virtio10.inf
>    OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
> index 17aef2d4830f..43158c5f0627 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
> @@ -707,7 +707,6 @@ [Components.X64]
>        NULL|IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
>  !endif
>    }
> -  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>    OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>    OvmfPkg/Virtio10Dxe/Virtio10.inf
>    OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index 8af763ea9e9e..d1fdf7c307c2 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -705,7 +705,6 @@ [Components]
>        NULL|IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
>  !endif
>    }
> -  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>    OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>    OvmfPkg/Virtio10Dxe/Virtio10.inf
>    OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
> index 938bf7195ec4..0427ded49239 100644
> --- a/OvmfPkg/OvmfPkgIa32.fdf
> +++ b/OvmfPkg/OvmfPkgIa32.fdf
> @@ -225,7 +225,6 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Universal/Metronome/Metronome.inf
>  INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
>  
> -INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>  INF  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>  INF  OvmfPkg/Virtio10Dxe/Virtio10.inf
>  INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
> index 246e1dc8278a..6df47f48cd2c 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.fdf
> +++ b/OvmfPkg/OvmfPkgIa32X64.fdf
> @@ -226,7 +226,6 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Universal/Metronome/Metronome.inf
>  INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
>  
> -INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>  INF  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>  INF  OvmfPkg/Virtio10Dxe/Virtio10.inf
>  INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
> index 1a46104fc63d..2e2a1749b5d2 100644
> --- a/OvmfPkg/OvmfPkgX64.fdf
> +++ b/OvmfPkg/OvmfPkgX64.fdf
> @@ -226,7 +226,6 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Universal/Metronome/Metronome.inf
>  INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
>  
> -INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
>  INF  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
>  INF  OvmfPkg/Virtio10Dxe/Virtio10.inf
>  INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
> diff --git a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf b/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
> deleted file mode 100644
> index e2f5bb8a6888..000000000000
> --- a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -## @file
> -# The driver wrappers BlockMmio protocol instances to produce
> -# Block I/O Protocol instances.
> -#
> -# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution. The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#
> -##
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = BlockMmioToBlockIoDxe
> -  FILE_GUID                      = 33cb97af-6c33-4c42-986b-07581fa366d4
> -  MODULE_TYPE                    = UEFI_DRIVER
> -  VERSION_STRING                 = 1.0
> -  ENTRY_POINT                    = BlockMmioToBlockIoEntryPoint
> -
> -#
> -# The following information is for reference only and not required by the build tools.
> -#
> -#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
> -#
> -
> -[Sources]
> -  BlockIo.c
> -  BlockIo.h
> -  ComponentName.c
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  OvmfPkg/OvmfPkg.dec
> -
> -[LibraryClasses]
> -  BaseLib
> -  BaseMemoryLib
> -  DebugLib
> -  DevicePathLib
> -  MemoryAllocationLib
> -  UefiBootServicesTableLib
> -  UefiDriverEntryPoint
> -  UefiLib
> -
> -[Protocols]
> -  gBlockMmioProtocolGuid                        ## TO_START
> -  gEfiCpuIo2ProtocolGuid                        ## TO_START
> -  gEfiDevicePathProtocolGuid                    ## TO_START
> -  gEfiBlockIoProtocolGuid                       ## BY_START
> -
> diff --git a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.h b/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.h
> deleted file mode 100644
> index d33f56448ac2..000000000000
> --- a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.h
> +++ /dev/null
> @@ -1,346 +0,0 @@
> -/** @file
> -  Definitions of functions for Driver Binding Protocol and Block I/O Protocol,
> -  and other internal definitions.
> -
> -  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#ifndef _EFI_BLOCK_MMIO_TO_BLOCK_IO_H_
> -#define _EFI_BLOCK_MMIO_TO_BLOCK_IO_H_
> -
> -#include <Uefi.h>
> -#include <Protocol/BlockMmio.h>
> -#include <Protocol/ComponentName.h>
> -#include <Protocol/ComponentName2.h>
> -#include <Protocol/CpuIo2.h>
> -#include <Protocol/DevicePath.h>
> -#include <Protocol/DriverBinding.h>
> -#include <Library/BaseLib.h>
> -#include <Library/DebugLib.h>
> -#include <Library/MemoryAllocationLib.h>
> -#include <Library/UefiBootServicesTableLib.h>
> -#include <Library/UefiLib.h>
> -
> -#define  BLOCK_MMIO_TO_BLOCK_IO_SIGNATURE    SIGNATURE_32 ('B', 'M', 'I', 'O')
> -
> -#define PRIVATE_FROM_BLOCK_IO(a) \
> -        CR (a, BLOCK_MMIO_TO_BLOCK_IO_DEVICE, BlockIo, BLOCK_MMIO_TO_BLOCK_IO_SIGNATURE)
> -
> -extern EFI_COMPONENT_NAME_PROTOCOL   gBlockMmioToBlockIoComponentName;
> -extern EFI_COMPONENT_NAME2_PROTOCOL  gBlockMmioToBlockIoComponentName2;
> -
> -typedef struct {
> -  UINT32                    Signature;
> -  EFI_HANDLE                Controller;
> -  BLOCK_MMIO_PROTOCOL       *BlockMmio;
> -  EFI_CPU_IO2_PROTOCOL      *CpuIo;
> -  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
> -  EFI_BLOCK_IO_PROTOCOL     BlockIo;
> -} BLOCK_MMIO_TO_BLOCK_IO_DEVICE;
> -
> -//
> -// Functions for Driver Binding Protocol
> -//
> -
> -/**
> -  Check whether the controller is a supported.
> -
> -  @param  This                   The driver binding protocol.
> -  @param  Controller             The controller handle to check.
> -  @param  RemainingDevicePath    The remaining device path.
> -
> -  @retval EFI_SUCCESS            The driver supports this controller.
> -  @retval other                  This device isn't supported.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingSupported (
> -  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> -  IN EFI_HANDLE                   Controller,
> -  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
> -  );
> -
> -/**
> -  Starts the BlockIo device with this driver.
> -
> -  This function consumes Block MMIO Portocol and
> -  installs Block I/O Protocol.
> -
> -  @param  This                  The driver binding protocol.
> -  @param  Controller            The Block MMIO device to start on
> -  @param  RemainingDevicePath   The remaining device path.
> -
> -  @retval EFI_SUCCESS           This driver supports this device.
> -  @retval EFI_UNSUPPORTED       This driver does not support this device.
> -  @retval EFI_DEVICE_ERROR      This driver cannot be started due to device Error.
> -  @retval EFI_OUT_OF_RESOURCES  Can't allocate memory resources.
> -  @retval EFI_ALREADY_STARTED   This driver has been started.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingStart (
> -  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> -  IN EFI_HANDLE                   Controller,
> -  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
> -  );
> -
> -/**
> -  Stop controlling the device.
> -
> -  @param  This                   The driver binding
> -  @param  Controller             The device controller controlled by the driver.
> -  @param  NumberOfChildren       The number of children of this device
> -  @param  ChildHandleBuffer      The buffer of children handle.
> -
> -  @retval EFI_SUCCESS            The driver stopped from controlling the device.
> -  @retval EFI_DEVICE_ERROR       The device could not be stopped due to a device error.
> -  @retval EFI_UNSUPPORTED        Block I/O Protocol is not installed on Controller.
> -  @retval Others                 Failed to stop the driver
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingStop (
> -  IN  EFI_DRIVER_BINDING_PROTOCOL *This,
> -  IN  EFI_HANDLE                  Controller,
> -  IN  UINTN                       NumberOfChildren,
> -  IN  EFI_HANDLE                  *ChildHandleBuffer
> -  );
> -
> -//
> -// Functions for Block I/O Protocol
> -//
> -
> -/**
> -  Reset the block device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.Reset(). 
> -  It resets the block device hardware.
> -  ExtendedVerification is ignored in this implementation.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  ExtendedVerification   Indicates that the driver may perform a more exhaustive
> -                                 verification operation of the device during reset.
> -
> -  @retval EFI_SUCCESS            The block device was reset.
> -  @retval EFI_DEVICE_ERROR       The block device is not functioning correctly and could not be reset.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoReset (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN BOOLEAN                  ExtendedVerification
> -  );
> -
> -/**
> -  Reads the requested number of blocks from the device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.ReadBlocks(). 
> -  It reads the requested number of blocks from the device.
> -  All the blocks are read, or an error is returned.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  MediaId                The media ID that the read request is for.
> -  @param  Lba                    The starting logical block address to read from on the device.
> -  @param  BufferSize             The size of the Buffer in bytes.
> -                                 This must be a multiple of the intrinsic block size of the device.
> -  @param  Buffer                 A pointer to the destination buffer for the data. The caller is
> -                                 responsible for either having implicit or explicit ownership of the buffer.
> -
> -  @retval EFI_SUCCESS            The data was read correctly from the device.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to perform the read operation.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -  @retval EFI_MEDIA_CHANGED      The MediaId is not for the current media.
> -  @retval EFI_BAD_BUFFER_SIZE    The BufferSize parameter is not a multiple of the intrinsic block size of the device.
> -  @retval EFI_INVALID_PARAMETER  The read request contains LBAs that are not valid,
> -                                 or the buffer is not on proper alignment.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoReadBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN UINT32                   MediaId,
> -  IN EFI_LBA                  Lba,
> -  IN UINTN                    BufferSize,
> -  OUT VOID                    *Buffer
> -  );
> -
> -/**
> -  Writes a specified number of blocks to the device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.WriteBlocks(). 
> -  It writes a specified number of blocks to the device.
> -  All blocks are written, or an error is returned.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  MediaId                The media ID that the write request is for.
> -  @param  Lba                    The starting logical block address to be written.
> -  @param  BufferSize             The size of the Buffer in bytes.
> -                                 This must be a multiple of the intrinsic block size of the device.
> -  @param  Buffer                 Pointer to the source buffer for the data.
> -
> -  @retval EFI_SUCCESS            The data were written correctly to the device.
> -  @retval EFI_WRITE_PROTECTED    The device cannot be written to.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -  @retval EFI_MEDIA_CHANGED      The MediaId is not for the current media.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to perform the write operation.
> -  @retval EFI_BAD_BUFFER_SIZE    The BufferSize parameter is not a multiple of the intrinsic
> -                                 block size of the device.
> -  @retval EFI_INVALID_PARAMETER  The write request contains LBAs that are not valid,
> -                                 or the buffer is not on proper alignment.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoWriteBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN UINT32                   MediaId,
> -  IN EFI_LBA                  Lba,
> -  IN UINTN                    BufferSize,
> -  IN VOID                     *Buffer
> -  );
> -
> -/**
> -  Flushes all modified data to a physical block device.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -
> -  @retval EFI_SUCCESS            All outstanding data were written correctly to the device.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to write data.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoFlushBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL  *This
> -  );
> -
> -//
> -// EFI Component Name Functions
> -//
> -
> -/**
> -  Retrieves a Unicode string that is the user readable name of the driver.
> -
> -  This function retrieves the user readable name of a driver in the form of a
> -  Unicode string. If the driver specified by This has a user readable name in
> -  the language specified by Language, then a pointer to the driver name is
> -  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
> -  by This does not support the language specified by Language,
> -  then EFI_UNSUPPORTED is returned.
> -
> -  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
> -                                EFI_COMPONENT_NAME_PROTOCOL instance.
> -  @param  Language              A pointer to a Null-terminated ASCII string
> -                                array indicating the language. This is the
> -                                language of the driver name that the caller is
> -                                requesting, and it must match one of the
> -                                languages specified in SupportedLanguages. The
> -                                number of languages supported by a driver is up
> -                                to the driver writer. Language is specified
> -                                in RFC 4646 or ISO 639-2 language code format.
> -  @param  DriverName            A pointer to the Unicode string to return.
> -                                This Unicode string is the name of the
> -                                driver specified by This in the language
> -                                specified by Language.
> -
> -  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
> -                                This and the language specified by Language was
> -                                returned in DriverName.
> -  @retval EFI_INVALID_PARAMETER Language is NULL.
> -  @retval EFI_INVALID_PARAMETER DriverName is NULL.
> -  @retval EFI_UNSUPPORTED       The driver specified by This does not support
> -                                the language specified by Language.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockMmioToBlockIoGetDriverName (
> -  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
> -  IN  CHAR8                        *Language,
> -  OUT CHAR16                       **DriverName
> -  );
> -
> -
> -/**
> -  Retrieves a Unicode string that is the user readable name of the controller
> -  that is being managed by a driver.
> -
> -  This function retrieves the user readable name of the controller specified by
> -  ControllerHandle and ChildHandle in the form of a Unicode string. If the
> -  driver specified by This has a user readable name in the language specified by
> -  Language, then a pointer to the controller name is returned in ControllerName,
> -  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
> -  managing the controller specified by ControllerHandle and ChildHandle,
> -  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
> -  support the language specified by Language, then EFI_UNSUPPORTED is returned.
> -
> -  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
> -                                EFI_COMPONENT_NAME_PROTOCOL instance.
> -  @param  ControllerHandle      The handle of a controller that the driver
> -                                specified by This is managing.  This handle
> -                                specifies the controller whose name is to be
> -                                returned.
> -  @param  ChildHandle           The handle of the child controller to retrieve
> -                                the name of.  This is an optional parameter that
> -                                may be NULL.  It will be NULL for device
> -                                drivers.  It will also be NULL for a bus drivers
> -                                that wish to retrieve the name of the bus
> -                                controller.  It will not be NULL for a bus
> -                                driver that wishes to retrieve the name of a
> -                                child controller.
> -  @param  Language              A pointer to a Null-terminated ASCII string
> -                                array indicating the language.  This is the
> -                                language of the driver name that the caller is
> -                                requesting, and it must match one of the
> -                                languages specified in SupportedLanguages. The
> -                                number of languages supported by a driver is up
> -                                to the driver writer. Language is specified in
> -                                RFC 4646 or ISO 639-2 language code format.
> -  @param  ControllerName        A pointer to the Unicode string to return.
> -                                This Unicode string is the name of the
> -                                controller specified by ControllerHandle and
> -                                ChildHandle in the language specified by
> -                                Language from the point of view of the driver
> -                                specified by This.
> -
> -  @retval EFI_SUCCESS           The Unicode string for the user readable name in
> -                                the language specified by Language for the
> -                                driver specified by This was returned in
> -                                DriverName.
> -  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
> -  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
> -                                EFI_HANDLE.
> -  @retval EFI_INVALID_PARAMETER Language is NULL.
> -  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
> -  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
> -                                managing the controller specified by
> -                                ControllerHandle and ChildHandle.
> -  @retval EFI_UNSUPPORTED       The driver specified by This does not support
> -                                the language specified by Language.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockMmioToBlockIoGetControllerName (
> -  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
> -  IN  EFI_HANDLE                                      ControllerHandle,
> -  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
> -  IN  CHAR8                                           *Language,
> -  OUT CHAR16                                          **ControllerName
> -  );
> -
> -#endif
> diff --git a/OvmfPkg/Include/Protocol/BlockMmio.h b/OvmfPkg/Include/Protocol/BlockMmio.h
> deleted file mode 100644
> index 6edd23ca1f0e..000000000000
> --- a/OvmfPkg/Include/Protocol/BlockMmio.h
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -/** @file
> -  Block IO (memory mapped)
> -
> -  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
> -  This program and the accompanying materials                          
> -  are licensed and made available under the terms and conditions of the BSD License         
> -  which accompanies this distribution.  The full text of the license may be found at        
> -  http://opensource.org/licenses/bsd-license.php                                            
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
> -
> -**/
> -
> -#ifndef __BLOCK_MMIO_H__
> -#define __BLOCK_MMIO_H__
> -
> -#include <Protocol/BlockIo.h>
> -
> -#define BLOCK_MMIO_PROTOCOL_GUID \
> -  { \
> -    0x6b558ce3, 0x69e5, 0x4c67, {0xa6, 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84 } \
> -  }
> -
> -typedef struct _BLOCK_MMIO_PROTOCOL  BLOCK_MMIO_PROTOCOL;
> -
> -
> -///
> -///  This protocol provides control over block devices.
> -///
> -struct _BLOCK_MMIO_PROTOCOL {
> -  ///
> -  /// The revision to which the block IO interface adheres. All future
> -  /// revisions must be backwards compatible. If a future version is not
> -  /// back wards compatible, it is not the same GUID.
> -  ///
> -  UINT64                Revision;
> -  ///
> -  /// Pointer to the EFI_BLOCK_IO_MEDIA data for this device.
> -  ///
> -  EFI_BLOCK_IO_MEDIA    *Media;
> -
> -  EFI_PHYSICAL_ADDRESS  BaseAddress;
> -
> -};
> -
> -extern EFI_GUID gBlockMmioProtocolGuid;
> -
> -#endif
> -
> diff --git a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.c b/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.c
> deleted file mode 100644
> index 939792f2ada2..000000000000
> --- a/OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.c
> +++ /dev/null
> @@ -1,528 +0,0 @@
> -/** @file
> -  The driver wrappers BlockMmio protocol instances to produce
> -  Block I/O Protocol instances.
> -
> -  Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -  
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include "BlockIo.h"
> -
> -EFI_DRIVER_BINDING_PROTOCOL gBlockIoDriverBinding = {
> -  BlockIoDriverBindingSupported,
> -  BlockIoDriverBindingStart,
> -  BlockIoDriverBindingStop,
> -  0x11,
> -  NULL,
> -  NULL
> -};
> -
> -/**
> -  Reset the block device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.Reset(). 
> -  It resets the block device hardware.
> -  ExtendedVerification is ignored in this implementation.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  ExtendedVerification   Indicates that the driver may perform a more exhaustive
> -                                 verification operation of the device during reset.
> -
> -  @retval EFI_SUCCESS            The block device was reset.
> -  @retval EFI_DEVICE_ERROR       The block device is not functioning correctly and could not be reset.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoReset (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN BOOLEAN                  ExtendedVerification
> -  )
> -{
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Reads the requested number of blocks from the device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.ReadBlocks(). 
> -  It reads the requested number of blocks from the device.
> -  All the blocks are read, or an error is returned.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  ReadData               If TRUE then read data.  If FALSE then write data.
> -  @param  MediaId                The media ID that the read request is for.
> -  @param  Lba                    The starting logical block address to read from on the device.
> -  @param  BufferSize             The size of the Buffer in bytes.
> -                                 This must be a multiple of the intrinsic block size of the device.
> -  @param  Buffer                 A pointer to the destination buffer for the data. The caller is
> -                                 responsible for either having implicit or explicit ownership of the buffer.
> -
> -  @retval EFI_SUCCESS            The data was read correctly from the device.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to perform the read operation.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -  @retval EFI_MEDIA_CHANGED      The MediaId is not for the current media.
> -  @retval EFI_BAD_BUFFER_SIZE    The BufferSize parameter is not a multiple of the intrinsic block size of the device.
> -  @retval EFI_INVALID_PARAMETER  The read request contains LBAs that are not valid,
> -                                 or the buffer is not on proper alignment.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -ReadOrWriteBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN BOOLEAN                  ReadData,
> -  IN UINT32                   MediaId,
> -  IN EFI_LBA                  Lba,
> -  IN UINTN                    BufferSize,
> -  OUT VOID                    *Buffer
> -  )
> -{
> -  EFI_STATUS                    Status;
> -  BLOCK_MMIO_TO_BLOCK_IO_DEVICE *Private;
> -  UINTN                         TotalBlock;
> -  EFI_BLOCK_IO_MEDIA            *Media;
> -  UINT64                        Address;
> -  UINTN                         Count;
> -  EFI_CPU_IO_PROTOCOL_IO_MEM    CpuAccessFunction;
> -
> -  //
> -  // First, validate the parameters
> -  //
> -  if ((Buffer == NULL) || (BufferSize == 0)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  //
> -  // Get private data structure
> -  //
> -  Private = PRIVATE_FROM_BLOCK_IO (This);
> -  Media   = Private->BlockMmio->Media;
> -
> -  //
> -  // BufferSize must be a multiple of the intrinsic block size of the device.
> -  //
> -  if (ModU64x32 (BufferSize, Media->BlockSize) != 0) {
> -    return EFI_BAD_BUFFER_SIZE;
> -  }
> -
> -  TotalBlock = (UINTN) DivU64x32 (BufferSize, Media->BlockSize);
> -
> -  //
> -  // Make sure the range to read is valid.
> -  //
> -  if (Lba + TotalBlock - 1 > Media->LastBlock) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (!(Media->MediaPresent)) {
> -    return EFI_NO_MEDIA;
> -  }
> -
> -  if (MediaId != Media->MediaId) {
> -    return EFI_MEDIA_CHANGED;
> -  }
> -
> -  Address = Private->BlockMmio->BaseAddress;
> -  Address += MultU64x32 (Lba, Media->BlockSize);
> -
> -  Count = BufferSize >> 3;
> -
> -  if (ReadData) {
> -    CpuAccessFunction = Private->CpuIo->Mem.Read;
> -  } else {
> -    CpuAccessFunction = Private->CpuIo->Mem.Write;
> -  }
> -
> -  Status = (CpuAccessFunction) (
> -             Private->CpuIo,
> -             EfiCpuIoWidthUint64,
> -             Address,
> -             Count,
> -             Buffer
> -             );
> -
> -  return Status;
> -}
> -
> -
> -/**
> -  Reads the requested number of blocks from the device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.ReadBlocks(). 
> -  It reads the requested number of blocks from the device.
> -  All the blocks are read, or an error is returned.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  MediaId                The media ID that the read request is for.
> -  @param  Lba                    The starting logical block address to read from on the device.
> -  @param  BufferSize             The size of the Buffer in bytes.
> -                                 This must be a multiple of the intrinsic block size of the device.
> -  @param  Buffer                 A pointer to the destination buffer for the data. The caller is
> -                                 responsible for either having implicit or explicit ownership of the buffer.
> -
> -  @retval EFI_SUCCESS            The data was read correctly from the device.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to perform the read operation.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -  @retval EFI_MEDIA_CHANGED      The MediaId is not for the current media.
> -  @retval EFI_BAD_BUFFER_SIZE    The BufferSize parameter is not a multiple of the intrinsic block size of the device.
> -  @retval EFI_INVALID_PARAMETER  The read request contains LBAs that are not valid,
> -                                 or the buffer is not on proper alignment.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoReadBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN UINT32                   MediaId,
> -  IN EFI_LBA                  Lba,
> -  IN UINTN                    BufferSize,
> -  OUT VOID                    *Buffer
> -  )
> -{
> -  DEBUG ((EFI_D_INFO, "BlockIo (MMIO) ReadBlocks: lba=0x%Lx, size=0x%Lx\n",
> -    Lba, (UINT64)BufferSize));
> -  return ReadOrWriteBlocks (
> -    This,
> -    TRUE,
> -    MediaId,
> -    Lba,
> -    BufferSize,
> -    Buffer
> -    );
> -}
> -
> -
> -/**
> -  Writes a specified number of blocks to the device.
> -
> -  This function implements EFI_BLOCK_IO_PROTOCOL.WriteBlocks(). 
> -  It writes a specified number of blocks to the device.
> -  All blocks are written, or an error is returned.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -  @param  MediaId                The media ID that the write request is for.
> -  @param  Lba                    The starting logical block address to be written.
> -  @param  BufferSize             The size of the Buffer in bytes.
> -                                 This must be a multiple of the intrinsic block size of the device.
> -  @param  Buffer                 Pointer to the source buffer for the data.
> -
> -  @retval EFI_SUCCESS            The data were written correctly to the device.
> -  @retval EFI_WRITE_PROTECTED    The device cannot be written to.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -  @retval EFI_MEDIA_CHANGED      The MediaId is not for the current media.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to perform the write operation.
> -  @retval EFI_BAD_BUFFER_SIZE    The BufferSize parameter is not a multiple of the intrinsic
> -                                 block size of the device.
> -  @retval EFI_INVALID_PARAMETER  The write request contains LBAs that are not valid,
> -                                 or the buffer is not on proper alignment.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoWriteBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL    *This,
> -  IN UINT32                   MediaId,
> -  IN EFI_LBA                  Lba,
> -  IN UINTN                    BufferSize,
> -  IN VOID                     *Buffer
> -  )
> -{
> -  DEBUG ((EFI_D_INFO, "BlockIo (MMIO) WriteBlocks: lba=0x%Lx, size=0x%Lx\n",
> -    Lba, (UINT64)BufferSize));
> -  return ReadOrWriteBlocks (
> -    This,
> -    FALSE,
> -    MediaId,
> -    Lba,
> -    BufferSize,
> -    Buffer
> -    );
> -}
> -
> -/**
> -  Flushes all modified data to a physical block device.
> -
> -  @param  This                   Indicates a pointer to the calling context.
> -
> -  @retval EFI_SUCCESS            All outstanding data were written correctly to the device.
> -  @retval EFI_DEVICE_ERROR       The device reported an error while attempting to write data.
> -  @retval EFI_NO_MEDIA           There is no media in the device.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoFlushBlocks (
> -  IN EFI_BLOCK_IO_PROTOCOL  *This
> -  )
> -{
> -  return EFI_SUCCESS;
> -}
> -
> -
> -/**
> -  Initialize data for device that does not support multiple LUNSs.
> -
> -  @param  This            The Driver Binding Protocol instance.
> -  @param  Controller      The device to initialize.
> -  @param  BlockMmio       Pointer to USB_MASS_TRANSPORT.
> -  @param  Context         Parameter for USB_MASS_DEVICE.Context.
> -
> -  @retval EFI_SUCCESS     Initialization succeeds.
> -  @retval Other           Initialization fails.
> -
> -**/
> -EFI_STATUS
> -BlockIoInit (
> -  IN EFI_DRIVER_BINDING_PROTOCOL   *This,
> -  IN EFI_HANDLE                    Controller
> -  )
> -{
> -  EFI_STATUS                     Status;
> -  BLOCK_MMIO_TO_BLOCK_IO_DEVICE  *Private;
> -  BLOCK_MMIO_PROTOCOL            *BlockMmio;
> -
> -  Private = (BLOCK_MMIO_TO_BLOCK_IO_DEVICE*) AllocateZeroPool (sizeof (*Private));
> -  ASSERT (Private != NULL);
> -
> -  Status = gBS->LocateProtocol (
> -                  &gEfiCpuIo2ProtocolGuid,
> -                  NULL,
> -                  (VOID **) &(Private->CpuIo)
> -                  );
> -  ASSERT_EFI_ERROR (Status);
> -
> -  Status = gBS->OpenProtocol (
> -                  Controller,
> -                  &gBlockMmioProtocolGuid,
> -                  (VOID **) &BlockMmio,
> -                  This->DriverBindingHandle,
> -                  Controller,
> -                  EFI_OPEN_PROTOCOL_BY_DRIVER
> -                  );
> -  if (EFI_ERROR (Status)) {
> -    DEBUG ((EFI_D_ERROR, "BlockIoInit: OpenBlockMmioProtocol By Driver (%r)\n", Status));
> -    goto ON_ERROR;
> -  }
> -  DEBUG ((EFI_D_INFO, "BlockMmio: %p\n", BlockMmio));
> -  DEBUG ((EFI_D_INFO, "BlockMmio->Media->LastBlock: 0x%lx\n", BlockMmio->Media->LastBlock));
> -  
> -  Private->Signature            = BLOCK_MMIO_TO_BLOCK_IO_SIGNATURE;
> -  Private->Controller           = Controller;
> -  Private->BlockMmio            = BlockMmio;
> -  Private->BlockIo.Media        = BlockMmio->Media;
> -  Private->BlockIo.Reset        = BlockIoReset;
> -  Private->BlockIo.ReadBlocks   = BlockIoReadBlocks;
> -  Private->BlockIo.WriteBlocks  = BlockIoWriteBlocks;
> -  Private->BlockIo.FlushBlocks  = BlockIoFlushBlocks;
> -
> -  DEBUG ((EFI_D_INFO, "Private->BlockIo.Media->LastBlock: 0x%lx\n", Private->BlockIo.Media->LastBlock));
> -
> -  Status = gBS->InstallProtocolInterface (
> -                  &Controller,
> -                  &gEfiBlockIoProtocolGuid,
> -                  EFI_NATIVE_INTERFACE,
> -                  &Private->BlockIo
> -                  );
> -  if (EFI_ERROR (Status)) {
> -    goto ON_ERROR;
> -  }
> -
> -  return EFI_SUCCESS;
> -
> -ON_ERROR:
> -  if (Private != NULL) {
> -    FreePool (Private);
> -  }
> -  if (BlockMmio != NULL) {
> -    gBS->CloseProtocol (
> -           Controller,
> -           &gBlockMmioProtocolGuid,
> -           This->DriverBindingHandle,
> -           Controller
> -           );
> -  }
> -  return Status;  
> -}
> -
> -
> -/**
> -  Check whether the controller is a supported USB mass storage.
> -
> -  @param  This                   The USB mass storage driver binding protocol.
> -  @param  Controller             The controller handle to check.
> -  @param  RemainingDevicePath    The remaining device path.
> -
> -  @retval EFI_SUCCESS            The driver supports this controller.
> -  @retval other                  This device isn't supported.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingSupported (
> -  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> -  IN EFI_HANDLE                   Controller,
> -  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
> -  )
> -{
> -  EFI_STATUS                    Status;
> -  BLOCK_MMIO_PROTOCOL           *BlockMmio;
> -
> -  Status = gBS->OpenProtocol (
> -                  Controller,
> -                  &gBlockMmioProtocolGuid,
> -                  (VOID **) &BlockMmio,
> -                  This->DriverBindingHandle,
> -                  Controller,
> -                  EFI_OPEN_PROTOCOL_BY_DRIVER
> -                  );
> -  if (EFI_ERROR (Status)) {
> -    return Status;
> -  }
> -
> -  gBS->CloseProtocol (
> -         Controller,
> -         &gBlockMmioProtocolGuid,
> -         This->DriverBindingHandle,
> -         Controller
> -         );
> -
> -  return Status;
> -}
> -
> -/**
> -  Starts the USB mass storage device with this driver.
> -
> -  This function consumes USB I/O Portocol, intializes USB mass storage device,
> -  installs Block I/O Protocol, and submits Asynchronous Interrupt
> -  Transfer to manage the USB mass storage device.
> -
> -  @param  This                  The USB mass storage driver binding protocol.
> -  @param  Controller            The USB mass storage device to start on
> -  @param  RemainingDevicePath   The remaining device path.
> -
> -  @retval EFI_SUCCESS           This driver supports this device.
> -  @retval EFI_UNSUPPORTED       This driver does not support this device.
> -  @retval EFI_DEVICE_ERROR      This driver cannot be started due to device Error.
> -  @retval EFI_OUT_OF_RESOURCES  Can't allocate memory resources.
> -  @retval EFI_ALREADY_STARTED   This driver has been started.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingStart (
> -  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> -  IN EFI_HANDLE                   Controller,
> -  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
> -  )
> -{
> -  EFI_STATUS                    Status;
> -  
> -  Status = BlockIoInit (This, Controller);
> -  if (EFI_ERROR (Status)) {
> -    DEBUG ((EFI_D_ERROR, "BlockIoDriverBindingStart: BlockIoInit (%r)\n", Status));
> -    return Status;
> -  }
> -
> -  DEBUG ((EFI_D_INIT, "BlockIoDriverBindingStart: Successfully started\n"));
> -  return Status;
> -}
> -
> -
> -/**
> -  Stop controlling the device.
> -
> -  @param  This                   The USB mass storage driver binding
> -  @param  Controller             The device controller controlled by the driver.
> -  @param  NumberOfChildren       The number of children of this device
> -  @param  ChildHandleBuffer      The buffer of children handle.
> -
> -  @retval EFI_SUCCESS            The driver stopped from controlling the device.
> -  @retval EFI_DEVICE_ERROR       The device could not be stopped due to a device error.
> -  @retval EFI_UNSUPPORTED        Block I/O Protocol is not installed on Controller.
> -  @retval Others                 Failed to stop the driver
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockIoDriverBindingStop (
> -  IN  EFI_DRIVER_BINDING_PROTOCOL *This,
> -  IN  EFI_HANDLE                  Controller,
> -  IN  UINTN                       NumberOfChildren,
> -  IN  EFI_HANDLE                  *ChildHandleBuffer
> -  )
> -{
> -  EFI_STATUS                    Status;
> -  BLOCK_MMIO_TO_BLOCK_IO_DEVICE *Private;
> -
> -  Private = PRIVATE_FROM_BLOCK_IO (This);
> -
> -  //
> -  // Uninstall Block I/O protocol from the device handle,
> -  // then call the transport protocol to stop itself.
> -  //
> -  Status = gBS->UninstallProtocolInterface (
> -                  Controller,
> -                  &gEfiBlockIoProtocolGuid,
> -                  &Private->BlockIo
> -                  );
> -  if (EFI_ERROR (Status)) {
> -    return Status;
> -  }
> -
> -  gBS->CloseProtocol (
> -        Controller,
> -        &gBlockMmioProtocolGuid,
> -        This->DriverBindingHandle,
> -        Controller
> -        );
> -
> -  FreePool (Private);
> -  
> -  DEBUG ((EFI_D_INFO, "Successfully stopped BlockIo on BlockMmio\n"));
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Entrypoint of Block MMIO to Block IO Driver.
> -
> -  This function is the entrypoint of USB Mass Storage Driver. It installs Driver Binding
> -  Protocol together with Component Name Protocols.
> -
> -  @param  ImageHandle       The firmware allocated handle for the EFI image.
> -  @param  SystemTable       A pointer to the EFI System Table.
> -
> -  @retval EFI_SUCCESS       The entry point is executed successfully.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockMmioToBlockIoEntryPoint (
> -  IN EFI_HANDLE               ImageHandle,
> -  IN EFI_SYSTEM_TABLE         *SystemTable
> -  )
> -{
> -  EFI_STATUS  Status;
> -
> -  //
> -  // Install driver binding protocol
> -  //
> -  Status = EfiLibInstallDriverBindingComponentName2 (
> -             ImageHandle,
> -             SystemTable,
> -             &gBlockIoDriverBinding,
> -             ImageHandle,
> -             &gBlockMmioToBlockIoComponentName,
> -             &gBlockMmioToBlockIoComponentName2
> -             );
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return EFI_SUCCESS;
> -}
> diff --git a/OvmfPkg/BlockMmioToBlockIoDxe/ComponentName.c b/OvmfPkg/BlockMmioToBlockIoDxe/ComponentName.c
> deleted file mode 100644
> index 1baa9489d5a4..000000000000
> --- a/OvmfPkg/BlockMmioToBlockIoDxe/ComponentName.c
> +++ /dev/null
> @@ -1,162 +0,0 @@
> -/** @file
> -  UEFI Component Name(2) protocol implementation for Block MMIO to Block IO driver.
> -
> -  Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#include "BlockIo.h"
> -
> -//
> -// EFI Component Name Protocol
> -//
> -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gBlockMmioToBlockIoComponentName = {
> -  BlockMmioToBlockIoGetDriverName,
> -  BlockMmioToBlockIoGetControllerName,
> -  "eng"
> -};
> -
> -//
> -// EFI Component Name 2 Protocol
> -//
> -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gBlockMmioToBlockIoComponentName2 = {
> -  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) BlockMmioToBlockIoGetDriverName,
> -  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) BlockMmioToBlockIoGetControllerName,
> -  "en"
> -};
> -
> -
> -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE
> -mBlockMmioToBlockIoDriverNameTable[] = {
> -  {"eng;en", L"Block MMIO to Block IO Driver"},
> -  {NULL,  NULL}
> -};
> -
> -/**
> -  Retrieves a Unicode string that is the user readable name of the driver.
> -
> -  This function retrieves the user readable name of a driver in the form of a
> -  Unicode string. If the driver specified by This has a user readable name in
> -  the language specified by Language, then a pointer to the driver name is
> -  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
> -  by This does not support the language specified by Language,
> -  then EFI_UNSUPPORTED is returned.
> -
> -  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
> -                                EFI_COMPONENT_NAME_PROTOCOL instance.
> -  @param  Language              A pointer to a Null-terminated ASCII string
> -                                array indicating the language. This is the
> -                                language of the driver name that the caller is
> -                                requesting, and it must match one of the
> -                                languages specified in SupportedLanguages. The
> -                                number of languages supported by a driver is up
> -                                to the driver writer. Language is specified
> -                                in RFC 4646 or ISO 639-2 language code format.
> -  @param  DriverName            A pointer to the Unicode string to return.
> -                                This Unicode string is the name of the
> -                                driver specified by This in the language
> -                                specified by Language.
> -
> -  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
> -                                This and the language specified by Language was
> -                                returned in DriverName.
> -  @retval EFI_INVALID_PARAMETER Language is NULL.
> -  @retval EFI_INVALID_PARAMETER DriverName is NULL.
> -  @retval EFI_UNSUPPORTED       The driver specified by This does not support
> -                                the language specified by Language.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockMmioToBlockIoGetDriverName (
> -  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
> -  IN  CHAR8                        *Language,
> -  OUT CHAR16                       **DriverName
> -  )
> -{
> -  return LookupUnicodeString2 (
> -           Language,
> -           This->SupportedLanguages,
> -           mBlockMmioToBlockIoDriverNameTable,
> -           DriverName,
> -           (BOOLEAN)(This == &gBlockMmioToBlockIoComponentName)
> -           );
> -}
> -
> -/**
> -  Retrieves a Unicode string that is the user readable name of the controller
> -  that is being managed by a driver.
> -
> -  This function retrieves the user readable name of the controller specified by
> -  ControllerHandle and ChildHandle in the form of a Unicode string. If the
> -  driver specified by This has a user readable name in the language specified by
> -  Language, then a pointer to the controller name is returned in ControllerName,
> -  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
> -  managing the controller specified by ControllerHandle and ChildHandle,
> -  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
> -  support the language specified by Language, then EFI_UNSUPPORTED is returned.
> -
> -  @param  This                  A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
> -                                EFI_COMPONENT_NAME_PROTOCOL instance.
> -  @param  ControllerHandle      The handle of a controller that the driver
> -                                specified by This is managing.  This handle
> -                                specifies the controller whose name is to be
> -                                returned.
> -  @param  ChildHandle           The handle of the child controller to retrieve
> -                                the name of.  This is an optional parameter that
> -                                may be NULL.  It will be NULL for device
> -                                drivers.  It will also be NULL for a bus drivers
> -                                that wish to retrieve the name of the bus
> -                                controller.  It will not be NULL for a bus
> -                                driver that wishes to retrieve the name of a
> -                                child controller.
> -  @param  Language              A pointer to a Null-terminated ASCII string
> -                                array indicating the language.  This is the
> -                                language of the driver name that the caller is
> -                                requesting, and it must match one of the
> -                                languages specified in SupportedLanguages. The
> -                                number of languages supported by a driver is up
> -                                to the driver writer. Language is specified in
> -                                RFC 4646 or ISO 639-2 language code format.
> -  @param  ControllerName        A pointer to the Unicode string to return.
> -                                This Unicode string is the name of the
> -                                controller specified by ControllerHandle and
> -                                ChildHandle in the language specified by
> -                                Language from the point of view of the driver
> -                                specified by This.
> -
> -  @retval EFI_SUCCESS           The Unicode string for the user readable name in
> -                                the language specified by Language for the
> -                                driver specified by This was returned in
> -                                DriverName.
> -  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
> -  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
> -                                EFI_HANDLE.
> -  @retval EFI_INVALID_PARAMETER Language is NULL.
> -  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
> -  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
> -                                managing the controller specified by
> -                                ControllerHandle and ChildHandle.
> -  @retval EFI_UNSUPPORTED       The driver specified by This does not support
> -                                the language specified by Language.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -BlockMmioToBlockIoGetControllerName (
> -  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
> -  IN  EFI_HANDLE                                      ControllerHandle,
> -  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
> -  IN  CHAR8                                           *Language,
> -  OUT CHAR16                                          **ControllerName
> -  )
> -{
> -  return EFI_UNSUPPORTED;
> -}
> -- 
> 2.14.1.3.gb7cf6e02401b
> 


  reply	other threads:[~2018-04-10 18:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-10 18:09 [PATCH] OvmfPkg: remove BLOCK_MMIO_PROTOCOL and BlockMmioToBlockIoDxe Laszlo Ersek
2018-04-10 18:26 ` Jordan Justen [this message]
2018-04-10 19:42   ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=152338480498.26190.3275925878177025934@jljusten-skl \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox