The PciIo interface will be used in "OvmfPkg/XenBusDxe: Add Grant Table
functions" to get the memory address of the BAR 1 and use the space to
map shared memory.
Change in V3:
- add a commit description.
Change in V2:
- Coding style
- Error handler
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16261
6f19259b-4bc3-4df7-8a09-
765794883524
{\r
EFI_STATUS Status;\r
XENBUS_DEVICE *Dev;\r
{\r
EFI_STATUS Status;\r
XENBUS_DEVICE *Dev;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+\r
+ Status = gBS->OpenProtocol (\r
+ ControllerHandle,\r
+ &gEfiPciIoProtocolGuid,\r
+ (VOID **) &PciIo,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
Dev = AllocateZeroPool (sizeof (*Dev));\r
Dev->Signature = XENBUS_DEVICE_SIGNATURE;\r
Dev->This = This;\r
Dev->ControllerHandle = ControllerHandle;\r
\r
Dev = AllocateZeroPool (sizeof (*Dev));\r
Dev->Signature = XENBUS_DEVICE_SIGNATURE;\r
Dev->This = This;\r
Dev->ControllerHandle = ControllerHandle;\r
\r
EfiAcquireLock (&mMyDeviceLock);\r
if (mMyDevice != NULL) {\r
\r
EfiAcquireLock (&mMyDeviceLock);\r
if (mMyDevice != NULL) {\r
\r
ErrorAllocated:\r
FreePool (Dev);\r
\r
ErrorAllocated:\r
FreePool (Dev);\r
+ gBS->CloseProtocol (ControllerHandle, &gEfiPciIoProtocolGuid,\r
+ This->DriverBindingHandle, ControllerHandle);\r
\r
gBS->CloseEvent (Dev->ExitBootEvent);\r
\r
\r
gBS->CloseEvent (Dev->ExitBootEvent);\r
\r
+ gBS->CloseProtocol (ControllerHandle, &gEfiPciIoProtocolGuid,\r
+ This->DriverBindingHandle, ControllerHandle);\r
+\r
mMyDevice = NULL;\r
FreePool (Dev);\r
return EFI_SUCCESS;\r
mMyDevice = NULL;\r
FreePool (Dev);\r
return EFI_SUCCESS;\r
UINT32 Signature;\r
EFI_DRIVER_BINDING_PROTOCOL *This;\r
EFI_HANDLE ControllerHandle;\r
UINT32 Signature;\r
EFI_DRIVER_BINDING_PROTOCOL *This;\r
EFI_HANDLE ControllerHandle;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
EFI_EVENT ExitBootEvent;\r
\r
VOID *Hyperpage;\r
EFI_EVENT ExitBootEvent;\r
\r
VOID *Hyperpage;\r