From beeeb22cd5ca38444da3f11cdf83b38244ddee5c Mon Sep 17 00:00:00 2001 From: Tian Feng Date: Tue, 16 Jun 2015 01:03:50 +0000 Subject: MdeModulePkg/NvmExpressDxe: Open NVME_PASS_THRU with BY_CHILD attr 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 Reviewed-by: Star Zeng 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 | 27 ++++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c') diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c index 99f89f1d45..d107d96387 100644 --- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c +++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c @@ -213,8 +213,8 @@ EnumerateNvmeDevNamespace ( } gBS->OpenProtocol ( Private->ControllerHandle, - &gEfiPciIoProtocolGuid, - (VOID **) &Private->PciIo, + &gEfiNvmExpressPassThruProtocolGuid, + (VOID **) &Private->Passthru, Private->DriverBindingHandle, Device->DeviceHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -336,9 +336,9 @@ UnregisterNvmeNamespace ( ) { EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; EFI_BLOCK_IO_PROTOCOL *BlockIo; NVME_DEVICE_PRIVATE_DATA *Device; + NVME_CONTROLLER_PRIVATE_DATA *Private; BlockIo = NULL; @@ -354,14 +354,15 @@ UnregisterNvmeNamespace ( return Status; } - Device = NVME_DEVICE_PRIVATE_DATA_FROM_BLOCK_IO (BlockIo); + Device = NVME_DEVICE_PRIVATE_DATA_FROM_BLOCK_IO (BlockIo); + Private = Device->Controller; // // Close the child handle // gBS->CloseProtocol ( Controller, - &gEfiPciIoProtocolGuid, + &gEfiNvmExpressPassThruProtocolGuid, This->DriverBindingHandle, Handle ); @@ -384,8 +385,8 @@ UnregisterNvmeNamespace ( if (EFI_ERROR (Status)) { gBS->OpenProtocol ( Controller, - &gEfiPciIoProtocolGuid, - (VOID **) &PciIo, + &gEfiNvmExpressPassThruProtocolGuid, + (VOID **) &Private->Passthru, This->DriverBindingHandle, Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -844,22 +845,24 @@ NvmExpressDriverBindingStop ( BOOLEAN AllChildrenStopped; UINTN Index; NVME_CONTROLLER_PRIVATE_DATA *Private; + EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *PassThru; if (NumberOfChildren == 0) { Status = gBS->OpenProtocol ( Controller, - &gEfiCallerIdGuid, - (VOID **) &Private, + &gEfiNvmExpressPassThruProtocolGuid, + (VOID **) &PassThru, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (!EFI_ERROR (Status)) { + Private = NVME_CONTROLLER_PRIVATE_DATA_FROM_PASS_THRU (PassThru); gBS->UninstallMultipleProtocolInterfaces ( Controller, - &gEfiCallerIdGuid, - Private, + &gEfiNvmExpressPassThruProtocolGuid, + PassThru, NULL ); @@ -940,7 +943,7 @@ NvmExpressUnload ( DeviceHandleBuffer = NULL; Status = gBS->LocateHandleBuffer ( ByProtocol, - &gEfiCallerIdGuid, + &gEfiNvmExpressPassThruProtocolGuid, NULL, &DeviceHandleCount, &DeviceHandleBuffer -- cgit v1.2.3