Discussion:
[edk2] [patch] MdeModulePkg/NvmExpressDxe: Open NVME_PASS_THRU with BY_CHILD attr
Tian Feng
2015-06-11 05:44:27 UTC
Permalink
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 <***@intel.com>
---
MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c | 27 ++++++++++++++-----------
1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c
index 99f89f1..d107d96 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
--
1.9.5.msysgit.0


------------------------------------------------------------------------------
Zeng, Star
2015-06-15 13:14:20 UTC
Permalink
Reviewed-by: Star Zeng <***@intel.com>

-----Original Message-----
From: Tian, Feng
Sent: Thursday, June 11, 2015 1:44 PM
To: Zeng, Star
Cc: edk2-***@lists.sourceforge.net
Subject: [patch] 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 <***@intel.com>
---
MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c | 27 ++++++++++++++-----------
1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c
index 99f89f1..d107d96 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
--
1.9.5.msysgit.0


------------------------------------------------------------------------------
Loading...