mirror of https://github.com/acidanthera/audk.git
OvmfPkg: Add basic skeleton for the XenBus bus driver.
This includes Component Name and Driver Binding. Change in V4: - Replace the license by the commonly used file header text. - Add brief description for the driver. Change in V3: - enable compilation for Ia32 and Ia32X64 - fix version (driver binding) Change in V2: - Simple support of controller name. - Cleaning up comments, files header. - Add Licenses - Rename XenbusDxe to XenBusDxe. 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> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16258 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6b621f9581
commit
e65e8802e5
|
@ -428,6 +428,7 @@
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
|
OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -227,6 +227,7 @@ INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
INF OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
|
|
||||||
!if $(SECURE_BOOT_ENABLE) == TRUE
|
!if $(SECURE_BOOT_ENABLE) == TRUE
|
||||||
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
||||||
|
|
|
@ -435,6 +435,7 @@
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
|
OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -227,6 +227,7 @@ INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
INF OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
|
|
||||||
!if $(SECURE_BOOT_ENABLE) == TRUE
|
!if $(SECURE_BOOT_ENABLE) == TRUE
|
||||||
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
||||||
|
|
|
@ -433,6 +433,7 @@
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
|
OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -227,6 +227,7 @@ INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
INF OvmfPkg/XenBusDxe/XenBusDxe.inf
|
||||||
|
|
||||||
!if $(SECURE_BOOT_ENABLE) == TRUE
|
!if $(SECURE_BOOT_ENABLE) == TRUE
|
||||||
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
||||||
|
|
|
@ -0,0 +1,174 @@
|
||||||
|
/** @file
|
||||||
|
Component Name functions implementation for XenBus Bus driver.
|
||||||
|
|
||||||
|
Copyright (C) 2014, Citrix Ltd.
|
||||||
|
|
||||||
|
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 "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)
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
/** @file
|
||||||
|
Component Name functions declaration for XenBus Bus driver.
|
||||||
|
|
||||||
|
Copyright (C) 2014, Citrix Ltd.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
||||||
|
);
|
|
@ -0,0 +1,128 @@
|
||||||
|
/** @file
|
||||||
|
Driver Binding functions declaration for XenBus Bus driver.
|
||||||
|
|
||||||
|
Copyright (C) 2014, Citrix Ltd.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
||||||
|
);
|
|
@ -0,0 +1,301 @@
|
||||||
|
/** @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.
|
||||||
|
|
||||||
|
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 <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;
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/** @file
|
||||||
|
Function declaration and internal data for XenBusDxe.
|
||||||
|
|
||||||
|
Copyright (C) 2014, Citrix Ltd.
|
||||||
|
|
||||||
|
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_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 0x00000010
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 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
|
|
@ -0,0 +1,59 @@
|
||||||
|
## @file
|
||||||
|
# This driver produces a XenBus protocol for every Xen PV devices found.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014, Citrix Ltd.
|
||||||
|
#
|
||||||
|
# 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 = XenBusDxe
|
||||||
|
FILE_GUID = 565ec8ba-a484-11e3-802b-b8ac6f7d65e6
|
||||||
|
MODULE_TYPE = UEFI_DRIVER
|
||||||
|
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue