ShellPkg/mm: Fix mm to support multiple root bridge platform

In multiple root bridge platforms, different root bridges may
share the same segment but occupy different range of buses,
or may occupy different segments.
The fix is to find the correct root bridge IO instance by
comparing not only the segment but also the bus ranges.
It tries to access the MMIO and IO in the following order:
PciRootBridgeIo, CpuIo and direct IO.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19181 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ruiyu Ni
2015-12-10 04:18:35 +00:00
committed by niruiyu
parent 25e34a2df4
commit 304316f430
5 changed files with 475 additions and 476 deletions

View File

@ -17,7 +17,7 @@
BASE_NAME = UefiShellDebug1CommandsLib
FILE_GUID = 90330D51-A99B-4cc8-A2EB-AE22542A3F45
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
VERSION_STRING = 1.1
LIBRARY_CLASS = NULL|UEFI_APPLICATION UEFI_DRIVER
CONSTRUCTOR = UefiShellDebug1CommandsLibConstructor
DESTRUCTOR = UefiShellDebug1CommandsLibDestructor
@ -106,6 +106,7 @@
MemoryAllocationLib
BaseLib
BaseMemoryLib
IoLib
DebugLib
ShellCommandLib
ShellLib
@ -125,6 +126,7 @@
gEfiPciRootBridgeIoProtocolGuid ## CONSUMES
gEfiBlockIoProtocolGuid ## CONSUMES
gEfiSimplePointerProtocolGuid ## CONSUMES
gEfiCpuIo2ProtocolGuid ## CONSUMES
[Guids]
gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## GUID