All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: EDK2 devel <edk2-devel@lists.sourceforge.net>,
	Xen Devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH v2 02/18] OvmfPkg: Add basic skeleton for the XenBus bus driver.
Date: Wed, 10 Sep 2014 15:49:19 -0400	[thread overview]
Message-ID: <20140910194919.GC3556@laptop.dumpdata.com> (raw)
In-Reply-To: <1409849473-9268-3-git-send-email-anthony.perard@citrix.com>

On Thu, Sep 04, 2014 at 05:50:57PM +0100, Anthony PERARD wrote:
> This includes Component Name and Driver Binding.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

> 
> ---
> Change in V2:
> - Simple support of controller name.
> - Cleaning up comments, files header.
> - Add Licenses
> - Rename XenbusDxe to XenBusDxe.
> ---
>  OvmfPkg/OvmfPkgX64.dsc            |   1 +
>  OvmfPkg/OvmfPkgX64.fdf            |   1 +
>  OvmfPkg/XenBusDxe/ComponentName.c | 190 +++++++++++++++++++++++
>  OvmfPkg/XenBusDxe/ComponentName.h | 110 +++++++++++++
>  OvmfPkg/XenBusDxe/DriverBinding.h | 144 +++++++++++++++++
>  OvmfPkg/XenBusDxe/XenBusDxe.c     | 317 ++++++++++++++++++++++++++++++++++++++
>  OvmfPkg/XenBusDxe/XenBusDxe.h     |  93 +++++++++++
>  OvmfPkg/XenBusDxe/XenBusDxe.inf   |  56 +++++++
>  8 files changed, 912 insertions(+)
>  create mode 100644 OvmfPkg/XenBusDxe/ComponentName.c
>  create mode 100644 OvmfPkg/XenBusDxe/ComponentName.h
>  create mode 100644 OvmfPkg/XenBusDxe/DriverBinding.h
>  create mode 100644 OvmfPkg/XenBusDxe/XenBusDxe.c
>  create mode 100644 OvmfPkg/XenBusDxe/XenBusDxe.h
>  create mode 100644 OvmfPkg/XenBusDxe/XenBusDxe.inf
> 
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index 73a6460..c52d5a4 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -432,6 +432,7 @@
>    OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
>    OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
> +  OvmfPkg/XenBusDxe/XenBusDxe.inf
>    OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
>      <LibraryClasses>
>        PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
> diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
> index 29382fb..6b556a2 100644
> --- a/OvmfPkg/OvmfPkgX64.fdf
> +++ b/OvmfPkg/OvmfPkgX64.fdf
> @@ -227,6 +227,7 @@ INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>  INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
>  INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
> +INF  OvmfPkg/XenBusDxe/XenBusDxe.inf
>  
>  !if $(SECURE_BOOT_ENABLE) == TRUE
>    INF  SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
> diff --git a/OvmfPkg/XenBusDxe/ComponentName.c b/OvmfPkg/XenBusDxe/ComponentName.c
> new file mode 100644
> index 0000000..bcf1e51
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/ComponentName.c
> @@ -0,0 +1,190 @@
> +/** @file
> +  Component Name functions implementation for XenBus Bus driver.
> +
> +  Copyright (C) 2014, Citrix Ltd.
> +
> +  Redistribution and use in source and binary forms, with or without
> +  modification, are permitted provided that the following conditions
> +  are met:
> +
> +  * Redistributions of source code must retain the above copyright
> +    notice, this list of conditions and the following disclaimer.
> +  * Redistributions in binary form must reproduce the above copyright
> +    notice, this list of conditions and the following disclaimer in
> +    the documentation and/or other materials provided with the
> +    distribution.
> +
> +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> +  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> +  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> +  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> +  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> +  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> +  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> +  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +  POSSIBILITY OF SUCH DAMAGE.
> +
> +**/
> +
> +#include "XenBusDxe.h"
> +
> +///
> +/// Component Name Protocol instance
> +///
> +GLOBAL_REMOVE_IF_UNREFERENCED
> +EFI_COMPONENT_NAME_PROTOCOL  gXenBusDxeComponentName = {
> +  (EFI_COMPONENT_NAME_GET_DRIVER_NAME)    XenBusDxeComponentNameGetDriverName,
> +  (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)XenBusDxeComponentNameGetControllerName,
> +  "eng"
> +};
> +
> +///
> +/// Component Name 2 Protocol instance
> +///
> +GLOBAL_REMOVE_IF_UNREFERENCED
> +EFI_COMPONENT_NAME2_PROTOCOL  gXenBusDxeComponentName2 = {
> +  XenBusDxeComponentNameGetDriverName,
> +  XenBusDxeComponentNameGetControllerName,
> +  "en"
> +};
> +
> +///
> +/// Table of driver names
> +///
> +GLOBAL_REMOVE_IF_UNREFERENCED
> +EFI_UNICODE_STRING_TABLE mXenBusDxeDriverNameTable[] = {
> +  { "eng;en", (CHAR16 *)L"XenBus Bus Driver" },
> +  { NULL, NULL }
> +};
> +
> +///
> +/// Table of controller names
> +///
> +GLOBAL_REMOVE_IF_UNREFERENCED
> +EFI_UNICODE_STRING_TABLE mXenBusDxeControllerNameTable[] = {
> +  { "eng;en", (CHAR16 *)L"XenBus Controller" },
> +  { NULL, NULL }
> +};
> +
> +/**
> +  Retrieves a Unicode string that is the user-readable name of the EFI Driver.
> +
> +  @param  This       A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
> +  @param  Language   A pointer to a three-character ISO 639-2 language identifier.
> +                     This is the language of the driver name that 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.
> +  @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
> +XenBusDxeComponentNameGetDriverName (
> +  IN EFI_COMPONENT_NAME2_PROTOCOL  *This,
> +  IN  CHAR8                        *Language,
> +  OUT CHAR16                       **DriverName
> +  )
> +{
> +  return LookupUnicodeString2 (
> +           Language,
> +           This->SupportedLanguages,
> +           mXenBusDxeDriverNameTable,
> +           DriverName,
> +           (BOOLEAN)(This != &gXenBusDxeComponentName2)
> +           );
> +}
> +
> +/**
> +  Retrieves a Unicode string that is the user readable name of the controller
> +  that is being managed by an EFI Driver.
> +
> +  @param  This             A pointer to the 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 three character ISO 639-2 language
> +                           identifier.  This is the language of the controller 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.
> +  @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 NULL.
> +  @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
> +XenBusDxeComponentNameGetControllerName (
> +  IN  EFI_COMPONENT_NAME2_PROTOCOL  *This,
> +  IN  EFI_HANDLE                    ControllerHandle,
> +  IN  EFI_HANDLE                    ChildHandle        OPTIONAL,
> +  IN  CHAR8                         *Language,
> +  OUT CHAR16                        **ControllerName
> +  )
> +{
> +  EFI_STATUS  Status;
> +
> +  if (ChildHandle != NULL) {
> +    // TODO Get controller name for a child.
> +    return EFI_UNSUPPORTED;
> +  }
> +
> +  //
> +  // Make sure this driver is currently managing ControllerHandle
> +  //
> +  Status = EfiTestManagedDevice (
> +             ControllerHandle,
> +             gXenBusDxeDriverBinding.DriverBindingHandle,
> +             &gEfiPciIoProtocolGuid
> +             );
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }
> +
> +  //
> +  // Lookup name of controller specified by ControllerHandle
> +  //
> +  return LookupUnicodeString2 (
> +           Language,
> +           This->SupportedLanguages,
> +           mXenBusDxeControllerNameTable,
> +           ControllerName,
> +           (BOOLEAN)(This != &gXenBusDxeComponentName2)
> +           );
> +}
> diff --git a/OvmfPkg/XenBusDxe/ComponentName.h b/OvmfPkg/XenBusDxe/ComponentName.h
> new file mode 100644
> index 0000000..dfafce6
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/ComponentName.h
> @@ -0,0 +1,110 @@
> +/** @file
> +  Component Name functions declaration for XenBus Bus driver.
> +
> +  Copyright (C) 2014, Citrix Ltd.
> +
> +  Redistribution and use in source and binary forms, with or without
> +  modification, are permitted provided that the following conditions
> +  are met:
> +
> +  * Redistributions of source code must retain the above copyright
> +    notice, this list of conditions and the following disclaimer.
> +  * Redistributions in binary form must reproduce the above copyright
> +    notice, this list of conditions and the following disclaimer in
> +    the documentation and/or other materials provided with the
> +    distribution.
> +
> +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> +  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> +  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> +  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> +  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> +  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> +  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> +  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +  POSSIBILITY OF SUCH DAMAGE.
> +
> +**/
> +
> +/**
> +  Retrieves a Unicode string that is the user-readable name of the EFI Driver.
> +
> +  @param  This       A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
> +  @param  Language   A pointer to a three-character ISO 639-2 language identifier.
> +                     This is the language of the driver name that 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.
> +  @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
> +XenBusDxeComponentNameGetDriverName (
> +  IN EFI_COMPONENT_NAME2_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 an EFI Driver.
> +
> +  @param  This             A pointer to the 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 three character ISO 639-2 language
> +                           identifier.  This is the language of the controller 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.
> +  @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 NULL.
> +  @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
> +XenBusDxeComponentNameGetControllerName (
> +  IN  EFI_COMPONENT_NAME2_PROTOCOL  *This,
> +  IN  EFI_HANDLE                    ControllerHandle,
> +  IN  EFI_HANDLE                    ChildHandle        OPTIONAL,
> +  IN  CHAR8                         *Language,
> +  OUT CHAR16                        **ControllerName
> +  );
> diff --git a/OvmfPkg/XenBusDxe/DriverBinding.h b/OvmfPkg/XenBusDxe/DriverBinding.h
> new file mode 100644
> index 0000000..13e0a90
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/DriverBinding.h
> @@ -0,0 +1,144 @@
> +/** @file
> +  Driver Binding functions declaration for XenBus Bus driver.
> +
> +  Copyright (C) 2014, Citrix Ltd.
> +
> +  Redistribution and use in source and binary forms, with or without
> +  modification, are permitted provided that the following conditions
> +  are met:
> +
> +  * Redistributions of source code must retain the above copyright
> +    notice, this list of conditions and the following disclaimer.
> +  * Redistributions in binary form must reproduce the above copyright
> +    notice, this list of conditions and the following disclaimer in
> +    the documentation and/or other materials provided with the
> +    distribution.
> +
> +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> +  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> +  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> +  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> +  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> +  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> +  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> +  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +  POSSIBILITY OF SUCH DAMAGE.
> +
> +**/
> +
> +/**
> +  Tests to see if this driver supports a given controller. If a child device is provided,
> +  it further tests to see if this driver supports creating a handle for the specified child device.
> +
> +  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle     The handle of the controller to test. This handle
> +                                   must support a protocol interface that supplies
> +                                   an I/O abstraction to the driver.
> +  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
> +                                   parameter is ignored by device drivers, and is optional for bus
> +                                   drivers. For bus drivers, if this parameter is not NULL, then
> +                                   the bus driver must determine if the bus controller specified
> +                                   by ControllerHandle and the child controller specified
> +                                   by RemainingDevicePath are both supported by this
> +                                   bus driver.
> +
> +  @retval EFI_SUCCESS              The device specified by ControllerHandle and
> +                                   RemainingDevicePath is supported by the driver specified by This.
> +  @retval EFI_ALREADY_STARTED      The device specified by ControllerHandle and
> +                                   RemainingDevicePath is already being managed by the driver
> +                                   specified by This.
> +  @retval EFI_ACCESS_DENIED        The device specified by ControllerHandle and
> +                                   RemainingDevicePath is already being managed by a different
> +                                   driver or an application that requires exclusive access.
> +                                   Currently not implemented.
> +  @retval EFI_UNSUPPORTED          The device specified by ControllerHandle and
> +                                   RemainingDevicePath is not supported by the driver specified by This.
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingSupported (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN EFI_HANDLE                   ControllerHandle,
> +  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
> +  );
> +
> +/**
> +  Starts a device controller or a bus controller.
> +
> +  The Start() function is designed to be invoked from the EFI boot service ConnectController().
> +  As a result, much of the error checking on the parameters to Start() has been moved into this
> +  common boot service. It is legal to call Start() from other locations,
> +  but the following calling restrictions must be followed, or the system behavior will not be deterministic.
> +  1. ControllerHandle must be a valid EFI_HANDLE.
> +  2. If RemainingDevicePath is not NULL, then it must be a pointer to a naturally aligned
> +     EFI_DEVICE_PATH_PROTOCOL.
> +  3. Prior to calling Start(), the Supported() function for the driver specified by This must
> +     have been called with the same calling parameters, and Supported() must have returned EFI_SUCCESS.
> +
> +  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle     The handle of the controller to start. This handle
> +                                   must support a protocol interface that supplies
> +                                   an I/O abstraction to the driver.
> +  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
> +                                   parameter is ignored by device drivers, and is optional for bus
> +                                   drivers. For a bus driver, if this parameter is NULL, then handles
> +                                   for all the children of Controller are created by this driver.
> +                                   If this parameter is not NULL and the first Device Path Node is
> +                                   not the End of Device Path Node, then only the handle for the
> +                                   child device specified by the first Device Path Node of
> +                                   RemainingDevicePath is created by this driver.
> +                                   If the first Device Path Node of RemainingDevicePath is
> +                                   the End of Device Path Node, no child handle is created by this
> +                                   driver.
> +
> +  @retval EFI_SUCCESS              The device was started.
> +  @retval EFI_DEVICE_ERROR         The device could not be started due to a device error.Currently not implemented.
> +  @retval EFI_OUT_OF_RESOURCES     The request could not be completed due to a lack of resources.
> +  @retval Others                   The driver failded to start the device.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingStart (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN EFI_HANDLE                   ControllerHandle,
> +  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
> +  );
> +
> +/**
> +  Stops a device controller or a bus controller.
> +
> +  The Stop() function is designed to be invoked from the EFI boot service DisconnectController().
> +  As a result, much of the error checking on the parameters to Stop() has been moved
> +  into this common boot service. It is legal to call Stop() from other locations,
> +  but the following calling restrictions must be followed, or the system behavior will not be deterministic.
> +  1. ControllerHandle must be a valid EFI_HANDLE that was used on a previous call to this
> +     same driver's Start() function.
> +  2. The first NumberOfChildren handles of ChildHandleBuffer must all be a valid
> +     EFI_HANDLE. In addition, all of these handles must have been created in this driver's
> +     Start() function, and the Start() function must have called OpenProtocol() on
> +     ControllerHandle with an Attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
> +
> +  @param[in]  This              A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle  A handle to the device being stopped. The handle must
> +                                support a bus specific I/O protocol for the driver
> +                                to use to stop the device.
> +  @param[in]  NumberOfChildren  The number of child device handles in ChildHandleBuffer.
> +  @param[in]  ChildHandleBuffer An array of child handles to be freed. May be NULL
> +                                if NumberOfChildren is 0.
> +
> +  @retval EFI_SUCCESS           The device was stopped.
> +  @retval EFI_DEVICE_ERROR      The device could not be stopped due to a device error.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingStop (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN  EFI_HANDLE                  ControllerHandle,
> +  IN  UINTN                       NumberOfChildren,
> +  IN  EFI_HANDLE                  *ChildHandleBuffer OPTIONAL
> +  );
> diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.c b/OvmfPkg/XenBusDxe/XenBusDxe.c
> new file mode 100644
> index 0000000..a272204
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/XenBusDxe.c
> @@ -0,0 +1,317 @@
> +/** @file
> +  This driver produces XenBus Protocol instances for each Xen PV devices.
> +
> +  This XenBus bus driver will first initialize differente services in order to
> +  enumerate the ParaVirtualized devices available.
> +
> +  Those services are:
> +    - HyperCall
> +    - Event Channel
> +    - Grant Table
> +    - XenStore
> +    - XenBus
> +
> +  Copyright (C) 2014, Citrix Ltd.
> +
> +  Redistribution and use in source and binary forms, with or without
> +  modification, are permitted provided that the following conditions
> +  are met:
> +
> +  * Redistributions of source code must retain the above copyright
> +    notice, this list of conditions and the following disclaimer.
> +  * Redistributions in binary form must reproduce the above copyright
> +    notice, this list of conditions and the following disclaimer in
> +    the documentation and/or other materials provided with the
> +    distribution.
> +
> +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> +  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> +  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> +  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> +  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> +  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> +  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> +  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +  POSSIBILITY OF SUCH DAMAGE.
> +
> +**/
> +
> +#include <IndustryStandard/Pci.h>
> +#include <IndustryStandard/Acpi.h>
> +#include <Library/DebugLib.h>
> +
> +#include "XenBusDxe.h"
> +
> +
> +///
> +/// Driver Binding Protocol instance
> +///
> +EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding = {
> +  XenBusDxeDriverBindingSupported,
> +  XenBusDxeDriverBindingStart,
> +  XenBusDxeDriverBindingStop,
> +  XENBUS_DXE_VERSION,
> +  NULL,
> +  NULL
> +};
> +
> +
> +/**
> +  Unloads an image.
> +
> +  @param  ImageHandle           Handle that identifies the image to be unloaded.
> +
> +  @retval EFI_SUCCESS           The image has been unloaded.
> +  @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeUnload (
> +  IN EFI_HANDLE  ImageHandle
> +  )
> +{
> +  EFI_STATUS  Status;
> +
> +  EFI_HANDLE  *HandleBuffer;
> +  UINTN       HandleCount;
> +  UINTN       Index;
> +
> +  //
> +  // Retrieve array of all handles in the handle database
> +  //
> +  Status = gBS->LocateHandleBuffer (
> +                  AllHandles,
> +                  NULL,
> +                  NULL,
> +                  &HandleCount,
> +                  &HandleBuffer
> +                  );
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }
> +
> +  //
> +  // Disconnect the current driver from handles in the handle database
> +  //
> +  for (Index = 0; Index < HandleCount; Index++) {
> +    gBS->DisconnectController (HandleBuffer[Index], gImageHandle, NULL);
> +  }
> +
> +  //
> +  // Free the array of handles
> +  //
> +  FreePool (HandleBuffer);
> +
> +
> +  //
> +  // Uninstall protocols installed in the driver entry point
> +  //
> +  Status = gBS->UninstallMultipleProtocolInterfaces (
> +                  ImageHandle,
> +                  &gEfiDriverBindingProtocolGuid, &gXenBusDxeDriverBinding,
> +                  &gEfiComponentNameProtocolGuid,  &gXenBusDxeComponentName,
> +                  &gEfiComponentName2ProtocolGuid, &gXenBusDxeComponentName2,
> +                  NULL
> +                  );
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }
> +
> +  return EFI_SUCCESS;
> +}
> +
> +/**
> +  This is the declaration of an EFI image entry point. This entry point is
> +  the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including
> +  both device drivers and bus drivers.
> +
> +  @param  ImageHandle           The firmware allocated handle for the UEFI image.
> +  @param  SystemTable           A pointer to the EFI System Table.
> +
> +  @retval EFI_SUCCESS           The operation completed successfully.
> +  @retval Others                An unexpected error occurred.
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverEntryPoint (
> +  IN EFI_HANDLE        ImageHandle,
> +  IN EFI_SYSTEM_TABLE  *SystemTable
> +  )
> +{
> +  EFI_STATUS  Status;
> +
> +  //
> +  // Install UEFI Driver Model protocol(s).
> +  //
> +  Status = EfiLibInstallDriverBindingComponentName2 (
> +             ImageHandle,
> +             SystemTable,
> +             &gXenBusDxeDriverBinding,
> +             ImageHandle,
> +             &gXenBusDxeComponentName,
> +             &gXenBusDxeComponentName2
> +             );
> +  ASSERT_EFI_ERROR (Status);
> +
> +
> +  return Status;
> +}
> +
> +
> +/**
> +  Tests to see if this driver supports a given controller. If a child device is provided,
> +  it further tests to see if this driver supports creating a handle for the specified child device.
> +
> +  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle     The handle of the controller to test. This handle
> +                                   must support a protocol interface that supplies
> +                                   an I/O abstraction to the driver.
> +  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
> +                                   parameter is ignored by device drivers, and is optional for bus
> +                                   drivers. For bus drivers, if this parameter is not NULL, then
> +                                   the bus driver must determine if the bus controller specified
> +                                   by ControllerHandle and the child controller specified
> +                                   by RemainingDevicePath are both supported by this
> +                                   bus driver.
> +
> +  @retval EFI_SUCCESS              The device specified by ControllerHandle and
> +                                   RemainingDevicePath is supported by the driver specified by This.
> +  @retval EFI_ALREADY_STARTED      The device specified by ControllerHandle and
> +                                   RemainingDevicePath is already being managed by the driver
> +                                   specified by This.
> +  @retval EFI_ACCESS_DENIED        The device specified by ControllerHandle and
> +                                   RemainingDevicePath is already being managed by a different
> +                                   driver or an application that requires exclusive access.
> +                                   Currently not implemented.
> +  @retval EFI_UNSUPPORTED          The device specified by ControllerHandle and
> +                                   RemainingDevicePath is not supported by the driver specified by This.
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingSupported (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN EFI_HANDLE                   ControllerHandle,
> +  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
> +  )
> +{
> +  EFI_STATUS          Status;
> +  EFI_PCI_IO_PROTOCOL *PciIo;
> +  PCI_TYPE00          Pci;
> +
> +  Status = gBS->OpenProtocol (
> +                     ControllerHandle,
> +                     &gEfiPciIoProtocolGuid,
> +                     (VOID **)&PciIo,
> +                     This->DriverBindingHandle,
> +                     ControllerHandle,
> +                     EFI_OPEN_PROTOCOL_BY_DRIVER
> +                     );
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }
> +
> +  Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, 0,
> +                            sizeof Pci / sizeof (UINT32), &Pci);
> +
> +  if (Status == EFI_SUCCESS) {
> +    if (Pci.Hdr.VendorId == PCI_VENDOR_ID_XEN &&
> +        Pci.Hdr.DeviceId == PCI_DEVICE_ID_XEN_PLATFORM) {
> +      Status = EFI_SUCCESS;
> +    } else {
> +      Status = EFI_UNSUPPORTED;
> +    }
> +  }
> +
> +  gBS->CloseProtocol (ControllerHandle, &gEfiPciIoProtocolGuid,
> +         This->DriverBindingHandle, ControllerHandle);
> +
> +  return Status;
> +}
> +
> +/**
> +  Starts a bus controller.
> +
> +  The Start() function is designed to be invoked from the EFI boot service ConnectController().
> +  As a result, much of the error checking on the parameters to Start() has been moved into this
> +  common boot service. It is legal to call Start() from other locations,
> +  but the following calling restrictions must be followed, or the system behavior will not be deterministic.
> +  1. ControllerHandle must be a valid EFI_HANDLE.
> +  2. If RemainingDevicePath is not NULL, then it must be a pointer to a naturally aligned
> +     EFI_DEVICE_PATH_PROTOCOL.
> +  3. Prior to calling Start(), the Supported() function for the driver specified by This must
> +     have been called with the same calling parameters, and Supported() must have returned EFI_SUCCESS.
> +
> +  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle     The handle of the controller to start. This handle
> +                                   must support a protocol interface that supplies
> +                                   an I/O abstraction to the driver.
> +  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
> +                                   parameter is ignored by device drivers, and is optional for bus
> +                                   drivers. For a bus driver, if this parameter is NULL, then handles
> +                                   for all the children of Controller are created by this driver.
> +                                   If this parameter is not NULL and the first Device Path Node is
> +                                   not the End of Device Path Node, then only the handle for the
> +                                   child device specified by the first Device Path Node of
> +                                   RemainingDevicePath is created by this driver.
> +                                   If the first Device Path Node of RemainingDevicePath is
> +                                   the End of Device Path Node, no child handle is created by this
> +                                   driver.
> +
> +  @retval EFI_SUCCESS              The device was started.
> +  @retval EFI_DEVICE_ERROR         The device could not be started due to a device error.Currently not implemented.
> +  @retval EFI_OUT_OF_RESOURCES     The request could not be completed due to a lack of resources.
> +  @retval Others                   The driver failded to start the device.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingStart (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN EFI_HANDLE                   ControllerHandle,
> +  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
> +  )
> +{
> +  return EFI_UNSUPPORTED;
> +}
> +
> +/**
> +  Stops a bus controller.
> +
> +  The Stop() function is designed to be invoked from the EFI boot service DisconnectController().
> +  As a result, much of the error checking on the parameters to Stop() has been moved
> +  into this common boot service. It is legal to call Stop() from other locations,
> +  but the following calling restrictions must be followed, or the system behavior will not be deterministic.
> +  1. ControllerHandle must be a valid EFI_HANDLE that was used on a previous call to this
> +     same driver's Start() function.
> +  2. The first NumberOfChildren handles of ChildHandleBuffer must all be a valid
> +     EFI_HANDLE. In addition, all of these handles must have been created in this driver's
> +     Start() function, and the Start() function must have called OpenProtocol() on
> +     ControllerHandle with an Attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
> +
> +  @param[in]  This              A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
> +  @param[in]  ControllerHandle  A handle to the device being stopped. The handle must
> +                                support a bus specific I/O protocol for the driver
> +                                to use to stop the device.
> +  @param[in]  NumberOfChildren  The number of child device handles in ChildHandleBuffer.
> +  @param[in]  ChildHandleBuffer An array of child handles to be freed. May be NULL
> +                                if NumberOfChildren is 0.
> +
> +  @retval EFI_SUCCESS           The device was stopped.
> +  @retval EFI_DEVICE_ERROR      The device could not be stopped due to a device error.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +XenBusDxeDriverBindingStop (
> +  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
> +  IN EFI_HANDLE                   ControllerHandle,
> +  IN UINTN                        NumberOfChildren,
> +  IN EFI_HANDLE                   *ChildHandleBuffer OPTIONAL
> +  )
> +{
> +  return EFI_UNSUPPORTED;
> +}
> diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.h b/OvmfPkg/XenBusDxe/XenBusDxe.h
> new file mode 100644
> index 0000000..4c11f60
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/XenBusDxe.h
> @@ -0,0 +1,93 @@
> +/** @file
> +  Function declaration and internal data for XenBusDxe.
> +
> +  Copyright (C) 2014, Citrix Ltd.
> +
> +  Redistribution and use in source and binary forms, with or without
> +  modification, are permitted provided that the following conditions
> +  are met:
> +
> +  * Redistributions of source code must retain the above copyright
> +    notice, this list of conditions and the following disclaimer.
> +  * Redistributions in binary form must reproduce the above copyright
> +    notice, this list of conditions and the following disclaimer in
> +    the documentation and/or other materials provided with the
> +    distribution.
> +
> +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> +  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> +  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> +  COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> +  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> +  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> +  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> +  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +  POSSIBILITY OF SUCH DAMAGE.
> +
> +**/
> +
> +#ifndef __EFI_XENBUS_DXE_H__
> +#define __EFI_XENBUS_DXE_H__
> +
> +#include <Uefi.h>
> +
> +//
> +// Libraries
> +//
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/BaseLib.h>
> +#include <Library/UefiLib.h>
> +#include <Library/DevicePathLib.h>
> +#include <Library/DebugLib.h>
> +
> +
> +//
> +// UEFI Driver Model Protocols
> +//
> +#include <Protocol/DriverBinding.h>
> +
> +
> +//
> +// Consumed Protocols
> +//
> +#include <Protocol/PciIo.h>
> +
> +
> +//
> +// Produced Protocols
> +//
> +
> +
> +//
> +// Driver Version
> +//
> +#define XENBUS_DXE_VERSION  0x00000000
> +
> +
> +//
> +// Protocol instances
> +//
> +extern EFI_DRIVER_BINDING_PROTOCOL  gXenBusDxeDriverBinding;
> +extern EFI_COMPONENT_NAME2_PROTOCOL  gXenBusDxeComponentName2;
> +extern EFI_COMPONENT_NAME_PROTOCOL  gXenBusDxeComponentName;
> +
> +
> +//
> +// Include files with function prototypes
> +//
> +#include "DriverBinding.h"
> +#include "ComponentName.h"
> +
> +//
> +// Other stuff
> +//
> +#define PCI_VENDOR_ID_XEN                0x5853
> +#define PCI_DEVICE_ID_XEN_PLATFORM       0x0001
> +
> +
> +#endif
> diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.inf b/OvmfPkg/XenBusDxe/XenBusDxe.inf
> new file mode 100644
> index 0000000..b4d7551
> --- /dev/null
> +++ b/OvmfPkg/XenBusDxe/XenBusDxe.inf
> @@ -0,0 +1,56 @@
> +
> +## @file
> +#  TODO: Brief Description of UEFI Driver XenBusDxe
> +#
> +#  TODO: Detailed Description of UEFI Driver XenBusDxe
> +#
> +#  TODO: Copyright for UEFI Driver XenBusDxe
> +#
> +#  TODO: License for UEFI Driver XenBusDxe
> +#
> +##
> +
> +[Defines]
> +  INF_VERSION               = 0x00010005
> +  BASE_NAME                 = XenBusDxe
> +  FILE_GUID                 = 565ec8ba-a484-11e3-802b-b8ac6f7d65e6
> +  MODULE_TYPE               = UEFI_DRIVER
> +
> +  VERSION_STRING            = 0.1
> +  ENTRY_POINT               = XenBusDxeDriverEntryPoint
> +  UNLOAD_IMAGE              = XenBusDxeUnload
> +
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  OvmfPkg/OvmfPkg.dec
> +
> +[Sources]
> +  XenBusDxe.h
> +  XenBusDxe.c
> +  DriverBinding.h
> +  ComponentName.c
> +  ComponentName.h
> +
> +[LibraryClasses]
> +  UefiDriverEntryPoint
> +  UefiBootServicesTableLib
> +  MemoryAllocationLib
> +  BaseMemoryLib
> +  BaseLib
> +  UefiLib
> +  DevicePathLib
> +  DebugLib
> +  HobLib
> +
> +
> +[Protocols]
> +  gEfiDriverBindingProtocolGuid
> +  gEfiPciIoProtocolGuid
> +  gEfiComponentName2ProtocolGuid
> +  gEfiComponentNameProtocolGuid
> +
> +
> +[Guids]
> +  gEfiXenInfoGuid
> +
> -- 
> Anthony PERARD
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

  parent reply	other threads:[~2014-09-10 19:49 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1409849473-9268-1-git-send-email-anthony.perard@citrix.com>
2014-09-04 16:50 ` [PATCH v2 01/18] OvmfPkg: Add public headers from Xen Project Anthony PERARD
2014-09-04 16:50 ` [PATCH v2 02/18] OvmfPkg: Add basic skeleton for the XenBus bus driver Anthony PERARD
2014-09-04 16:50 ` [PATCH v2 03/18] OvmfPkg/XenBusDxe: Add device state struct and create an ExitBoot services event Anthony PERARD
2014-09-04 16:50 ` [PATCH v2 04/18] OvmfPkg/XenBusDxe: Add support to make Xen Hypercalls Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 05/18] OvmfPkg/XenBusDxe: Open PciIo protocol Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 06/18] OvmfPkg: Introduce XenBus Protocol Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 07/18] OvmfPkg/XenBusDxe: Add InterlockedCompareExchange16 Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 08/18] OvmfPkg/XenBusDxe: Add Grant Table functions Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 09/18] OvmfPkg/XenBusDxe: Add Event Channel Notify Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 10/18] OvmfPkg/XenBusDxe: Add TestAndClearBit Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 11/18] OvmfPkg/XenBusDxe: Add XenStore client implementation Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 12/18] OvmfPkg/XenBusDxe: Add an helper AsciiStrDup Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 13/18] OvmfPkg/XenBusDxe: Add XenStore function into the XenBus protocol Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 14/18] OvmfPkg/XenBusDxe: Indroduce XenBus support itself Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 15/18] OvmfPkg/XenBusDxe: Add Event Channel into XenBus protocol Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 16/18] OvmfPkg/XenPvBlkDxe: Xen PV Block device, initial skeleton Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 17/18] OvmfPkg/XenPvBlkDxe: Add BlockFront client Anthony PERARD
2014-09-04 16:51 ` [PATCH v2 18/18] OvmfPkg/XenPvBlkDxe: Add BlockIo Anthony PERARD
2014-09-04 18:01 ` [edk2] [PATCH v2 00/18] Introducing Xen PV block driver to OVMF Laszlo Ersek
     [not found] ` <5408A8E3.2020805@redhat.com>
2014-09-05 13:34   ` Anthony PERARD
     [not found]   ` <20140905133440.GB1654@perard.uk.xensource.com>
2014-09-05 19:30     ` Jordan Justen
2014-09-05 21:14     ` Laszlo Ersek
     [not found]     ` <CAFe8ug86UtwYQY-1P5wp6tQ_2Yi2fwgNU7+knHV0JH4SDz07jQ@mail.gmail.com>
2014-09-08 15:36       ` Anthony PERARD
     [not found] ` <1409849473-9268-2-git-send-email-anthony.perard@citrix.com>
2014-09-10 19:43   ` [PATCH v2 01/18] OvmfPkg: Add public headers from Xen Project Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-3-git-send-email-anthony.perard@citrix.com>
2014-09-10 19:49   ` Konrad Rzeszutek Wilk [this message]
     [not found] ` <1409849473-9268-4-git-send-email-anthony.perard@citrix.com>
2014-09-10 19:58   ` [PATCH v2 03/18] OvmfPkg/XenBusDxe: Add device state struct and create an ExitBoot services event Konrad Rzeszutek Wilk
2014-09-18 10:33     ` Anthony PERARD
     [not found] ` <1409849473-9268-5-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:01   ` [PATCH v2 04/18] OvmfPkg/XenBusDxe: Add support to make Xen Hypercalls Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-6-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:03   ` [PATCH v2 05/18] OvmfPkg/XenBusDxe: Open PciIo protocol Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-7-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:05   ` [PATCH v2 06/18] OvmfPkg: Introduce XenBus Protocol Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-8-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:09   ` [PATCH v2 07/18] OvmfPkg/XenBusDxe: Add InterlockedCompareExchange16 Konrad Rzeszutek Wilk
2014-09-18 10:55     ` Anthony PERARD
     [not found] ` <1409849473-9268-9-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:12   ` [PATCH v2 08/18] OvmfPkg/XenBusDxe: Add Grant Table functions Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-10-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:15   ` [PATCH v2 09/18] OvmfPkg/XenBusDxe: Add Event Channel Notify Konrad Rzeszutek Wilk
2014-09-18 10:56     ` Anthony PERARD
     [not found] ` <1409849473-9268-11-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:18   ` [PATCH v2 10/18] OvmfPkg/XenBusDxe: Add TestAndClearBit Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-12-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:48   ` [PATCH v2 11/18] OvmfPkg/XenBusDxe: Add XenStore client implementation Konrad Rzeszutek Wilk
2014-09-18 11:10     ` Anthony PERARD
     [not found] ` <1409849473-9268-13-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:50   ` [PATCH v2 12/18] OvmfPkg/XenBusDxe: Add an helper AsciiStrDup Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-14-git-send-email-anthony.perard@citrix.com>
2014-09-10 20:54   ` [PATCH v2 13/18] OvmfPkg/XenBusDxe: Add XenStore function into the XenBus protocol Konrad Rzeszutek Wilk
     [not found] ` <1409849473-9268-15-git-send-email-anthony.perard@citrix.com>
2014-09-11 17:10   ` [PATCH v2 14/18] OvmfPkg/XenBusDxe: Indroduce XenBus support itself Konrad Rzeszutek Wilk
2014-09-18 11:26     ` Anthony PERARD
     [not found] ` <1409849473-9268-16-git-send-email-anthony.perard@citrix.com>
2014-09-12 13:58   ` [PATCH v2 15/18] OvmfPkg/XenBusDxe: Add Event Channel into XenBus protocol Konrad Rzeszutek Wilk
2014-09-18 11:28     ` Anthony PERARD
     [not found] ` <1409849473-9268-17-git-send-email-anthony.perard@citrix.com>
2014-09-12 14:03   ` [PATCH v2 16/18] OvmfPkg/XenPvBlkDxe: Xen PV Block device, initial skeleton Konrad Rzeszutek Wilk
2014-09-18 11:31     ` Anthony PERARD
     [not found] ` <1409849473-9268-18-git-send-email-anthony.perard@citrix.com>
2014-09-12 14:47   ` [PATCH v2 17/18] OvmfPkg/XenPvBlkDxe: Add BlockFront client Konrad Rzeszutek Wilk
2014-09-18 11:53     ` Anthony PERARD
     [not found] ` <1409849473-9268-19-git-send-email-anthony.perard@citrix.com>
2014-09-12 14:57   ` [PATCH v2 18/18] OvmfPkg/XenPvBlkDxe: Add BlockIo Konrad Rzeszutek Wilk
2014-09-18 15:00     ` Anthony PERARD

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-all 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=20140910194919.GC3556@laptop.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=anthony.perard@citrix.com \
    --cc=edk2-devel@lists.sourceforge.net \
    --cc=xen-devel@lists.xen.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.