MdeModulePkg/PciBusDxe: Install PciEnumerationComplete after PciIo

Per PI spec, the PciEnumerationComplete protocol installation
should be after PciIo installation.
Today's implementation installs the PciEnumerationComplete
after hardware enumeration is completed, but before PciIo
installation.
The change corrects the spec/implementation gap.
The change also benefits certain implementation that depends on
the PciIo handle in PciEnumerationComplete callback.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
Ruiyu Ni 2018-01-22 14:23:00 +08:00
parent 2632981783
commit 42e8bc7d16
2 changed files with 13 additions and 12 deletions

View File

@ -360,8 +360,19 @@ PciBusDriverBindingStart (
// //
StartPciDevices (Controller); StartPciDevices (Controller);
if (gFullEnumeration) {
gFullEnumeration = FALSE; gFullEnumeration = FALSE;
return EFI_SUCCESS;
Status = gBS->InstallProtocolInterface (
&PciRootBridgeIo->ParentHandle,
&gEfiPciEnumerationCompleteProtocolGuid,
EFI_NATIVE_INTERFACE,
NULL
);
ASSERT_EFI_ERROR (Status);
}
return Status;
} }
/** /**

View File

@ -104,16 +104,6 @@ PciEnumerator (
return Status; return Status;
} }
Status = gBS->InstallProtocolInterface (
&HostBridgeHandle,
&gEfiPciEnumerationCompleteProtocolGuid,
EFI_NATIVE_INTERFACE,
NULL
);
if (EFI_ERROR (Status)) {
return Status;
}
return EFI_SUCCESS; return EFI_SUCCESS;
} }