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 <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
This commit is contained in:
parent
1463ce18ca
commit
beeeb22cd5
@ -213,8 +213,8 @@ EnumerateNvmeDevNamespace (
|
|||||||
}
|
}
|
||||||
gBS->OpenProtocol (
|
gBS->OpenProtocol (
|
||||||
Private->ControllerHandle,
|
Private->ControllerHandle,
|
||||||
&gEfiPciIoProtocolGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
(VOID **) &Private->PciIo,
|
(VOID **) &Private->Passthru,
|
||||||
Private->DriverBindingHandle,
|
Private->DriverBindingHandle,
|
||||||
Device->DeviceHandle,
|
Device->DeviceHandle,
|
||||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||||
@ -336,9 +336,9 @@ UnregisterNvmeNamespace (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
|
||||||
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
||||||
NVME_DEVICE_PRIVATE_DATA *Device;
|
NVME_DEVICE_PRIVATE_DATA *Device;
|
||||||
|
NVME_CONTROLLER_PRIVATE_DATA *Private;
|
||||||
|
|
||||||
BlockIo = NULL;
|
BlockIo = NULL;
|
||||||
|
|
||||||
@ -355,13 +355,14 @@ UnregisterNvmeNamespace (
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
// Close the child handle
|
||||||
//
|
//
|
||||||
gBS->CloseProtocol (
|
gBS->CloseProtocol (
|
||||||
Controller,
|
Controller,
|
||||||
&gEfiPciIoProtocolGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
This->DriverBindingHandle,
|
This->DriverBindingHandle,
|
||||||
Handle
|
Handle
|
||||||
);
|
);
|
||||||
@ -384,8 +385,8 @@ UnregisterNvmeNamespace (
|
|||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
gBS->OpenProtocol (
|
gBS->OpenProtocol (
|
||||||
Controller,
|
Controller,
|
||||||
&gEfiPciIoProtocolGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
(VOID **) &PciIo,
|
(VOID **) &Private->Passthru,
|
||||||
This->DriverBindingHandle,
|
This->DriverBindingHandle,
|
||||||
Handle,
|
Handle,
|
||||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||||
@ -844,22 +845,24 @@ NvmExpressDriverBindingStop (
|
|||||||
BOOLEAN AllChildrenStopped;
|
BOOLEAN AllChildrenStopped;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
NVME_CONTROLLER_PRIVATE_DATA *Private;
|
NVME_CONTROLLER_PRIVATE_DATA *Private;
|
||||||
|
EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *PassThru;
|
||||||
|
|
||||||
if (NumberOfChildren == 0) {
|
if (NumberOfChildren == 0) {
|
||||||
Status = gBS->OpenProtocol (
|
Status = gBS->OpenProtocol (
|
||||||
Controller,
|
Controller,
|
||||||
&gEfiCallerIdGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
(VOID **) &Private,
|
(VOID **) &PassThru,
|
||||||
This->DriverBindingHandle,
|
This->DriverBindingHandle,
|
||||||
Controller,
|
Controller,
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!EFI_ERROR (Status)) {
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Private = NVME_CONTROLLER_PRIVATE_DATA_FROM_PASS_THRU (PassThru);
|
||||||
gBS->UninstallMultipleProtocolInterfaces (
|
gBS->UninstallMultipleProtocolInterfaces (
|
||||||
Controller,
|
Controller,
|
||||||
&gEfiCallerIdGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
Private,
|
PassThru,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -940,7 +943,7 @@ NvmExpressUnload (
|
|||||||
DeviceHandleBuffer = NULL;
|
DeviceHandleBuffer = NULL;
|
||||||
Status = gBS->LocateHandleBuffer (
|
Status = gBS->LocateHandleBuffer (
|
||||||
ByProtocol,
|
ByProtocol,
|
||||||
&gEfiCallerIdGuid,
|
&gEfiNvmExpressPassThruProtocolGuid,
|
||||||
NULL,
|
NULL,
|
||||||
&DeviceHandleCount,
|
&DeviceHandleCount,
|
||||||
&DeviceHandleBuffer
|
&DeviceHandleBuffer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user