]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/XenBusDxe: Open PciIo protocol.
authorAnthony PERARD <anthony.perard@citrix.com>
Wed, 29 Oct 2014 06:49:22 +0000 (06:49 +0000)
committerjljusten <jljusten@Edk2>
Wed, 29 Oct 2014 06:49:22 +0000 (06:49 +0000)
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

OvmfPkg/XenBusDxe/XenBusDxe.c
OvmfPkg/XenBusDxe/XenBusDxe.h

index 4c638b85f1abbe14aab3121a19da15e85035a69a..776d896368bb44f38d03087a923e1ebe963a0f48 100644 (file)
@@ -281,11 +281,25 @@ XenBusDxeDriverBindingStart (
 {\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
+  Dev->PciIo = PciIo;\r
 \r
   EfiAcquireLock (&mMyDeviceLock);\r
   if (mMyDevice != NULL) {\r
 \r
   EfiAcquireLock (&mMyDeviceLock);\r
   if (mMyDevice != NULL) {\r
@@ -323,6 +337,8 @@ XenBusDxeDriverBindingStart (
 \r
 ErrorAllocated:\r
   FreePool (Dev);\r
 \r
 ErrorAllocated:\r
   FreePool (Dev);\r
+  gBS->CloseProtocol (ControllerHandle, &gEfiPciIoProtocolGuid,\r
+                      This->DriverBindingHandle, ControllerHandle);\r
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
@@ -365,6 +381,9 @@ XenBusDxeDriverBindingStop (
 \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
index ccec0ce0e55dad56ce51f0a4ee60e35debf1a6c6..388d2996953ca3e278486dcf6bbdadc1c9d97e39 100644 (file)
@@ -84,6 +84,7 @@ struct _XENBUS_DEVICE {
   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