]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/NvmExpressDxe: Open NVME_PASS_THRU with BY_CHILD attr
authorTian Feng <feng.tian@intel.com>
Tue, 16 Jun 2015 01:03:50 +0000 (01:03 +0000)
committererictian <erictian@Edk2>
Tue, 16 Jun 2015 01:03:50 +0000 (01:03 +0000)
Open NVM_EXPRESS_PASS_THRU rather than PCI_IO to create parent-child
relationship.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Tian Feng <feng.tian@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17636 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c

index 99f89f1d45c2c958459a178a3d2f0e387b69e0b1..d107d96387d8665e30fada5636ae93d7fa6b386f 100644 (file)
@@ -213,8 +213,8 @@ EnumerateNvmeDevNamespace (
     }\r
     gBS->OpenProtocol (\r
            Private->ControllerHandle,\r
-           &gEfiPciIoProtocolGuid,\r
-           (VOID **) &Private->PciIo,\r
+           &gEfiNvmExpressPassThruProtocolGuid,\r
+           (VOID **) &Private->Passthru,\r
            Private->DriverBindingHandle,\r
            Device->DeviceHandle,\r
            EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
@@ -336,9 +336,9 @@ UnregisterNvmeNamespace (
   )\r
 {\r
   EFI_STATUS                               Status;\r
-  EFI_PCI_IO_PROTOCOL                      *PciIo;\r
   EFI_BLOCK_IO_PROTOCOL                    *BlockIo;\r
   NVME_DEVICE_PRIVATE_DATA                 *Device;\r
+  NVME_CONTROLLER_PRIVATE_DATA             *Private;\r
 \r
   BlockIo = NULL;\r
 \r
@@ -354,14 +354,15 @@ UnregisterNvmeNamespace (
     return Status;\r
   }\r
 \r
-  Device = NVME_DEVICE_PRIVATE_DATA_FROM_BLOCK_IO (BlockIo);\r
+  Device  = NVME_DEVICE_PRIVATE_DATA_FROM_BLOCK_IO (BlockIo);\r
+  Private = Device->Controller;\r
 \r
   //\r
   // Close the child handle\r
   //\r
   gBS->CloseProtocol (\r
          Controller,\r
-         &gEfiPciIoProtocolGuid,\r
+         &gEfiNvmExpressPassThruProtocolGuid,\r
          This->DriverBindingHandle,\r
          Handle\r
          );\r
@@ -384,8 +385,8 @@ UnregisterNvmeNamespace (
   if (EFI_ERROR (Status)) {\r
     gBS->OpenProtocol (\r
            Controller,\r
-           &gEfiPciIoProtocolGuid,\r
-           (VOID **) &PciIo,\r
+           &gEfiNvmExpressPassThruProtocolGuid,\r
+           (VOID **) &Private->Passthru,\r
            This->DriverBindingHandle,\r
            Handle,\r
            EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
@@ -844,22 +845,24 @@ NvmExpressDriverBindingStop (
   BOOLEAN                             AllChildrenStopped;\r
   UINTN                               Index;\r
   NVME_CONTROLLER_PRIVATE_DATA        *Private;\r
+  EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL  *PassThru;\r
 \r
   if (NumberOfChildren == 0) {\r
     Status = gBS->OpenProtocol (\r
                     Controller,\r
-                    &gEfiCallerIdGuid,\r
-                    (VOID **) &Private,\r
+                    &gEfiNvmExpressPassThruProtocolGuid,\r
+                    (VOID **) &PassThru,\r
                     This->DriverBindingHandle,\r
                     Controller,\r
                     EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                     );\r
 \r
     if (!EFI_ERROR (Status)) {\r
+      Private = NVME_CONTROLLER_PRIVATE_DATA_FROM_PASS_THRU (PassThru);\r
       gBS->UninstallMultipleProtocolInterfaces (\r
             Controller,\r
-            &gEfiCallerIdGuid,\r
-            Private,\r
+            &gEfiNvmExpressPassThruProtocolGuid,\r
+            PassThru,\r
             NULL\r
             );\r
 \r
@@ -940,7 +943,7 @@ NvmExpressUnload (
   DeviceHandleBuffer = NULL;\r
   Status = gBS->LocateHandleBuffer (\r
                   ByProtocol,\r
-                  &gEfiCallerIdGuid,\r
+                  &gEfiNvmExpressPassThruProtocolGuid,\r
                   NULL,\r
                   &DeviceHandleCount,\r
                   &DeviceHandleBuffer\r