public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
@ 2018-04-11 10:30 Steve Capper
  2018-04-11 12:25 ` Laszlo Ersek
  0 siblings, 1 reply; 9+ messages in thread
From: Steve Capper @ 2018-04-11 10:30 UTC (permalink / raw)
  To: edk2-devel; +Cc: Leif Lindholm, Ard Biesheuvel, thomas.abraham, Nariman Poushin

[-- Attachment #1: Type: text/plain, Size: 1034 bytes --]

Hello,
I am trying to debug a boot problem for a recent build of EDK2 in an
Arm FVP model.

I built EDK2 from the following branches:
Edk2: a146c532c754106431b063fec9985a838afd82be
Edk2-platforms: e74f53df8b18e4aed0c9df0942ce0c30f78a68e2

Toolchain: Debian Stretch latest (though I have also tried Linaro’s
GCC 5 latest).

Build command:
GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -b
DEBUG -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc

The boot log can be found in the attached file. I *think* this is due
to the Cpu Arch protocol not actually being ready when
CoreConvertSpace is called by the SetMemoryAttributes from the
NorFlash code.

I have found that this code path fails:
https://github.com/tianocore/edk2/blob/a146c532c754106431b063fec9985a838afd82be/MdeModulePkg/Core/Dxe/Gcd/Gcd.c#L893

The only modification I have made is to edk2-platforms to get more
debug output (PcdDebugPrintErrorLevel).

Unfortunately, I'm not sure how to fix this?

Cheers,
--
Steve

[-- Attachment #2: boot.txt --]
[-- Type: text/plain, Size: 95412 bytes --]

NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v1.4(release):works-for-steve-328-gd1156e0b
NOTICE:  BL1: Built : 16:11:18, Apr  6 2018
NOTICE:  BL1: Booting BL2
NOTICE:  BL2: v1.4(release):works-for-steve-328-gd1156e0b
NOTICE:  BL2: Built : 16:11:21, Apr  6 2018
NOTICE:  BL1: Booting BL31
NOTICE:  BL31: v1.4(release):works-for-steve-328-gd1156e0b
NOTICE:  BL31: Built : 16:11:27, Apr  6 2018
UEFI firmware (version  built at 10:37:57 on Apr 11 2018)
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll 0x88000800
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll 0xFE6DD000
Loading DxeCore at 0x00FE6DC000 EntryPoint=0x00FE6DD000
Promote the memory resource
CoreInitializeMemoryServices:
  BaseAddress - 0x8C000000 Length - 0x6F000000 MinimalMemorySizeNeeded - 0x5065000
AddRange: 8C000000-FAFFFFFF to 7
ConvertRange: FAFFF000-FAFFFFFF to type 4
AddRange: FAFFF000-FAFFFFFF to 4
ConvertRange: FAFA0000-FAFEFFFF to type 6
AddRange: FAFA0000-FAFEFFFF to 6
ConvertRange: FAF50000-FAF9FFFF to type 5
AddRange: FAF50000-FAF9FFFF to 5
ConvertRange: FADC0000-FAF4FFFF to type 3
AddRange: FADC0000-FAF4FFFF to 3
ConvertRange: F5FA0000-FADBFFFF to type 4
AddRange: F5FA0000-FADBFFFF to 4
ConvertRange: F5F8C000-F5F9FFFF to type 1
AddRange: F5F8C000-F5F9FFFF to 1
ConvertRange: FAFA0000-FAFEFFFF to type 7
AddRange: FAFA0000-FAFEFFFF to 7
ConvertRange: FAF50000-FAF9FFFF to type 7
AddRange: FAF50000-FAF9FFFF to 7
ConvertRange: FADC0000-FAF4FFFF to type 7
AddRange: FADC0000-FAF4FFFF to 7
ConvertRange: F5FA0000-FADBFFFF to type 7
AddRange: F5FA0000-FADBFFFF to 7
ConvertRange: F5F8C000-F5F9FFFF to type 7
AddRange: F5F8C000-F5F9FFFF to 7
ConvertRange: FAFE0000-FAFEFFFF to type 6
AddRange: FAFE0000-FAFEFFFF to 6
AllocatePoolI: Type 6, Addr FAFE0018 (len 78) 160
AllocatePoolI: Type 6, Addr FAFEFF18 (len 88) 336
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B FE701250
ConvertRange: FADBF000-FADBFFFF to type 4
AddRange: FADBF000-FADBFFFF to 4
AllocatePoolI: Type 4, Addr FADBF018 (len 48) 112
AllocatePoolI: Type 4, Addr FADBFF18 (len 58) 240
AllocatePoolI: Type 4, Addr FADBFF98 (len 38) 336
ProtectUefiImageCommon - 0xFE701250
  - 0x00000000FE6DC000 - 0x0000000000041000
AllocatePoolI: Type 4, Addr FADBFB18 (len 50) 456
AllocatePoolI: Type 4, Addr FADBFE18 (len 38) 552
GCD:Initial GCD Memory Space Map
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBFE18 (len 38) 456
AllocatePoolI: Type 4, Addr FADBFE18 (len 50) 576
AllocatePoolI: Type 4, Addr FADBFE98 (len 28) 656
GCD:Initial GCD I/O Space Map
GCDIoType  Range                            
========== =================================
NonExist   0000000000000000-0000000000000000 

FreePool: FADBFE98 (len 28) 576
GCD:AddMemorySpace(Base=0000000880000000,Length=0000000080000000)
  GcdMemoryType   = SystemMem
  Capabilities    = 000000000000000E
AllocatePoolI: Type 4, Addr FADBFE98 (len 50) 696
AllocatePoolI: Type 4, Addr FADBFB98 (len 50) 816
  Status = Success
AllocatePoolI: Type 4, Addr FADBFC18 (len A8) 1,024
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBFC18 (len A8) 816
GCD:AddMemorySpace(Base=0000000080000000,Length=0000000008000000)
  GcdMemoryType   = SystemMem
  Capabilities    = 000000000000000E
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 936
AllocatePoolI: Type 4, Addr FADBFD98 (len 50) 1,056
  Status = Success
AllocatePoolI: Type 4, Addr FADBF098 (len 118) 1,376
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
NonExist   0000000088000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF098 (len 118) 1,056
GCD:AddMemorySpace(Base=0000000088000000,Length=0000000004000000)
  GcdMemoryType   = SystemMem
  Capabilities    = 000000000000000E
AllocatePoolI: Type 4, Addr FADBFC18 (len 50) 1,176
AllocatePoolI: Type 4, Addr FADBFC98 (len 50) 1,296
FreePool: FADBFC98 (len 50) 1,176
FreePool: FADBFB98 (len 50) 1,056
  Status = Success
AllocatePoolI: Type 4, Addr FADBF098 (len 118) 1,376
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-000000008BFFFFFF 800000000000000E 0000000000000000 
NonExist   000000008C000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF098 (len 118) 1,056
GCD:AddMemorySpace(Base=000000008C000000,Length=0000000073000000)
  GcdMemoryType   = SystemMem
  Capabilities    = 000000000000000E
AllocatePoolI: Type 4, Addr FADBFB98 (len 50) 1,176
AllocatePoolI: Type 4, Addr FADBFC98 (len 50) 1,296
FreePool: FADBFC98 (len 50) 1,176
FreePool: FADBFD18 (len 50) 1,056
  Status = Success
AllocatePoolI: Type 4, Addr FADBF098 (len 118) 1,376
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF098 (len 118) 1,056
GCD:AllocateMemorySpace(Base=000000008C000000,Length=000000006F000000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 1,176
AllocatePoolI: Type 4, Addr FADBFC98 (len 50) 1,296
  Status = Success  (BaseAddress = 000000008C000000)
AllocatePoolI: Type 4, Addr FADBF898 (len 188) 1,728
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-000000008BFFFFFF 800000000000000E 0000000000000000 
SystemMem  000000008C000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF898 (len 188) 1,296
GCD:AllocateMemorySpace(Base=00000000FEFFB000,Length=0000000000001000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF098 (len 50) 1,416
AllocatePoolI: Type 4, Addr FADBF118 (len 50) 1,536
  Status = Success  (BaseAddress = 00000000FEFFB000)
AllocatePoolI: Type 4, Addr FADBF898 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-000000008BFFFFFF 800000000000000E 0000000000000000 
SystemMem  000000008C000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFFAFFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFFB000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF898 (len 1F8) 1,536
AddRange: FEFFB000-FEFFBFFF to 4
GCD:AllocateMemorySpace(Base=0000000088000000,Length=0000000004000000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBF898 (len 50) 1,776
FreePool: FADBF198 (len 50) 1,656
FreePool: FADBFC18 (len 50) 1,536
  Status = Success  (BaseAddress = 0000000088000000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFFAFFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFFB000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1F8) 1,536
AddRange: 88000000-8BFFFFFF to 4
GCD:AllocateMemorySpace(Base=00000000FEFFA000,Length=0000000000001000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFC18 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,776
FreePool: FADBFC18 (len 50) 1,656
FreePool: FADBFD18 (len 50) 1,536
  Status = Success  (BaseAddress = 00000000FEFFA000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF9FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFFA000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1F8) 1,536
AddRange: FEFFA000-FEFFAFFF to 4
GCD:AllocateMemorySpace(Base=00000000FEFF9000,Length=0000000000001000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBFC18 (len 50) 1,776
FreePool: FADBFD18 (len 50) 1,656
FreePool: FADBF118 (len 50) 1,536
  Status = Success  (BaseAddress = 00000000FEFF9000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF8FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFF9000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1F8) 1,536
AddRange: FEFF9000-FEFF9FFF to 4
GCD:AllocateMemorySpace(Base=00000000FEFF8000,Length=0000000000001000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF118 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 1,776
FreePool: FADBF118 (len 50) 1,656
FreePool: FADBF198 (len 50) 1,536
  Status = Success  (BaseAddress = 00000000FEFF8000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF7FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFF8000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1F8) 1,536
AddRange: FEFF8000-FEFF8FFF to 4
GCD:AllocateMemorySpace(Base=00000000FEFF7000,Length=0000000000001000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBF118 (len 50) 1,776
FreePool: FADBF198 (len 50) 1,656
FreePool: FADBFC18 (len 50) 1,536
  Status = Success  (BaseAddress = 00000000FEFF7000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1F8) 2,080
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF6FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFF7000-00000000FEFFBFFF 800000000000000E 0000000000000000*
SystemMem  00000000FEFFC000-00000000FEFFFFFF 800000000000000E 0000000000000000 
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1F8) 1,536
AddRange: FEFF7000-FEFF7FFF to 4
GCD:AllocateMemorySpace(Base=00000000FEFFC000,Length=0000000000004000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFC18 (len 50) 1,656
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,776
FreePool: FADBFC18 (len 50) 1,656
FreePool: FADBF198 (len 50) 1,536
FreePool: FADBFD18 (len 50) 1,416
  Status = Success  (BaseAddress = 00000000FEFFC000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF6FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFF7000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AddRange: FEFFC000-FEFFFFFF to 4
GCD:AllocateMemorySpace(Base=0000000088000000,Length=0000000000280000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = MMIO     
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
  Status = Not Found
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFF6FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFF7000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
GCD:AllocateMemorySpace(Base=00000000FEFE7000,Length=0000000000010000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 1,536
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,656
FreePool: FADBFD18 (len 50) 1,536
FreePool: FADBF098 (len 50) 1,416
  Status = Success  (BaseAddress = 00000000FEFE7000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEFE6FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEFE7000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AddRange: FEFE7000-FEFF6FFF to 4
GCD:AllocateMemorySpace(Base=00000000FEB82000,Length=0000000000465000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF098 (len 50) 1,536
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 1,656
FreePool: FADBF098 (len 50) 1,536
FreePool: FADBF118 (len 50) 1,416
  Status = Success  (BaseAddress = 00000000FEB82000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FEB81FFF 800000000000000E 0000000000000000 
SystemMem  00000000FEB82000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AddRange: FEB82000-FEFE6FFF to 4
GCD:AllocateMemorySpace(Base=00000000FE71D000,Length=0000000000465000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF118 (len 50) 1,536
AllocatePoolI: Type 4, Addr FADBF098 (len 50) 1,656
FreePool: FADBF118 (len 50) 1,536
FreePool: FADBF198 (len 50) 1,416
  Status = Success  (BaseAddress = 00000000FE71D000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE71CFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE71D000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AddRange: FE71D000-FEB81FFF to 4
GCD:AllocateMemorySpace(Base=00000000FE71D000,Length=0000000000463240)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = MMIO     
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
  Status = Not Found
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE71CFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE71D000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
GCD:AllocateMemorySpace(Base=00000000FE6DC000,Length=0000000000041000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 1,536
AllocatePoolI: Type 4, Addr FADBF118 (len 50) 1,656
FreePool: FADBF198 (len 50) 1,536
FreePool: FADBFD18 (len 50) 1,416
  Status = Success  (BaseAddress = 00000000FE6DC000)
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE6DBFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE6DC000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AddRange: FE6DC000-FE71CFFF to 3
GCD:AllocateMemorySpace(Base=00000000FE6DC000,Length=0000000000041000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
  Status = Not Found
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-0000000087FFFFFF 800000000000000E 0000000000000000 
SystemMem  0000000088000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE6DBFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE6DC000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF218 (len 1C0) 1,416
AllocatePoolI: Type 4, Addr FADBF218 (len 1C0) 1,904
AddRange: 80000000-87FFFFFF to 7
GCD:AllocateMemorySpace(Base=0000000080000000,Length=0000000008000000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFD18 (len 50) 2,024
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 2,144
FreePool: FADBFD18 (len 50) 2,024
FreePool: FADBF198 (len 50) 1,904
FreePool: FADBFC98 (len 50) 1,784
  Status = Success  (BaseAddress = 0000000080000000)
AllocatePoolI: Type 4, Addr FADBF498 (len 188) 2,216
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE6DBFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE6DC000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000 
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF498 (len 188) 1,784
AddRange: 880000000-8FFFFFFFF to 7
GCD:AllocateMemorySpace(Base=0000000880000000,Length=0000000080000000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBFC98 (len 50) 1,904
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 2,024
FreePool: FADBFC98 (len 50) 1,904
FreePool: FADBF198 (len 50) 1,784
  Status = Success  (BaseAddress = 0000000880000000)
AllocatePoolI: Type 4, Addr FADBF498 (len 188) 2,216
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FAFFFFFF 800000000000000E 0000000000000000*
SystemMem  00000000FB000000-00000000FE6DBFFF 800000000000000E 0000000000000000 
SystemMem  00000000FE6DC000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000*
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF498 (len 188) 1,784
ConvertRange: FADBD000-FADBEFFF to type 4
AddRange: FADBD000-FADBEFFF to 4
AllocatePoolI: Type 4, Addr FADBD018 (len FE0) 5,888
AddRange: FB000000-FE6DBFFF to 7
GCD:AllocateMemorySpace(Base=00000000FB000000,Length=00000000036DC000)
  GcdAllocateType = AtAddress                
  GcdMemoryType   = SystemMem
  Alignment       = 0000000000000001
  ImageHandle     = FADBFF98
  DeviceHandle    = 0
AllocatePoolI: Type 4, Addr FADBF198 (len 50) 6,008
AllocatePoolI: Type 4, Addr FADBFC98 (len 50) 6,128
FreePool: FADBF198 (len 50) 6,008
FreePool: FADBFC98 (len 50) 5,888
FreePool: FADBF898 (len 50) 5,768
FreePool: FADBF098 (len 50) 5,648
  Status = Success  (BaseAddress = 00000000FB000000)
AllocatePoolI: Type 4, Addr FADBF718 (len 118) 5,968
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000*
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FADBF718 (len 118) 5,648
FreePool: FADBF218 (len 1C0) 5,160
AllocatePoolI: Type 4, Addr FADBF718 (len 100) 5,456
AllocatePoolI: Type 4, Addr FADBF918 (len 80) 5,624
AllocatePoolI: Type 4, Addr FADBF218 (len 80) 5,792
ConvertRange: FADAC000-FADBCFFF to type 4
AddRange: FADAC000-FADBCFFF to 4
AllocatePoolI: Type 4, Addr FADAC018 (len 10028) 71,408
InstallProtocolInterface: 76B6BDFA-2ACD-4462-9E3F-CB58C969D937 FE702478
AllocatePoolI: Type 4, Addr FADBFA18 (len 48) 71,520
AllocatePoolI: Type 4, Addr FADBF098 (len 58) 71,648
AllocatePoolI: Type 4, Addr FADBF898 (len 38) 71,744
InstallProtocolInterface: 1EA81BEC-F01A-4D98-A201-4A61CE2FC022 FE702460
AllocatePoolI: Type 4, Addr FADBFC98 (len 48) 71,856
AllocatePoolI: Type 4, Addr FADBF198 (len 58) 71,984
AllocatePoolI: Type 4, Addr FADBF318 (len B8) 72,208
AllocatePoolI: Type 6, Addr FAFEFB18 (len 180) 760
AllocatePoolI: Type 4, Addr FADBF418 (len 10) 72,264
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll 0xFE6DD000
ConvertRange: FA9AB000-FADABFFF to type 4
AddRange: FA9AB000-FADABFFF to 4
ConvertRange: FA9AB000-FABFFFFF to type 7
AddRange: FA9AB000-FABFFFFF to 7
ConvertRange: FAC01000-FADABFFF to type 7
AddRange: FAC01000-FADABFFF to 7
ConvertRange: FADAA000-FADABFFF to type 4
AddRange: FADAA000-FADABFFF to 4
AllocatePoolI: Type 4, Addr FADAA018 (len 1000) 76,400
AllocatePoolI: Type 4, Addr FADBFD18 (len 18) 76,464
HOBLIST address in DXE = 0xFADBD018
Memory Allocation 0x00000004 0xFEFFB000 - 0xFEFFBFFF
Memory Allocation 0x00000004 0x88000000 - 0x8BFFFFFF
Memory Allocation 0x00000004 0xFEFFA000 - 0xFEFFAFFF
Memory Allocation 0x00000004 0xFEFF9000 - 0xFEFF9FFF
Memory Allocation 0x00000004 0xFEFF8000 - 0xFEFF8FFF
Memory Allocation 0x00000004 0xFEFF7000 - 0xFEFF7FFF
Memory Allocation 0x00000004 0xFEFFC000 - 0xFEFFFFFF
Memory Allocation 0x00000004 0xFEFE7000 - 0xFEFF6FFF
Memory Allocation 0x00000004 0xFEB82000 - 0xFEFE6FFF
Memory Allocation 0x00000004 0xFE71D000 - 0xFEB81FFF
Memory Allocation 0x00000003 0xFE6DC000 - 0xFE71CFFF
Memory Allocation 0x00000003 0xFE6DC000 - 0xFE71CFFF
FV Hob            0x88000000 - 0x8827FFFF
FV Hob            0xFE71D000 - 0xFEB8023F
FV2 Hob           0xFE71D000 - 0xFEB8023F
                  87940482-FC81-41C3-87E6-399CF85AC8A0 - 9E21FD93-9C72-4C15-8C4B-E77F1DB2D792
AllocatePoolI: Type 4, Addr FADBF498 (len B8) 76,688
AllocatePoolI: Type 4, Addr FADBF598 (len B8) 76,912
ConvertRange: FADA9000-FADA9FFF to type 4
AddRange: FADA9000-FADA9FFF to 4
AllocatePoolI: Type 4, Addr FADA9018 (len B8) 77,136
AllocatePoolI: Type 4, Addr FADA9B98 (len B8) 77,360
AllocatePoolI: Type 4, Addr FADA9C98 (len B8) 77,584
AllocatePoolI: Type 4, Addr FADA9F18 (len 48) 77,696
AllocatePoolI: Type 4, Addr FADA9F98 (len 30) 77,784
InstallProtocolInterface: D8117CFE-94A6-11D4-9A3A-0090273FC14D FE701000
AllocatePoolI: Type 4, Addr FADBF698 (len 48) 77,896
AllocatePoolI: Type 4, Addr FADBFC18 (len 58) 78,024
AllocatePoolI: Type 4, Addr FADBFA98 (len 38) 78,120
AllocatePoolI: Type 4, Addr FADA9D98 (len B8) 78,344
AllocatePoolI: Type 4, Addr FADA9E98 (len 48) 78,456
AllocatePoolI: Type 4, Addr FADA9118 (len 30) 78,544
AllocatePoolI: Type 4, Addr FADA9A98 (len B8) 78,768
AllocatePoolI: Type 4, Addr FADA9818 (len 30) 78,856
AllocatePoolI: Type 4, Addr FADA9898 (len B8) 79,080
AllocatePoolI: Type 4, Addr FADA9998 (len 48) 79,192
AllocatePoolI: Type 4, Addr FADA9A18 (len 30) 79,280
AllocatePoolI: Type 4, Addr FADA9198 (len B8) 79,504
AllocatePoolI: Type 4, Addr FADA9698 (len 48) 79,616
AllocatePoolI: Type 4, Addr FADA9718 (len 30) 79,704
AllocatePoolI: Type 4, Addr FADA9298 (len B8) 79,928
AllocatePoolI: Type 4, Addr FADA9618 (len 48) 80,040
AllocatePoolI: Type 4, Addr FADA9798 (len 30) 80,128
AllocatePoolI: Type 4, Addr FADA9398 (len B8) 80,352
AllocatePoolI: Type 4, Addr FADA9498 (len 48) 80,464
AllocatePoolI: Type 4, Addr FADA9518 (len 30) 80,552
ConvertRange: FADA8000-FADA8FFF to type 4
AddRange: FADA8000-FADA8FFF to 4
AllocatePoolI: Type 4, Addr FADA8018 (len B8) 80,776
AllocatePoolI: Type 4, Addr FADA8F98 (len 48) 80,888
AllocatePoolI: Type 4, Addr FADA9598 (len 30) 80,976
AllocatePoolI: Type 4, Addr FADA8B98 (len B8) 81,200
AllocatePoolI: Type 4, Addr FADA8F18 (len 48) 81,312
AllocatePoolI: Type 4, Addr FADA8C98 (len 30) 81,400
AllocatePoolI: Type 4, Addr FADA8D18 (len B8) 81,624
AllocatePoolI: Type 4, Addr FADA8E18 (len 48) 81,736
AllocatePoolI: Type 4, Addr FADA8E98 (len 30) 81,824
AllocatePoolI: Type 4, Addr FADA8118 (len B8) 82,048
AllocatePoolI: Type 4, Addr FADA8B18 (len 48) 82,160
AllocatePoolI: Type 4, Addr FADA8898 (len 30) 82,248
AllocatePoolI: Type 4, Addr FADA8918 (len B8) 82,472
AllocatePoolI: Type 4, Addr FADA8A18 (len 48) 82,584
AllocatePoolI: Type 4, Addr FADA8A98 (len 30) 82,672
AllocatePoolI: Type 4, Addr FADA8218 (len B8) 82,896
AllocatePoolI: Type 4, Addr FADA8718 (len 48) 83,008
AllocatePoolI: Type 4, Addr FADA8798 (len 30) 83,096
AllocatePoolI: Type 4, Addr FADA8318 (len B8) 83,320
AllocatePoolI: Type 4, Addr FADA8698 (len 48) 83,432
AllocatePoolI: Type 4, Addr FADA8818 (len 30) 83,520
AllocatePoolI: Type 4, Addr FADA8418 (len B8) 83,744
AllocatePoolI: Type 4, Addr FADA8518 (len 48) 83,856
AllocatePoolI: Type 4, Addr FADA8598 (len 30) 83,944
ConvertRange: FADA7000-FADA7FFF to type 4
AddRange: FADA7000-FADA7FFF to 4
AllocatePoolI: Type 4, Addr FADA7018 (len B8) 84,168
AllocatePoolI: Type 4, Addr FADA7F98 (len 48) 84,280
AllocatePoolI: Type 4, Addr FADA8618 (len 30) 84,368
AllocatePoolI: Type 4, Addr FADA7B98 (len 80) 84,536
ConvertRange: FADA4000-FADA6FFF to type 4
AddRange: FADA4000-FADA6FFF to 4
AllocatePoolI: Type 4, Addr FADA4018 (len 2800) 94,816
AllocatePoolI: Type 4, Addr FADA7F18 (len 20) 94,888
InstallProtocolInterface: 8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 FADA7BB0
AllocatePoolI: Type 4, Addr FADA7C98 (len 48) 95,000
AllocatePoolI: Type 4, Addr FADA7E98 (len 58) 95,128
AllocatePoolI: Type 4, Addr FADA7D18 (len 38) 95,224
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FADA7F18
AllocatePoolI: Type 4, Addr FADA7D98 (len 48) 95,336
AllocatePoolI: Type 4, Addr FADA7E18 (len 58) 95,464
AllocatePoolI: Type 4, Addr FADA7118 (len 80) 95,632
ConvertRange: FAC8B000-FADA3FFF to type 4
AddRange: FAC8B000-FADA3FFF to 4
AllocatePoolI: Type 4, Addr FAC8B018 (len 118C90) 1,245,768
AllocatePoolI: Type 4, Addr FADA7B18 (len 18) 1,245,832
InstallProtocolInterface: 8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 FADA7130
AllocatePoolI: Type 4, Addr FADA7898 (len 58) 1,245,960
AllocatePoolI: Type 4, Addr FADA7A98 (len 38) 1,246,056
AllocatePoolI: Type 4, Addr FADA7918 (len 8) 1,246,104
AllocatePoolI: Type 4, Addr FADA7998 (len 30) 1,246,192
FreePool: FADA7918 (len 8) 1,246,144
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FADA7B18
AllocatePoolI: Type 4, Addr FADA7918 (len 58) 1,246,272
AllocatePoolI: Type 4, Addr FADA7218 (len B8) 1,246,496
AllocatePoolI: Type 4, Addr FADA7A18 (len 30) 1,246,584
AllocatePoolI: Type 4, Addr FADA7718 (len 30) 1,246,672
AllocatePoolI: Type 4, Addr FADA7798 (len 48) 1,246,784
AllocatePoolI: Type 4, Addr FADA7318 (len A0) 1,246,984
AllocatePoolI: Type 4, Addr FADA7698 (len 28) 1,247,064
AllocatePoolI: Type 4, Addr FADA7818 (len 28) 1,247,144
InstallProtocolInterface: 220E73B6-6BDB-4413-8405-B974B108619A FADA7330
AllocatePoolI: Type 4, Addr FADA7418 (len 48) 1,247,256
AllocatePoolI: Type 4, Addr FADA7618 (len 58) 1,247,384
AllocatePoolI: Type 4, Addr FADA7498 (len 30) 1,247,472
AllocatePoolI: Type 4, Addr FADA7518 (len 48) 1,247,584
ConvertRange: FAC8A000-FAC8AFFF to type 4
AddRange: FAC8A000-FAC8AFFF to 4
AllocatePoolI: Type 4, Addr FAC8A018 (len A0) 1,247,784
AllocatePoolI: Type 4, Addr FAC8AF98 (len 28) 1,247,864
AllocatePoolI: Type 4, Addr FADA7598 (len 28) 1,247,944
AllocatePoolI: Type 4, Addr FAC8AB98 (len 28) 1,248,024
AllocatePoolI: Type 4, Addr FAC8AE98 (len 28) 1,248,104
AllocatePoolI: Type 4, Addr FAC8AF18 (len 28) 1,248,184
AllocatePoolI: Type 4, Addr FAC8AC18 (len 28) 1,248,264
AllocatePoolI: Type 4, Addr FAC8AE18 (len 28) 1,248,344
AllocatePoolI: Type 4, Addr FAC8AC98 (len 28) 1,248,424
AllocatePoolI: Type 4, Addr FAC8AD18 (len 28) 1,248,504
AllocatePoolI: Type 4, Addr FAC8AD98 (len 28) 1,248,584
AllocatePoolI: Type 4, Addr FAC8A118 (len 28) 1,248,664
AllocatePoolI: Type 4, Addr FAC8AA98 (len 28) 1,248,744
AllocatePoolI: Type 4, Addr FAC8AB18 (len 28) 1,248,824
AllocatePoolI: Type 4, Addr FAC8A818 (len 28) 1,248,904
AllocatePoolI: Type 4, Addr FAC8AA18 (len 28) 1,248,984
AllocatePoolI: Type 4, Addr FAC8A898 (len 28) 1,249,064
AllocatePoolI: Type 4, Addr FAC8A918 (len 28) 1,249,144
AllocatePoolI: Type 4, Addr FAC8A998 (len 28) 1,249,224
AllocatePoolI: Type 4, Addr FAC8A198 (len 28) 1,249,304
AllocatePoolI: Type 4, Addr FAC8A798 (len 28) 1,249,384
AllocatePoolI: Type 4, Addr FAC8A618 (len 28) 1,249,464
AllocatePoolI: Type 4, Addr FAC8A698 (len 28) 1,249,544
AllocatePoolI: Type 4, Addr FAC8A718 (len 28) 1,249,624
AllocatePoolI: Type 4, Addr FAC8A218 (len 28) 1,249,704
AllocatePoolI: Type 4, Addr FAC8A518 (len 28) 1,249,784
AllocatePoolI: Type 4, Addr FAC8A598 (len 28) 1,249,864
AllocatePoolI: Type 4, Addr FAC8A298 (len 28) 1,249,944
AllocatePoolI: Type 4, Addr FAC8A498 (len 28) 1,250,024
AllocatePoolI: Type 4, Addr FAC8A318 (len 28) 1,250,104
AllocatePoolI: Type 4, Addr FAC8A398 (len 28) 1,250,184
AllocatePoolI: Type 4, Addr FAC8A418 (len 28) 1,250,264
ConvertRange: FAC89000-FAC89FFF to type 4
AddRange: FAC89000-FAC89FFF to 4
AllocatePoolI: Type 4, Addr FAC89018 (len 28) 1,250,344
AllocatePoolI: Type 4, Addr FAC89F18 (len 28) 1,250,424
AllocatePoolI: Type 4, Addr FAC89F98 (len 28) 1,250,504
AllocatePoolI: Type 4, Addr FAC89B18 (len 28) 1,250,584
AllocatePoolI: Type 4, Addr FAC89E18 (len 28) 1,250,664
AllocatePoolI: Type 4, Addr FAC89E98 (len 28) 1,250,744
AllocatePoolI: Type 4, Addr FAC89B98 (len 28) 1,250,824
AllocatePoolI: Type 4, Addr FAC89D98 (len 28) 1,250,904
AllocatePoolI: Type 4, Addr FAC89C18 (len 28) 1,250,984
AllocatePoolI: Type 4, Addr FAC89C98 (len 28) 1,251,064
AllocatePoolI: Type 4, Addr FAC89D18 (len 28) 1,251,144
InstallProtocolInterface: 220E73B6-6BDB-4413-8405-B974B108619A FAC8A030
AllocatePoolI: Type 4, Addr FAC89098 (len 58) 1,251,272
InstallProtocolInterface: FC1BCDB0-7D31-49AA-936A-A4600D9DD083 FE7013B0
AllocatePoolI: Type 4, Addr FAC89A18 (len 48) 1,251,384
AllocatePoolI: Type 4, Addr FAC89A98 (len 58) 1,251,512
AllocatePoolI: Type 4, Addr FAC89798 (len 38) 1,251,608
AllocatePoolI: Type 4, Addr FAC89818 (len B8) 1,251,832
AllocatePoolI: Type 4, Addr FAC89918 (len 30) 1,251,920
AllocatePoolI: Type 4, Addr FAC89998 (len 48) 1,252,032
FreePool: FAC89998 (len 48) 1,251,920
AllocatePoolI: Type 4, Addr FAC89998 (len 30) 1,252,008
AllocatePoolI: Type 4, Addr FAC89118 (len 30) 1,252,096
ConvertRange: FAB68000-FABFFFFF to type 4
AddRange: FAB68000-FABFFFFF to 4
AllocatePoolI: Type 4, Addr FAB68018 (len 97298) 1,871,296
AllocatePoolI: Type 4, Addr FAC89718 (len 48) 1,871,408
AllocatePoolI: Type 4, Addr FAC89598 (len 40) 1,871,512
AllocatePoolI: Type 4, Addr FAC89618 (len 18) 1,871,576
AllocatePoolI: Type 4, Addr FAC89198 (len B8) 1,871,800
AllocatePoolI: Type 4, Addr FAC89518 (len 48) 1,871,912
AllocatePoolI: Type 4, Addr FAC89698 (len 30) 1,872,000
AllocatePoolI: Type 4, Addr FAC89298 (len 48) 1,872,112
FreePool: FAC89298 (len 48) 1,872,000
AllocatePoolI: Type 4, Addr FAC89298 (len 30) 1,872,088
AllocatePoolI: Type 4, Addr FAC89498 (len 30) 1,872,176
AllocatePoolI: Type 4, Addr FAC89318 (len 30) 1,872,264
AllocatePoolI: Type 4, Addr FAC89398 (len 90) 1,872,448
ConvertRange: FAC88000-FAC88FFF to type 4
AddRange: FAC88000-FAC88FFF to 4
AllocatePoolI: Type 4, Addr FAC88018 (len 30) 1,872,536
ConvertRange: FAC7D000-FAC87FFF to type 4
AddRange: FAC7D000-FAC87FFF to 4
AllocatePoolI: Type 4, Addr FAC7D018 (len A0D0) 1,913,744
AllocatePoolI: Type 4, Addr FAC88F18 (len 48) 1,913,856
AllocatePoolI: Type 4, Addr FAC88F98 (len 40) 1,913,960
AllocatePoolI: Type 4, Addr FAC88B18 (len 40) 1,914,064
AllocatePoolI: Type 4, Addr FAC88E18 (len 8) 1,914,112
AllocatePoolI: Type 4, Addr FAC88B98 (len 90) 1,914,296
AllocatePoolI: Type 4, Addr FAC88E98 (len 30) 1,914,384
ConvertRange: FAC72000-FAC7CFFF to type 4
AddRange: FAC72000-FAC7CFFF to 4
AllocatePoolI: Type 4, Addr FAC72018 (len A050) 1,955,464
AllocatePoolI: Type 4, Addr FAC88C98 (len 48) 1,955,576
AllocatePoolI: Type 4, Addr FAC88D18 (len 40) 1,955,680
AllocatePoolI: Type 4, Addr FAC88D98 (len 18) 1,955,744
AllocatePoolI: Type 4, Addr FAC88098 (len 90) 1,955,928
AllocatePoolI: Type 4, Addr FAC88A98 (len 30) 1,956,016
ConvertRange: FAC31000-FAC71FFF to type 4
AddRange: FAC31000-FAC71FFF to 4
AllocatePoolI: Type 4, Addr FAC31018 (len 40050) 2,218,280
AllocatePoolI: Type 4, Addr FAC88818 (len 48) 2,218,392
AllocatePoolI: Type 4, Addr FAC88A18 (len 40) 2,218,496
AllocatePoolI: Type 4, Addr FAC88898 (len 18) 2,218,560
AllocatePoolI: Type 4, Addr FAC88918 (len 90) 2,218,744
AllocatePoolI: Type 4, Addr FAC88198 (len 30) 2,218,832
ConvertRange: FAC26000-FAC30FFF to type 4
AddRange: FAC26000-FAC30FFF to 4
AllocatePoolI: Type 4, Addr FAC26018 (len A058) 2,259,920
AllocatePoolI: Type 4, Addr FAC88798 (len 48) 2,260,032
AllocatePoolI: Type 4, Addr FAC88618 (len 40) 2,260,136
AllocatePoolI: Type 4, Addr FAC88698 (len 18) 2,260,200
AllocatePoolI: Type 4, Addr FAC88218 (len 90) 2,260,384
AllocatePoolI: Type 4, Addr FAC88598 (len 30) 2,260,472
ConvertRange: FAB27000-FAB67FFF to type 4
AddRange: FAB27000-FAB67FFF to 4
AllocatePoolI: Type 4, Addr FAB27018 (len 40070) 2,522,768
AllocatePoolI: Type 4, Addr FAC88718 (len 48) 2,522,880
AllocatePoolI: Type 4, Addr FAC88318 (len 40) 2,522,984
AllocatePoolI: Type 4, Addr FAC88518 (len 28) 2,523,064
AllocatePoolI: Type 4, Addr FAC88398 (len 90) 2,523,248
AllocatePoolI: Type 4, Addr FAC88498 (len 30) 2,523,336
ConvertRange: FAAE6000-FAB26FFF to type 4
AddRange: FAAE6000-FAB26FFF to 4
AllocatePoolI: Type 4, Addr FAAE6018 (len 40060) 2,785,616
ConvertRange: FAC25000-FAC25FFF to type 4
AddRange: FAC25000-FAC25FFF to 4
AllocatePoolI: Type 4, Addr FAC25018 (len 48) 2,785,728
AllocatePoolI: Type 4, Addr FAC25F18 (len 40) 2,785,832
AllocatePoolI: Type 4, Addr FAC25F98 (len 18) 2,785,896
AllocatePoolI: Type 4, Addr FAC25B18 (len 90) 2,786,080
AllocatePoolI: Type 4, Addr FAC25E98 (len 30) 2,786,168
ConvertRange: FAC1B000-FAC24FFF to type 4
AddRange: FAC1B000-FAC24FFF to 4
AllocatePoolI: Type 4, Addr FAC1B018 (len 9088) 2,823,208
AllocatePoolI: Type 4, Addr FAC25C18 (len 48) 2,823,320
AllocatePoolI: Type 4, Addr FAC25E18 (len 40) 2,823,424
AllocatePoolI: Type 4, Addr FAC25C98 (len 38) 2,823,520
AllocatePoolI: Type 4, Addr FAC25D18 (len 90) 2,823,704
AllocatePoolI: Type 4, Addr FAC25098 (len 30) 2,823,792
ConvertRange: FAAA5000-FAAE5FFF to type 4
AddRange: FAAA5000-FAAE5FFF to 4
AllocatePoolI: Type 4, Addr FAAA5018 (len 40098) 3,086,128
AllocatePoolI: Type 4, Addr FAC25A18 (len 48) 3,086,240
AllocatePoolI: Type 4, Addr FAC25A98 (len 40) 3,086,344
AllocatePoolI: Type 4, Addr FAC25798 (len 38) 3,086,440
AllocatePoolI: Type 4, Addr FAC25818 (len 90) 3,086,624
AllocatePoolI: Type 4, Addr FAC25918 (len 30) 3,086,712
ConvertRange: FAA64000-FAAA4FFF to type 4
AddRange: FAA64000-FAAA4FFF to 4
AllocatePoolI: Type 4, Addr FAA64018 (len 40068) 3,349,000
AllocatePoolI: Type 4, Addr FAC25998 (len 48) 3,349,112
AllocatePoolI: Type 4, Addr FAC25118 (len 40) 3,349,216
AllocatePoolI: Type 4, Addr FAC25718 (len 18) 3,349,280
AllocatePoolI: Type 4, Addr FAC25598 (len 90) 3,349,464
AllocatePoolI: Type 4, Addr FAC25698 (len 30) 3,349,552
ConvertRange: FAA23000-FAA63FFF to type 4
AddRange: FAA23000-FAA63FFF to 4
AllocatePoolI: Type 4, Addr FAA23018 (len 40058) 3,611,824
AllocatePoolI: Type 4, Addr FAC25198 (len 48) 3,611,936
AllocatePoolI: Type 4, Addr FAC25498 (len 40) 3,612,040
AllocatePoolI: Type 4, Addr FAC25518 (len 18) 3,612,104
AllocatePoolI: Type 4, Addr FAC25218 (len 90) 3,612,288
AllocatePoolI: Type 4, Addr FAC25318 (len 30) 3,612,376
ConvertRange: FAC15000-FAC1AFFF to type 4
AddRange: FAC15000-FAC1AFFF to 4
AllocatePoolI: Type 4, Addr FAC15018 (len 5058) 3,632,984
AllocatePoolI: Type 4, Addr FAC25398 (len 48) 3,633,096
AllocatePoolI: Type 4, Addr FAC25418 (len 40) 3,633,200
ConvertRange: FAC14000-FAC14FFF to type 4
AddRange: FAC14000-FAC14FFF to 4
AllocatePoolI: Type 4, Addr FAC14018 (len 18) 3,633,264
AllocatePoolI: Type 4, Addr FAC14F18 (len 90) 3,633,448
AllocatePoolI: Type 4, Addr FAC14B18 (len 30) 3,633,536
ConvertRange: FAA02000-FAA22FFF to type 4
AddRange: FAA02000-FAA22FFF to 4
AllocatePoolI: Type 4, Addr FAA02018 (len 20050) 3,764,728
AllocatePoolI: Type 4, Addr FAC14E18 (len 48) 3,764,840
AllocatePoolI: Type 4, Addr FAC14E98 (len 40) 3,764,944
AllocatePoolI: Type 4, Addr FAC14B98 (len 18) 3,765,008
AllocatePoolI: Type 4, Addr FAC14C18 (len 90) 3,765,192
AllocatePoolI: Type 4, Addr FAC14D18 (len 30) 3,765,280
ConvertRange: FAC0D000-FAC13FFF to type 4
AddRange: FAC0D000-FAC13FFF to 4
AllocatePoolI: Type 4, Addr FAC0D018 (len 6068) 3,790,000
AllocatePoolI: Type 4, Addr FAC14D98 (len 48) 3,790,112
AllocatePoolI: Type 4, Addr FAC14098 (len 40) 3,790,216
AllocatePoolI: Type 4, Addr FAC14A18 (len 28) 3,790,296
AllocatePoolI: Type 4, Addr FAC14798 (len 90) 3,790,480
AllocatePoolI: Type 4, Addr FAC14A98 (len 30) 3,790,568
ConvertRange: FAC05000-FAC0CFFF to type 4
AddRange: FAC05000-FAC0CFFF to 4
AllocatePoolI: Type 4, Addr FAC05018 (len 7058) 3,819,368
AllocatePoolI: Type 4, Addr FAC14898 (len 48) 3,819,480
AllocatePoolI: Type 4, Addr FAC14918 (len 40) 3,819,584
AllocatePoolI: Type 4, Addr FAC14998 (len 18) 3,819,648
AllocatePoolI: Type 4, Addr FAC14118 (len 90) 3,819,832
AllocatePoolI: Type 4, Addr FAC14618 (len 30) 3,819,920
ConvertRange: FA9F9000-FAA01FFF to type 4
AddRange: FA9F9000-FAA01FFF to 4
AllocatePoolI: Type 4, Addr FA9F9018 (len 8040) 3,852,792
AllocatePoolI: Type 4, Addr FAC14698 (len 48) 3,852,904
AllocatePoolI: Type 4, Addr FAC14718 (len 40) 3,853,008
AllocatePoolI: Type 4, Addr FAC14218 (len 40) 3,853,112
AllocatePoolI: Type 4, Addr FAC14518 (len 90) 3,853,296
AllocatePoolI: Type 4, Addr FAC14298 (len 30) 3,853,384
ConvertRange: FA9ED000-FA9F8FFF to type 4
AddRange: FA9ED000-FA9F8FFF to 4
AllocatePoolI: Type 4, Addr FA9ED018 (len B040) 3,898,544
AllocatePoolI: Type 4, Addr FAC14498 (len 48) 3,898,656
AllocatePoolI: Type 4, Addr FAC14318 (len 40) 3,898,760
AllocatePoolI: Type 4, Addr FAC14398 (len 40) 3,898,864
ConvertRange: FAC04000-FAC04FFF to type 4
AddRange: FAC04000-FAC04FFF to 4
AllocatePoolI: Type 4, Addr FAC04018 (len 90) 3,899,048
AllocatePoolI: Type 4, Addr FAC04F98 (len 30) 3,899,136
ConvertRange: FA9E3000-FA9ECFFF to type 4
AddRange: FA9E3000-FA9ECFFF to 4
AllocatePoolI: Type 4, Addr FA9E3018 (len 9048) 3,936,112
AllocatePoolI: Type 4, Addr FAC14418 (len 48) 3,936,224
AllocatePoolI: Type 4, Addr FAC04B98 (len 40) 3,936,328
AllocatePoolI: Type 4, Addr FAC04E98 (len 40) 3,936,432
AllocatePoolI: Type 4, Addr FAC04C18 (len 90) 3,936,616
AllocatePoolI: Type 4, Addr FAC04F18 (len 30) 3,936,704
ConvertRange: FA9D6000-FA9E2FFF to type 4
AddRange: FA9D6000-FA9E2FFF to 4
AllocatePoolI: Type 4, Addr FA9D6018 (len C038) 3,985,952
AllocatePoolI: Type 4, Addr FAC04D18 (len 48) 3,986,064
AllocatePoolI: Type 4, Addr FAC04D98 (len 40) 3,986,168
AllocatePoolI: Type 4, Addr FAC04E18 (len 40) 3,986,272
AllocatePoolI: Type 4, Addr FAC04118 (len 90) 3,986,456
AllocatePoolI: Type 4, Addr FAC04B18 (len 30) 3,986,544
ConvertRange: FA9CF000-FA9D5FFF to type 4
AddRange: FA9CF000-FA9D5FFF to 4
AllocatePoolI: Type 4, Addr FA9CF018 (len 6050) 4,011,240
AllocatePoolI: Type 4, Addr FAC04898 (len 48) 4,011,352
AllocatePoolI: Type 4, Addr FAC04A98 (len 40) 4,011,456
AllocatePoolI: Type 4, Addr FAC04918 (len 18) 4,011,520
AllocatePoolI: Type 4, Addr FAC04998 (len 90) 4,011,704
AllocatePoolI: Type 4, Addr FAC04218 (len 30) 4,011,792
ConvertRange: FA9C7000-FA9CEFFF to type 4
AddRange: FA9C7000-FA9CEFFF to 4
AllocatePoolI: Type 4, Addr FA9C7018 (len 7050) 4,040,584
AllocatePoolI: Type 4, Addr FAC04818 (len 48) 4,040,696
AllocatePoolI: Type 4, Addr FAC04698 (len 40) 4,040,800
AllocatePoolI: Type 4, Addr FAC04718 (len 18) 4,040,864
AllocatePoolI: Type 4, Addr FAC04298 (len 90) 4,041,048
AllocatePoolI: Type 4, Addr FAC04618 (len 30) 4,041,136
ConvertRange: FA9C0000-FA9C6FFF to type 4
AddRange: FA9C0000-FA9C6FFF to 4
AllocatePoolI: Type 4, Addr FA9C0018 (len 6060) 4,065,848
AllocatePoolI: Type 4, Addr FAC04798 (len 48) 4,065,960
AllocatePoolI: Type 4, Addr FAC04398 (len 40) 4,066,064
AllocatePoolI: Type 4, Addr FAC04598 (len 28) 4,066,144
AllocatePoolI: Type 4, Addr FAC04418 (len 90) 4,066,328
AllocatePoolI: Type 4, Addr FAC04518 (len 30) 4,066,416
ConvertRange: FA97F000-FA9BFFFF to type 4
AddRange: FA97F000-FA9BFFFF to 4
AllocatePoolI: Type 4, Addr FA97F018 (len 40060) 4,328,696
ConvertRange: FAC03000-FAC03FFF to type 4
AddRange: FAC03000-FAC03FFF to 4
AllocatePoolI: Type 4, Addr FAC03018 (len 48) 4,328,808
AllocatePoolI: Type 4, Addr FAC03F18 (len 40) 4,328,912
AllocatePoolI: Type 4, Addr FAC03F98 (len 18) 4,328,976
AllocatePoolI: Type 4, Addr FAC03B18 (len 90) 4,329,160
AllocatePoolI: Type 4, Addr FAC03E98 (len 30) 4,329,248
ConvertRange: FA978000-FA97EFFF to type 4
AddRange: FA978000-FA97EFFF to 4
AllocatePoolI: Type 4, Addr FA978018 (len 6060) 4,353,960
AllocatePoolI: Type 4, Addr FAC03C18 (len 48) 4,354,072
AllocatePoolI: Type 4, Addr FAC03E18 (len 40) 4,354,176
AllocatePoolI: Type 4, Addr FAC03C98 (len 18) 4,354,240
AllocatePoolI: Type 4, Addr FAC03D18 (len 90) 4,354,424
AllocatePoolI: Type 4, Addr FAC03098 (len 30) 4,354,512
ConvertRange: FA96F000-FA977FFF to type 4
AddRange: FA96F000-FA977FFF to 4
AllocatePoolI: Type 4, Addr FA96F018 (len 8038) 4,387,376
AllocatePoolI: Type 4, Addr FAC03A18 (len 48) 4,387,488
AllocatePoolI: Type 4, Addr FAC03A98 (len 40) 4,387,592
AllocatePoolI: Type 4, Addr FAC03798 (len 40) 4,387,696
AllocatePoolI: Type 4, Addr FAC03818 (len 90) 4,387,880
AllocatePoolI: Type 4, Addr FAC03918 (len 30) 4,387,968
ConvertRange: FA966000-FA96EFFF to type 4
AddRange: FA966000-FA96EFFF to 4
AllocatePoolI: Type 4, Addr FA966018 (len 8038) 4,420,832
AllocatePoolI: Type 4, Addr FAC03998 (len 48) 4,420,944
AllocatePoolI: Type 4, Addr FAC03118 (len 40) 4,421,048
AllocatePoolI: Type 4, Addr FAC03718 (len 40) 4,421,152
AllocatePoolI: Type 4, Addr FAC03598 (len 90) 4,421,336
AllocatePoolI: Type 4, Addr FAC03698 (len 30) 4,421,424
ConvertRange: FA95B000-FA965FFF to type 4
AddRange: FA95B000-FA965FFF to 4
AllocatePoolI: Type 4, Addr FA95B018 (len A040) 4,462,488
AllocatePoolI: Type 4, Addr FAC03198 (len 48) 4,462,600
AllocatePoolI: Type 4, Addr FAC03498 (len 40) 4,462,704
AllocatePoolI: Type 4, Addr FAC03518 (len 40) 4,462,808
AllocatePoolI: Type 4, Addr FAC03218 (len 90) 4,462,992
AllocatePoolI: Type 4, Addr FAC03318 (len 30) 4,463,080
ConvertRange: FA954000-FA95AFFF to type 4
AddRange: FA954000-FA95AFFF to 4
AllocatePoolI: Type 4, Addr FA954018 (len 68B8) 4,489,928
AllocatePoolI: Type 4, Addr FAC03398 (len 48) 4,490,040
AllocatePoolI: Type 4, Addr FAC03418 (len 40) 4,490,144
ConvertRange: FAC02000-FAC02FFF to type 4
AddRange: FAC02000-FAC02FFF to 4
AllocatePoolI: Type 4, Addr FAC02018 (len 40) 4,490,248
AllocatePoolI: Type 4, Addr FAC02F18 (len 40) 4,490,352
AllocatePoolI: Type 4, Addr FAC02B18 (len 90) 4,490,536
AllocatePoolI: Type 4, Addr FAC02E98 (len 30) 4,490,624
ConvertRange: FA94D000-FA953FFF to type 4
AddRange: FA94D000-FA953FFF to 4
AllocatePoolI: Type 4, Addr FA94D018 (len 6038) 4,515,296
AllocatePoolI: Type 4, Addr FAC02F98 (len 48) 4,515,408
AllocatePoolI: Type 4, Addr FAC02C18 (len 40) 4,515,512
AllocatePoolI: Type 4, Addr FAC02E18 (len 40) 4,515,616
AllocatePoolI: Type 4, Addr FAC02C98 (len 90) 4,515,800
AllocatePoolI: Type 4, Addr FAC02D98 (len 30) 4,515,888
ConvertRange: FA940000-FA94CFFF to type 4
AddRange: FA940000-FA94CFFF to 4
AllocatePoolI: Type 4, Addr FA940018 (len C048) 4,565,152
AllocatePoolI: Type 4, Addr FAC02098 (len 48) 4,565,264
AllocatePoolI: Type 4, Addr FAC02A18 (len 40) 4,565,368
AllocatePoolI: Type 4, Addr FAC02A98 (len 18) 4,565,432
AllocatePoolI: Type 4, Addr FAC02798 (len 90) 4,565,616
AllocatePoolI: Type 4, Addr FAC02898 (len 30) 4,565,704
ConvertRange: FA938000-FA93FFFF to type 4
AddRange: FA938000-FA93FFFF to 4
AllocatePoolI: Type 4, Addr FA938018 (len 7060) 4,594,512
AllocatePoolI: Type 4, Addr FAC02918 (len 48) 4,594,624
AllocatePoolI: Type 4, Addr FAC02998 (len 40) 4,594,728
AllocatePoolI: Type 4, Addr FAC02118 (len 28) 4,594,808
AllocatePoolI: Type 4, Addr FAC02598 (len 90) 4,594,992
AllocatePoolI: Type 4, Addr FAC02698 (len 30) 4,595,080
ConvertRange: FA92F000-FA937FFF to type 4
AddRange: FA92F000-FA937FFF to 4
AllocatePoolI: Type 4, Addr FA92F018 (len 8050) 4,627,968
AllocatePoolI: Type 4, Addr FAC02718 (len 48) 4,628,080
AllocatePoolI: Type 4, Addr FAC02198 (len 40) 4,628,184
AllocatePoolI: Type 4, Addr FAC02498 (len 18) 4,628,248
AllocatePoolI: Type 4, Addr FAC02218 (len 90) 4,628,432
AllocatePoolI: Type 4, Addr FAC02518 (len 30) 4,628,520
ConvertRange: FA922000-FA92EFFF to type 4
AddRange: FA922000-FA92EFFF to 4
AllocatePoolI: Type 4, Addr FA922018 (len C038) 4,677,768
AllocatePoolI: Type 4, Addr FAC02318 (len 48) 4,677,880
AllocatePoolI: Type 4, Addr FAC02398 (len 40) 4,677,984
AllocatePoolI: Type 4, Addr FAC02418 (len 40) 4,678,088
ConvertRange: FAC01000-FAC01FFF to type 4
AddRange: FAC01000-FAC01FFF to 4
AllocatePoolI: Type 4, Addr FAC01018 (len 90) 4,678,272
AllocatePoolI: Type 4, Addr FAC01F98 (len 30) 4,678,360
ConvertRange: FA91A000-FA921FFF to type 4
AddRange: FA91A000-FA921FFF to 4
AllocatePoolI: Type 4, Addr FA91A018 (len 7040) 4,707,136
AllocatePoolI: Type 4, Addr FAC01B98 (len 48) 4,707,248
AllocatePoolI: Type 4, Addr FAC01E98 (len 40) 4,707,352
AllocatePoolI: Type 4, Addr FAC01F18 (len 40) 4,707,456
AllocatePoolI: Type 4, Addr FAC01C18 (len 90) 4,707,640
AllocatePoolI: Type 4, Addr FAC01D18 (len 30) 4,707,728
ConvertRange: FA90A000-FA919FFF to type 4
AddRange: FA90A000-FA919FFF to 4
AllocatePoolI: Type 4, Addr FA90A018 (len F058) 4,769,296
AllocatePoolI: Type 4, Addr FAC01D98 (len 48) 4,769,408
AllocatePoolI: Type 4, Addr FAC01E18 (len 40) 4,769,512
AllocatePoolI: Type 4, Addr FAC01118 (len 18) 4,769,576
AllocatePoolI: Type 4, Addr FAC01A98 (len 90) 4,769,760
AllocatePoolI: Type 4, Addr FAC01818 (len 30) 4,769,848
ConvertRange: FA8F2000-FA909FFF to type 4
AddRange: FA8F2000-FA909FFF to 4
AllocatePoolI: Type 4, Addr FA8F2018 (len 170B8) 4,864,280
AllocatePoolI: Type 4, Addr FAC01A18 (len 48) 4,864,392
AllocatePoolI: Type 4, Addr FAC01898 (len 40) 4,864,496
AllocatePoolI: Type 4, Addr FAC01918 (len 60) 4,864,632
AllocatePoolI: Type 4, Addr FAC01198 (len 90) 4,864,816
AllocatePoolI: Type 4, Addr FAC01698 (len 30) 4,864,904
ConvertRange: FA8D5000-FA8F1FFF to type 4
AddRange: FA8D5000-FA8F1FFF to 4
AllocatePoolI: Type 4, Addr FA8D5018 (len 1C088) 4,979,768
AllocatePoolI: Type 4, Addr FAC01718 (len 48) 4,979,880
AllocatePoolI: Type 4, Addr FAC01798 (len 40) 4,979,984
AllocatePoolI: Type 4, Addr FAC01298 (len 48) 4,980,096
AllocatePoolI: Type 4, Addr FAC01598 (len 90) 4,980,280
AllocatePoolI: Type 4, Addr FAC01318 (len 30) 4,980,368
ConvertRange: FA8BA000-FA8D4FFF to type 4
AddRange: FA8BA000-FA8D4FFF to 4
AllocatePoolI: Type 4, Addr FA8BA018 (len 1A080) 5,087,032
AllocatePoolI: Type 4, Addr FAC01518 (len 48) 5,087,144
AllocatePoolI: Type 4, Addr FAC01398 (len 40) 5,087,248
AllocatePoolI: Type 4, Addr FAC01418 (len 48) 5,087,360
ConvertRange: FA8B9000-FA8B9FFF to type 4
AddRange: FA8B9000-FA8B9FFF to 4
AllocatePoolI: Type 4, Addr FA8B9018 (len 90) 5,087,544
AllocatePoolI: Type 4, Addr FA8B9F98 (len 30) 5,087,632
ConvertRange: FA8AE000-FA8B8FFF to type 4
AddRange: FA8AE000-FA8B8FFF to 4
AllocatePoolI: Type 4, Addr FA8AE018 (len A048) 5,128,704
AllocatePoolI: Type 4, Addr FAC01498 (len 48) 5,128,816
AllocatePoolI: Type 4, Addr FA8B9B98 (len 40) 5,128,920
AllocatePoolI: Type 4, Addr FA8B9E98 (len 40) 5,129,024
AllocatePoolI: Type 4, Addr FA8B9F18 (len 18) 5,129,088
AllocatePoolI: Type 4, Addr FA8B9C18 (len B8) 5,129,312
Evaluate DXE DEPEX for FFS(80CF7257-87AB-47F9-A3FE-D50B76D89541)
  TRUE
ConvertRange: FA8AC000-FA8ADFFF to type 4
AddRange: FA8AC000-FA8ADFFF to 4
AllocatePoolI: Type 4, Addr FA8AC018 (len 1000) 5,133,448
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(93E34C7E-B50E-11DF-9223-2443DFD72085)
  BEFORE FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B601F8C4-43B7-4784-95B1-F4226CB40CEE)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(F80697E9-7FD6-4665-8646-88E33EF71DFC)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(42857F0A-13F2-4B21-8A23-53D3F714B840)
  PUSH GUID(6441F818-6362-4E44-B570-7DBA31DD2453) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(FE5CEA76-4F72-49E8-986F-2CD899DFFE5D)
  PUSH GUID(8F644FA9-E850-4DB1-9CE2-0B44698E8DA4) = TRUE
  PUSH GUID(B7DFB4E1-052F-449F-87BE-9818FC91B733) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(AD608272-D07F-4964-801E-7BD3B7888652)
  PUSH GUID(1E5668E2-8481-11D4-BCF1-0080C73C8881) = FALSE
  PUSH GUID(6441F818-6362-4E44-B570-7DBA31DD2453) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(4B28E4C7-FF36-4E10-93CF-A82159E777C5)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B336F62D-4135-4A55-AE4E-4971BBF0885D)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(4C6E0267-C77D-410D-8100-1495911A989D)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(348C4D62-BFBD-4882-9ECE-C80BB1C4783B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CB933912-DF8F-4305-B1F9-7B44FA11395C)
  PUSH GUID(FFE06BDD-6107-46A6-7BB2-5A9C7EC5275C) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9622E42C-8E38-4A08-9E8F-54F784652F6B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(51CCF399-4FDF-4E55-A45B-E123F84D456A)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(408EDCEC-CF6D-477C-A5A8-B4844E3DE281)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CCCB0C28-4B24-11D5-9A5A-0090273FC14D)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9E863906-A40F-4875-977F-5B93FF237FC6)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(D3987D4B-971A-435F-8CAF-4967EB627241)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(49EA041E-6752-42CA-B0B1-7344FE2546B7)
  PUSH GUID(2890B3EA-053D-1643-AD0C-D64808DA3FF1) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(EBD705FB-FA92-46A7-B32B-7F566D944614)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(C5B9C74A-6D72-4719-99AB-C59F199091EB)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(6B38F7B4-AD98-40E9-9093-ACA2B5A253C4)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(1FA1F39E-FEFF-4AAE-BD7B-38A070A3B609)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(961578FE-B6B7-44C3-AF35-6BC705CD2B1F)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CD3BAFB6-50FB-4FE8-8E4E-AB74D2C1A600)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B6F44CC0-9E45-11DF-BE21-0002A5D5C51B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(09831032-6FA3-4484-AF4F-0A000A8D3A82)
  PUSH GUID(26BACCB1-6F42-11D4-BCE7-0080C73C8881) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(F9D88642-0737-49BC-81B5-6889CD57D9EA)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(405B2307-6839-4D52-AEB9-BECE64252800)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(11D92DFB-3CA9-4F93-BA2E-4780ED3E03B5)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9B680FCE-AD6B-4F3A-B60B-F59899003443)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(E660EA85-058E-4B55-A54B-F02F83A24707)
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  PUSH GUID(A770C357-B693-4E6D-A6CF-D21C728E550B) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  AND
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(EBF342FE-B1D3-4EF8-957C-8048606FF671)
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(6D33944A-EC75-4855-A54D-809C75241F6C)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = FALSE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(907125C0-A5F1-11E3-A3FE-A3198B49350C)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Loading driver 80CF7257-87AB-47F9-A3FE-D50B76D89541
AllocatePoolI: Type 4, Addr FA8B9D18 (len 30) 5,133,536
AllocatePoolI: Type 4, Addr FA8B9D98 (len 10) 5,133,592
FreePool: FA8B9D98 (len 10) 5,133,536
AllocatePoolI: Type 4, Addr FA8B9D98 (len 30) 5,133,624
AllocatePoolI: Type 4, Addr FA8B9E18 (len 10) 5,133,680
FreePool: FA8B9E18 (len 10) 5,133,624
AllocatePoolI: Type 4, Addr FA8B9E18 (len 40) 5,133,728
ConvertRange: FA8A1000-FA8ABFFF to type 4
AddRange: FA8A1000-FA8ABFFF to 4
AllocatePoolI: Type 4, Addr FA8A1018 (len A000) 5,174,728
FreePool: FA8B9D98 (len 30) 5,174,640
AllocatePoolI: Type 4, Addr FA8B9118 (len 188) 5,175,072
AllocatePoolI: Type 4, Addr FA8B9D98 (len 18) 5,175,136
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B FA8B9140
AllocatePoolI: Type 4, Addr FA8B9A18 (len 58) 5,175,264
AllocatePoolI: Type 4, Addr FA8B9A98 (len 38) 5,175,360
ConvertRange: FAF46000-FAF4FFFF to type 3
AddRange: FAF46000-FAF4FFFF to 3
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/PCD/Dxe/Pcd/DEBUG/PcdDxe.dll 0xFAF47000
Loading driver at 0x000FAF46000 EntryPoint=0x000FAF47DF8 PcdDxe.efi
AllocatePoolI: Type 4, Addr FA8B9B18 (len 18) 5,175,424
AllocatePoolI: Type 4, Addr FA8B9398 (len 0) 5,175,464
FreePool: FA8B9398 (len 0) 5,175,424
AllocatePoolI: Type 4, Addr FA8B9398 (len 30) 5,175,512
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF FA8B9398
AllocatePoolI: Type 4, Addr FA8B9998 (len 48) 5,175,624
AllocatePoolI: Type 4, Addr FA8B9818 (len 58) 5,175,752
ProtectUefiImageCommon - 0xFA8B9140
  - 0x00000000FAF46000 - 0x000000000000A000
FreePool: FA8A1018 (len A000) 5,134,752
ConvertRange: FA8A1000-FA8ABFFF to type 7
AddRange: FA8A1000-FA8ABFFF to 7
AllocatePoolI: Type 4, Addr FA8B9898 (len 30) 5,134,840
AllocatePoolI: Type 4, Addr FA8B9918 (len 20) 5,134,912
FreePool: FA8B9918 (len 20) 5,134,840
AllocatePoolI: Type 4, Addr FA8B9418 (len B0) 5,135,056
AllocatePoolI: Type 4, Addr FA8B9518 (len 90) 5,135,240
AllocatePoolI: Type 4, Addr FA8B9618 (len 90) 5,135,424
AllocatePoolI: Type 4, Addr FA8B9718 (len 50) 5,135,544
AllocatePoolI: Type 4, Addr FA8B9798 (len 8) 5,135,592
AllocatePoolI: Type 4, Addr FA8B9918 (len 20) 5,135,664
InstallProtocolInterface: 11B34006-D85B-4D0A-A290-D5A571310EF7 FAF4E138
ConvertRange: FA8AB000-FA8ABFFF to type 4
AddRange: FA8AB000-FA8ABFFF to 4
AllocatePoolI: Type 4, Addr FA8AB018 (len 48) 5,135,776
AllocatePoolI: Type 4, Addr FA8ABF18 (len 58) 5,135,904
AllocatePoolI: Type 4, Addr FA8ABF98 (len 38) 5,136,000
InstallProtocolInterface: 13A3F0F6-264A-3EF0-F2E0-DEC512342F34 FAF4E090
AllocatePoolI: Type 4, Addr FA8ABB18 (len 48) 5,136,112
AllocatePoolI: Type 4, Addr FA8ABE18 (len 58) 5,136,240
InstallProtocolInterface: 5BE40F57-FA68-4610-BBBF-E9C5FCDAD365 FAF4E120
AllocatePoolI: Type 4, Addr FA8ABE98 (len 48) 5,136,352
AllocatePoolI: Type 4, Addr FA8ABB98 (len 58) 5,136,480
InstallProtocolInterface: FD0F4478-0EFD-461D-BA2D-E58C45FD5F5E FAF4E080
AllocatePoolI: Type 4, Addr FA8ABD98 (len 48) 5,136,592
AllocatePoolI: Type 4, Addr FA8ABC18 (len 58) 5,136,720
AllocatePoolI: Type 4, Addr FA8ABC98 (len B8) 5,136,944
AllocatePoolI: Type 4, Addr FA8AB098 (len 48) 5,137,056
AllocatePoolI: Type 4, Addr FA8ABA18 (len 30) 5,137,144
FreePool: FA8B9418 (len B0) 5,136,928
AllocatePoolI: Type 4, Addr FA8ABA98 (len 8) 5,136,976
AllocatePoolI: Type 4, Addr FA8B9418 (len 0) 5,137,016
FreePool: FA8B9418 (len 0) 5,136,976
FreePool: FA8ABA98 (len 8) 5,136,928
AllocatePoolI: Type 4, Addr FA8ABA98 (len 20) 5,137,000
FreePool: FA8ABA98 (len 20) 5,136,928
Evaluate DXE DEPEX for FFS(B601F8C4-43B7-4784-95B1-F4226CB40CEE)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(93E34C7E-B50E-11DF-9223-2443DFD72085)
  BEFORE FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(F80697E9-7FD6-4665-8646-88E33EF71DFC)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(93E34C7E-B50E-11DF-9223-2443DFD72085)
  BEFORE FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(42857F0A-13F2-4B21-8A23-53D3F714B840)
  PUSH GUID(6441F818-6362-4E44-B570-7DBA31DD2453) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(93E34C7E-B50E-11DF-9223-2443DFD72085)
  BEFORE FFS(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(FE5CEA76-4F72-49E8-986F-2CD899DFFE5D)
  PUSH GUID(8F644FA9-E850-4DB1-9CE2-0B44698E8DA4) = TRUE
  PUSH GUID(B7DFB4E1-052F-449F-87BE-9818FC91B733) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(AD608272-D07F-4964-801E-7BD3B7888652)
  PUSH GUID(1E5668E2-8481-11D4-BCF1-0080C73C8881) = FALSE
  PUSH GUID(6441F818-6362-4E44-B570-7DBA31DD2453) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(4B28E4C7-FF36-4E10-93CF-A82159E777C5)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B336F62D-4135-4A55-AE4E-4971BBF0885D)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(4C6E0267-C77D-410D-8100-1495911A989D)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(348C4D62-BFBD-4882-9ECE-C80BB1C4783B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CB933912-DF8F-4305-B1F9-7B44FA11395C)
  PUSH GUID(FFE06BDD-6107-46A6-7BB2-5A9C7EC5275C) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9622E42C-8E38-4A08-9E8F-54F784652F6B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(51CCF399-4FDF-4E55-A45B-E123F84D456A)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(408EDCEC-CF6D-477C-A5A8-B4844E3DE281)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CCCB0C28-4B24-11D5-9A5A-0090273FC14D)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9E863906-A40F-4875-977F-5B93FF237FC6)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(D3987D4B-971A-435F-8CAF-4967EB627241)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = FALSE
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(B8D9777E-D72A-451F-9BDB-BAFB52A68415)
  AFTER FFS(DE371F7C-DEC4-4D21-ADF1-593ABCC15882) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(49EA041E-6752-42CA-B0B1-7344FE2546B7)
  PUSH GUID(2890B3EA-053D-1643-AD0C-D64808DA3FF1) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(EBD705FB-FA92-46A7-B32B-7F566D944614)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(C5B9C74A-6D72-4719-99AB-C59F199091EB)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(6B38F7B4-AD98-40E9-9093-ACA2B5A253C4)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(1FA1F39E-FEFF-4AAE-BD7B-38A070A3B609)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(961578FE-B6B7-44C3-AF35-6BC705CD2B1F)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(CD3BAFB6-50FB-4FE8-8E4E-AB74D2C1A600)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(B6F44CC0-9E45-11DF-BE21-0002A5D5C51B)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(09831032-6FA3-4484-AF4F-0A000A8D3A82)
  PUSH GUID(26BACCB1-6F42-11D4-BCE7-0080C73C8881) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(F9D88642-0737-49BC-81B5-6889CD57D9EA)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(405B2307-6839-4D52-AEB9-BECE64252800)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(11D92DFB-3CA9-4F93-BA2E-4780ED3E03B5)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(9B680FCE-AD6B-4F3A-B60B-F59899003443)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  END
  RESULT = TRUE
Evaluate DXE DEPEX for FFS(E660EA85-058E-4B55-A54B-F02F83A24707)
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  PUSH GUID(A770C357-B693-4E6D-A6CF-D21C728E550B) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  AND
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(EBF342FE-B1D3-4EF8-957C-8048606FF671)
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(6D33944A-EC75-4855-A54D-809C75241F6C)
  PUSH GUID(13A3F0F6-264A-3EF0-F2E0-DEC512342F34) = TRUE
  PUSH GUID(0FD96974-23AA-4CDC-B9CB-98D17750322A) = FALSE
  PUSH GUID(EF9FC172-A1B2-4693-B327-6D32FC416042) = FALSE
  PUSH GUID(587E72D7-CC50-4F79-8209-CA291FC1A10F) = FALSE
  AND
  AND
  AND
  END
  RESULT = FALSE
Evaluate DXE DEPEX for FFS(907125C0-A5F1-11E3-A3FE-A3198B49350C)
  All UEFI Services Available                     = FALSE
  RESULT = FALSE
Loading driver B601F8C4-43B7-4784-95B1-F4226CB40CEE
AllocatePoolI: Type 4, Addr FA8ABA98 (len 10) 5,136,984
FreePool: FA8ABA98 (len 10) 5,136,928
AllocatePoolI: Type 4, Addr FA8ABA98 (len 30) 5,137,016
AllocatePoolI: Type 4, Addr FA8B9418 (len 10) 5,137,072
FreePool: FA8B9418 (len 10) 5,137,016
AllocatePoolI: Type 4, Addr FA8B9418 (len 40) 5,137,120
ConvertRange: FA86A000-FA8AAFFF to type 4
AddRange: FA86A000-FA8AAFFF to 4
AllocatePoolI: Type 4, Addr FA86A018 (len 40000) 5,399,304
FreePool: FA8ABA98 (len 30) 5,399,216
AllocatePoolI: Type 4, Addr FA8AB798 (len 188) 5,399,648
AllocatePoolI: Type 4, Addr FA8ABA98 (len 18) 5,399,712
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B FA8AB7C0
AllocatePoolI: Type 4, Addr FA8B9498 (len 58) 5,399,840
AllocatePoolI: Type 4, Addr FA8AB118 (len 38) 5,399,936
ConvertRange: F5F30000-F5F7FFFF to type 5
AddRange: F5F30000-F5F7FFFF to 5
ConvertRange: F5EE0000-F5F2FFFF to type 6
AddRange: F5EE0000-F5F2FFFF to 6
AllocatePoolI: Type 6, Addr F5EE0018 (len 40000) 262,944
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll 0xF5F40000
AllocatePoolI: Type 6, Addr FAFEFD98 (len 30) 263,032
InsertImageRecord - 0xFAFEFD98
InsertImageRecord - 0x00000000F5F30000 - 0x0000000000040000
AllocatePoolI: Type 4, Addr FA8AB718 (len 40) 5,400,040
ImageRecordCount - 0x0
  Image - /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll
  Section - '.text   '
  VirtualSize          - 0x00010000
  VirtualAddress       - 0x00010000
  SizeOfRawData        - 0x00010000
  PointerToRawData     - 0x00010000
  PointerToRelocations - 0x00000000
  PointerToLinenumbers - 0x00000000
  NumberOfRelocations  - 0x00000000
  NumberOfLinenumbers  - 0x00000000
  Characteristics      - 0x60000020
AllocatePoolI: Type 4, Addr FA8AB598 (len 28) 5,400,120
ImageCode: 0x00000000F5F40000 - 0x0000000000010000
  Section - '.data   '
  Section - '.reloc  '
ImageCode SegmentCount - 0x1
Loading driver at 0x000F5F30000 EntryPoint=0x000F5F40B78 RuntimeDxe.efi
AllocatePoolI: Type 4, Addr FA8AB618 (len 18) 5,400,184
AllocatePoolI: Type 4, Addr FA8AB698 (len 0) 5,400,224
FreePool: FA8AB698 (len 0) 5,400,184
AllocatePoolI: Type 4, Addr FA8AB698 (len 30) 5,400,272
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF FA8AB698
AllocatePoolI: Type 4, Addr FA8AB198 (len 58) 5,400,400
ProtectUefiImageCommon - 0xFA8AB7C0
  - 0x00000000F5F30000 - 0x0000000000040000
FreePool: FA86A018 (len 40000) 5,138,216
ConvertRange: FA86A000-FA8AAFFF to type 7
AddRange: FA86A000-FA8AAFFF to 7
AllocatePoolI: Type 4, Addr FA8AB498 (len 30) 5,138,304
AllocatePoolI: Type 4, Addr FA8AB518 (len 20) 5,138,376
FreePool: FA8AB518 (len 20) 5,138,304
AllocatePoolI: Type 4, Addr FA8AB218 (len B0) 5,138,520
AllocatePoolI: Type 4, Addr FA8AB318 (len B8) 5,138,744
AllocatePoolI: Type 6, Addr FAFEFE18 (len B8) 263,256
ConvertRange: FA8AA000-FA8AAFFF to type 4
AddRange: FA8AA000-FA8AAFFF to 4
AllocatePoolI: Type 4, Addr FA8AA018 (len B8) 5,138,968
AllocatePoolI: Type 6, Addr FAFEEA18 (len B8) 263,480
AllocatePoolI: Type 4, Addr FA8AAB98 (len B8) 5,139,192
InstallProtocolInterface: B7DFB4E1-052F-449F-87BE-9818FC91B733 F5F50050
AllocatePoolI: Type 4, Addr FA8AAF18 (len 58) 5,139,320
AllocatePoolI: Type 4, Addr FA8AAF98 (len 38) 5,139,416
FreePool: FA8AB218 (len B0) 5,139,200
AllocatePoolI: Type 4, Addr FA8AB418 (len 8) 5,139,248
AllocatePoolI: Type 4, Addr FA8AB518 (len 0) 5,139,288
FreePool: FA8AB518 (len 0) 5,139,248
FreePool: FA8AB418 (len 8) 5,139,200
AllocatePoolI: Type 4, Addr FA8AB418 (len 20) 5,139,272
FreePool: FA8AB418 (len 20) 5,139,200
Loading driver F80697E9-7FD6-4665-8646-88E33EF71DFC
AllocatePoolI: Type 4, Addr FA8AB418 (len 10) 5,139,256
FreePool: FA8AB418 (len 10) 5,139,200
AllocatePoolI: Type 4, Addr FA8AB418 (len 30) 5,139,288
AllocatePoolI: Type 4, Addr FA8AB518 (len 10) 5,139,344
FreePool: FA8AB518 (len 10) 5,139,288
AllocatePoolI: Type 4, Addr FA8AB518 (len 40) 5,139,392
ConvertRange: FA89F000-FA8A9FFF to type 4
AddRange: FA89F000-FA8A9FFF to 4
AllocatePoolI: Type 4, Addr FA89F018 (len A000) 5,180,392
FreePool: FA8AB418 (len 30) 5,180,304
AllocatePoolI: Type 4, Addr FA8AAC98 (len 188) 5,180,736
AllocatePoolI: Type 4, Addr FA8AB418 (len 18) 5,180,800
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B FA8AACC0
AllocatePoolI: Type 4, Addr FA8AB218 (len 58) 5,180,928
AllocatePoolI: Type 4, Addr FA8AB298 (len 38) 5,181,024
ConvertRange: FAF3C000-FAF45FFF to type 3
AddRange: FAF3C000-FAF45FFF to 3
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe/DEBUG/SecurityStubDxe.dll 0xFAF3D000
Loading driver at 0x000FAF3C000 EntryPoint=0x000FAF3D5A8 SecurityStubDxe.efi
AllocatePoolI: Type 4, Addr FA8AA118 (len 18) 5,181,088
AllocatePoolI: Type 4, Addr FA8AAA98 (len 0) 5,181,128
FreePool: FA8AAA98 (len 0) 5,181,088
AllocatePoolI: Type 4, Addr FA8AAA98 (len 30) 5,181,176
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF FA8AAA98
AllocatePoolI: Type 4, Addr FA8AAB18 (len 58) 5,181,304
ProtectUefiImageCommon - 0xFA8AACC0
  - 0x00000000FAF3C000 - 0x000000000000A000
FreePool: FA89F018 (len A000) 5,140,304
ConvertRange: FA89F000-FA8A9FFF to type 7
AddRange: FA89F000-FA8A9FFF to 7
AllocatePoolI: Type 4, Addr FA8AA818 (len 30) 5,140,392
AllocatePoolI: Type 4, Addr FA8AAA18 (len 20) 5,140,464
FreePool: FA8AAA18 (len 20) 5,140,392
AllocatePoolI: Type 4, Addr FA8AA898 (len B0) 5,140,608
InstallProtocolInterface: 94AB2F58-1438-4EF1-9152-18941A3A0E68 FAF44078
AllocatePoolI: Type 4, Addr FA8AA998 (len 58) 5,140,736
AllocatePoolI: Type 4, Addr FA8AAA18 (len 38) 5,140,832
InstallProtocolInterface: A46423E3-4617-49F1-B9FF-D1BFA9115839 FAF44080
AllocatePoolI: Type 4, Addr FA8AA198 (len 58) 5,140,960
InstallProtocolInterface: 15853D7C-3DDF-43E0-A1CB-EBF85B8F872C FAF44070
AllocatePoolI: Type 4, Addr FA8AA798 (len 48) 5,141,072
AllocatePoolI: Type 4, Addr FA8AA618 (len 58) 5,141,200
AllocatePoolI: Type 4, Addr FA8AA698 (len 38) 5,141,296
AllocatePoolI: Type 4, Addr FA8AA218 (len B8) 5,141,520
AllocatePoolI: Type 4, Addr FA8AA318 (len B8) 5,141,744
AllocatePoolI: Type 4, Addr FA8AA598 (len 48) 5,141,856
AllocatePoolI: Type 4, Addr FA8AA718 (len 30) 5,141,944
FreePool: FA8AA898 (len B0) 5,141,728
AllocatePoolI: Type 4, Addr FA8AA898 (len 10) 5,141,784
AllocatePoolI: Type 4, Addr FA8AA918 (len 0) 5,141,824
FreePool: FA8AA918 (len 0) 5,141,784
AllocatePoolI: Type 4, Addr FA8AA918 (len 0) 5,141,824
FreePool: FA8AA918 (len 0) 5,141,784
FreePool: FA8AA898 (len 10) 5,141,728
AllocatePoolI: Type 4, Addr FA8AA898 (len 20) 5,141,800
FreePool: FA8AA898 (len 20) 5,141,728
Loading driver 93E34C7E-B50E-11DF-9223-2443DFD72085
AllocatePoolI: Type 4, Addr FA8AA898 (len 10) 5,141,784
FreePool: FA8AA898 (len 10) 5,141,728
AllocatePoolI: Type 4, Addr FA8AA898 (len 30) 5,141,816
AllocatePoolI: Type 4, Addr FA8AA918 (len 10) 5,141,872
FreePool: FA8AA918 (len 10) 5,141,816
AllocatePoolI: Type 4, Addr FA8AA918 (len 40) 5,141,920
ConvertRange: FA869000-FA8A9FFF to type 4
AddRange: FA869000-FA8A9FFF to 4
AllocatePoolI: Type 4, Addr FA869018 (len 40000) 5,404,104
FreePool: FA8AA898 (len 30) 5,404,016
AllocatePoolI: Type 4, Addr FA8AA898 (len 10) 5,404,072
FreePool: FA8AA898 (len 10) 5,404,016
ConvertRange: FA868000-FA868FFF to type 4
AddRange: FA868000-FA868FFF to 4
AllocatePoolI: Type 4, Addr FA868018 (len 188) 5,404,448
AllocatePoolI: Type 4, Addr FA868F98 (len 18) 5,404,512
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B FA868040
AllocatePoolI: Type 4, Addr FA8AA898 (len 58) 5,404,640
AllocatePoolI: Type 4, Addr FA8AA418 (len 38) 5,404,736
ConvertRange: F5E90000-F5EDFFFF to type 5
AddRange: F5E90000-F5EDFFFF to 5
ConvertRange: F5E40000-F5E8FFFF to type 6
AddRange: F5E40000-F5E8FFFF to 6
AllocatePoolI: Type 6, Addr F5E40018 (len 40000) 525,664
add-symbol-file /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll 0xF5EA0000
AllocatePoolI: Type 6, Addr FAFEF998 (len 30) 525,752
InsertImageRecord - 0xFAFEF998
InsertImageRecord - 0x00000000F5E90000 - 0x0000000000040000
AllocatePoolI: Type 4, Addr FA8AA498 (len 40) 5,404,840
ImageRecordCount - 0x1
  Image - /home/steven/aarch64fw/workspace/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll
  Section - '.text   '
  VirtualSize          - 0x00010000
  VirtualAddress       - 0x00010000
  SizeOfRawData        - 0x00010000
  PointerToRawData     - 0x00010000
  PointerToRelocations - 0x00000000
  PointerToLinenumbers - 0x00000000
  NumberOfRelocations  - 0x00000000
  NumberOfLinenumbers  - 0x00000000
  Characteristics      - 0x60000020
AllocatePoolI: Type 4, Addr FA8AA518 (len 28) 5,404,920
ImageCode: 0x00000000F5EA0000 - 0x0000000000010000
  Section - '.data   '
  Section - '.reloc  '
ImageCode SegmentCount - 0x1
Loading driver at 0x000F5E90000 EntryPoint=0x000F5EA0488 ArmVeNorFlashDxe.efi
AllocatePoolI: Type 4, Addr FA868D18 (len 18) 5,404,984
AllocatePoolI: Type 4, Addr FA868F18 (len 0) 5,405,024
FreePool: FA868F18 (len 0) 5,404,984
AllocatePoolI: Type 4, Addr FA868F18 (len 30) 5,405,072
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF FA868F18
AllocatePoolI: Type 4, Addr FA868D98 (len 58) 5,405,200
ProtectUefiImageCommon - 0xFA868040
  - 0x00000000F5E90000 - 0x0000000000040000
FreePool: FA869018 (len 40000) 5,143,016
ConvertRange: FA869000-FA8A9FFF to type 7
AddRange: FA869000-FA8A9FFF to 7
AllocatePoolI: Type 4, Addr FA868E18 (len 30) 5,143,104
AllocatePoolI: Type 4, Addr FA868E98 (len 20) 5,143,176
FreePool: FA868E98 (len 20) 5,143,104
AllocatePoolI: Type 4, Addr FA868298 (len B0) 5,143,320
AllocatePoolI: Type 4, Addr FA868A18 (len B8) 5,143,544
AllocatePoolI: Type 6, Addr FAFEFA18 (len B8) 525,976
AllocatePoolI: Type 4, Addr FA868B18 (len B8) 5,143,768
NorFlashWriteBlocks: informational - Had to enable HSYS_FLASH flag.
AllocatePoolI: Type 6, Addr FAFEF598 (len 20) 526,048
AllocatePoolI: Type 6, Addr FAFEF618 (len 120) 526,376
ConvertRange: F5DF0000-F5E3FFFF to type 6
AddRange: F5DF0000-F5E3FFFF to 6
AllocatePoolI: Type 6, Addr F5DF0018 (len 40000) 788,560
AllocatePoolI: Type 4, Addr FA868C18 (len 10) 5,143,824
FreePool: FA868C18 (len 10) 5,143,768
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FAFEF720
AllocatePoolI: Type 4, Addr FA868C18 (len 58) 5,143,896
AllocatePoolI: Type 4, Addr FA868C98 (len 38) 5,143,992
InstallProtocolInterface: 964E5B21-6459-11D2-8E39-00A0C969723B FAFEF658
AllocatePoolI: Type 4, Addr FA868E98 (len 48) 5,144,104
AllocatePoolI: Type 4, Addr FA868398 (len 58) 5,144,232
InstallProtocolInterface: CE345171-BA0B-11D2-8E4F-00A0C969723B FAFEF6B8
AllocatePoolI: Type 4, Addr FA868998 (len 48) 5,144,344
AllocatePoolI: Type 4, Addr FA868818 (len 58) 5,144,472
AllocatePoolI: Type 6, Addr FAFEEB18 (len 120) 788,888
ConvertRange: FAFC0000-FAFDFFFF to type 6
AddRange: FAFC0000-FAFDFFFF to 6
AllocatePoolI: Type 6, Addr FAFC0018 (len 10000) 854,464
AllocatePoolI: Type 4, Addr FA868898 (len 18) 5,144,536
AllocatePoolI: Type 4, Addr FA868918 (len 30) 5,144,624
FreePool: FA868898 (len 18) 5,144,560
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FAFEEC20
AllocatePoolI: Type 4, Addr FA868898 (len 58) 5,144,688
AllocatePoolI: Type 4, Addr FA868418 (len 38) 5,144,784
InstallProtocolInterface: 964E5B21-6459-11D2-8E39-00A0C969723B FAFEEB58
AllocatePoolI: Type 4, Addr FA868718 (len 58) 5,144,912
InstallProtocolInterface: CE345171-BA0B-11D2-8E4F-00A0C969723B FAFEEBB8
AllocatePoolI: Type 4, Addr FA868798 (len 58) 5,145,040
AllocatePoolI: Type 6, Addr FAFEF318 (len 120) 854,792
ConvertRange: F5DA0000-F5DEFFFF to type 6
AddRange: F5DA0000-F5DEFFFF to 6
AllocatePoolI: Type 6, Addr F5DA0018 (len 40000) 1,116,976
AllocatePoolI: Type 4, Addr FA868498 (len 20) 5,145,112
AllocatePoolI: Type 4, Addr FA868698 (len 30) 5,145,200
FreePool: FA868498 (len 20) 5,145,128
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FAFEF420
AllocatePoolI: Type 4, Addr FA868498 (len 58) 5,145,256
AllocatePoolI: Type 4, Addr FA868518 (len 38) 5,145,352
InstallProtocolInterface: 964E5B21-6459-11D2-8E39-00A0C969723B FAFEF358
AllocatePoolI: Type 4, Addr FA868598 (len 58) 5,145,480
InstallProtocolInterface: CE345171-BA0B-11D2-8E4F-00A0C969723B FAFEF3B8
AllocatePoolI: Type 4, Addr FA868618 (len 58) 5,145,608
AllocatePoolI: Type 6, Addr FAFEEC98 (len 120) 1,117,304
ConvertRange: FAFA0000-FAFBFFFF to type 6
AddRange: FAFA0000-FAFBFFFF to 6
AllocatePoolI: Type 6, Addr FAFA0018 (len 10000) 1,182,880
ConvertRange: FA8A9000-FA8A9FFF to type 4
AddRange: FA8A9000-FA8A9FFF to 4
AllocatePoolI: Type 4, Addr FA8A9018 (len 28) 5,145,688
AllocatePoolI: Type 4, Addr FA8A9F18 (len 30) 5,145,776
FreePool: FA8A9018 (len 28) 5,145,696
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B FAFEEDA0
AllocatePoolI: Type 4, Addr FA8A9018 (len 58) 5,145,824
AllocatePoolI: Type 4, Addr FA8A9F98 (len 38) 5,145,920
InstallProtocolInterface: 964E5B21-6459-11D2-8E39-00A0C969723B FAFEECD8
AllocatePoolI: Type 4, Addr FA8A9B18 (len 58) 5,146,048
InstallProtocolInterface: 8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 FAFEED58
AllocatePoolI: Type 4, Addr FA8A9E18 (len 58) 5,146,176
AllocatePoolI: Type 4, Addr FA8A9E98 (len 30) 5,146,264
FvbRead(Parameters: Lba=0, Offset=0x0, *NumBytes=0x40, Buffer @ 0xFEFFF7B0)
NorFlashFvbInitialize
GCD:AddMemorySpace(Base=000000000C000000,Length=0000000003FF0000)
  GcdMemoryType   = MMIO     
  Capabilities    = 8000000000000001
AllocatePoolI: Type 4, Addr FA8A9B98 (len 50) 5,146,384
AllocatePoolI: Type 4, Addr FA8A9D98 (len 50) 5,146,504
  Status = Success
AllocatePoolI: Type 4, Addr FA8A9098 (len 188) 5,146,936
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000000BFFFFFF 0000000000000000 0000000000000000 
MMIO       000000000C000000-000000000FFEFFFF C000000000000001 0000000000000000 
NonExist   000000000FFF0000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000*
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FA8A9098 (len 188) 5,146,504
GCD:SetMemorySpaceAttributes(Base=000000000C000000,Length=0000000003FF0000)
  Attributes  = 8000000000000001
AllocatePoolI: Type 4, Addr FA8A9998 (len 50) 5,146,624
AllocatePoolI: Type 4, Addr FA8A9A18 (len 50) 5,146,744
FreePool: FA8A9998 (len 50) 5,146,624
FreePool: FA8A9A18 (len 50) 5,146,504
  Status = 00000002
AllocatePoolI: Type 4, Addr FA8A9098 (len 188) 5,146,936
GCDMemType Range                             Capabilities     Attributes      
========== ================================= ================ ================
NonExist   0000000000000000-000000000BFFFFFF 0000000000000000 0000000000000000 
MMIO       000000000C000000-000000000FFEFFFF C000000000000001 0000000000000000 
NonExist   000000000FFF0000-000000007FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000080000000-00000000FEFFFFFF 800000000000000E 0000000000000000*
NonExist   00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000000 
SystemMem  0000000880000000-00000008FFFFFFFF 800000000000000E 0000000000000000*
NonExist   0000000900000000-0000000FFFFFFFFF 0000000000000000 0000000000000000 

FreePool: FA8A9098 (len 188) 5,146,504

ASSERT_EFI_ERROR (Status = 00000002)
ASSERT [ArmVeNorFlashDxe] /home/steven/aarch64fw/workspace/edk2/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c(750): !EFI_ERROR (Status)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 10:30 Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered Steve Capper
@ 2018-04-11 12:25 ` Laszlo Ersek
  2018-04-11 15:34   ` Supreeth Venkatesh
                     ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Laszlo Ersek @ 2018-04-11 12:25 UTC (permalink / raw)
  To: Steve Capper, edk2-devel; +Cc: Nariman Poushin, Leif Lindholm, Ard Biesheuvel

Hi Steve,

On 04/11/18 12:30, Steve Capper wrote:
> Hello,
> I am trying to debug a boot problem for a recent build of EDK2 in an
> Arm FVP model.
>
> I built EDK2 from the following branches:
> Edk2: a146c532c754106431b063fec9985a838afd82be
> Edk2-platforms: e74f53df8b18e4aed0c9df0942ce0c30f78a68e2
>
> Toolchain: Debian Stretch latest (though I have also tried Linaro\x19s
> GCC 5 latest).
>
> Build command:
> GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -b
> DEBUG -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc
>
> The boot log can be found in the attached file. I *think* this is due
> to the Cpu Arch protocol not actually being ready when
> CoreConvertSpace is called by the SetMemoryAttributes from the
> NorFlash code.
>
> I have found that this code path fails:
> https://github.com/tianocore/edk2/blob/a146c532c754106431b063fec9985a838afd82be/MdeModulePkg/Core/Dxe/Gcd/Gcd.c#L893
>
> The only modification I have made is to edk2-platforms to get more
> debug output (PcdDebugPrintErrorLevel).
>
> Unfortunately, I'm not sure how to fix this?

This is a bit of a problem.

The gDS->SetMemorySpaceAttributes() DXE service is allowed to fail if
the CPU architectural protocol has not been installed yet. This is
documented in the Platform Init spec (although riddled by a few typos --
EFI_NOT_AVAILABLE_YET is documented under the preceding
GetMemorySpaceDescriptor() section, and not in the correct
SetMemorySpaceAttributes() section).

The usual solution for DXE drivers is to add an explicit dependency on
gEfiCpuArchProtocolGuid to the DEPEX section in the INF file. You can
see an example in commit f9a8be423cdd
("ArmVirtualizationPkg/PciHostBridgeDxe: MMIO aperture must not be
uncached", 2015-02-23).

And that's where the issue is. If you check the [Depex] section in
"ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf", you find

> [Depex]
>   #
>   # NorFlashDxe must be loaded before VariableRuntimeDxe in case empty flash needs populating with default values
>   #
>   BEFORE gVariableRuntimeDxeFileGuid

Why is BEFORE technically an issue here? Because, it cannot be combined
with other depex opcodes. From the PI spec:

> If this opcode is present in a dependency expression, it must be the
> first and only opcode in the expression. If is appears in any other
> location in the dependency expression, then the dependency expression
> is evaluated to FALSE.

So we can't simply combine the existent BEFORE depex with "AND
gEfiCpuArchProtocolGuid", like you see in the commit f9a8be423cdd
example above.

Now, more to the point, a "BEFORE" depex is *always* a hack. From the PI
spec:

> This opcode tells the DXE Dispatcher that the DXE driver that is
> associated with this dependency expression must be dispatched just
> before the DXE driver with the file name specified by GUID. This means
> that as soon as the dependency expression for the DXE driver specified
> by GUID evaluates to TRUE, then this DXE driver must be placed in the
> dispatch queue just before the DXE driver with the file name specified
> by GUID.

Sometimes there's really no way around such a hack, to express an
inter-module dependency, but even then, there is a better way to
implement it. Namely,
- a custom protocol GUID can be invented,
- the pre-requisite module can install a NULL protocol interface with
  that GUID,
- and
  - either the protocol GUID can be added directly to the [depex]
    section of the dependent module (if the latter module is under the
    platform's control),
  - or the platform DSC file can hook a NULL-class library instance into
    the dependent module, such that the lib instance makes the dependent
    module *inherit* a [depex] on the protocol GUID.

In other words, if we want to order the dispatch of a
platform-independent module (that lives in another Package), due to
platform-specific circumstances, behind another module that our platform
owns, then we can change our platform DSC to "imbue" the module with a
dependency on a custom protocol GUID. We can then install that NULL
protocol in our own module. Under this scheme the usual dependency
resolution will order things the right way, and all the depex-es remain
composable with other GUIDs.

OK -- so *should* we rewrite this BEFORE depex, like described above? I
don't think so. In my opinion, the *idea* of this dependency is wrong.
The BEFORE depex was introduced in commit 6acb379fbcf8
("ArmPlatformPkg/CTA9x4: Remove Variable Storage FD file from FDF",
2011-03-31), and the idea there was to replace the build-time
pre-formatting of the flash variable store with runtime formatting. You
might ask why this replacement needed an explicit ordering hint between
drivers (i.e. why any DEPEXes had to be touched at all). Here's why:

- For *writing* non-volatile UEFI variables, a platform-independent
  protocol dependency chain already exists. At the least abstract level,
  we have the FVB (firmware volume block) protocol service, e.g.
  NorFlashDxe. At the next level, we have the platform-independent FTW
  (fault tolerant write) driver. Finally, at the top (the most abstract
  level), we have the non-volatile variable write service / driver.

- However, for *reading* non-volatile UEFI variables, no such dependency
  chain exists. The variable driver (the top level from the previous
  bullet) will just go ahead and read various headers from the flash
  chip. If those headers are not correctly formatted, the variable
  driver blows up and the platform will not boot. To solve this issue,
  platform FDF files usually pre-format a variable store template at
  build-time, which will at once satisfy the "read-side startup" of the
  variable driver.

Unfortunately, this requires FDF files to contain various ugly hexdumps,
and people are tempted to replace those with runtime formatting of the
varstore headers. In turn though, they have to employ hacks for ordering
the variable driver behind their runtime formatting. Hence the BEFORE
depex. :(

So, what can we do? Given that NorFlashDxe is used by several platforms,
the ugly BEFORE depex should be removed. Once BEFORE is removed, you can
simply add "gEfiCpuArchProtocolGuid", and then the current issue will be
solved. But, what shall take the place of BEFORE?

Using ArmVirtQemu as an example platform, the answer is "nothing",
because ArmVirtQemu already pre-formats the varstore template -- please
see "ArmVirtPkg/VarStore.fdf.inc". For all other platforms that don't do
this -- and I don't see
"Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf" doing it --,
there are two choices:

- build a varstore template in *all* of the platform FDF files where the
  platform DSC file includes the NorFlashDxe driver -- in this case, the
  BEFORE needs no replacement, it can simply be dropped,

- or implement the custom NULL protocol trick that I described above.
  Platforms that don't actually *depend* on this trick, such as
  ArmVirtQemu, will simply ignore the new protocol instance in the
  protocol database.

For the second option, there are several examples under OvmfPkg and
ArmVirtPkg. One is:

- "MdeModulePkg/Include/Guid/PlatformHasAcpi.h" defines the custom
  "gEdkiiPlatformHasAcpiGuid".

- "ArmVirtPkg/ArmVirtQemu.dsc" includes the
  "ArmVirtPkg/PlatformHasAcpiDtDxe" platform driver, which installs a
  NULL protocol interface with the above custom GUID under certain
  circumstances.

- "EmbeddedPkg/Library/PlatformHasAcpiLib" is a library instance that
  does nothing; it just has an empty constructor function, and a
  dependency on the GUID.

- "ArmVirtPkg/ArmVirt.dsc.inc" hooks the library into
  "MdeModulePkg/Universal/Acpi/AcpiTableDxe", imbuing the latter with a
  dependency on the protocol GUID.

As a result, "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will not be
dispatched until (and, unless!) "ArmVirtPkg/PlatformHasAcpiDtDxe"
installs the GUID. If the GUID is never installed, then
"MdeModulePkg/Universal/Acpi/AcpiTableDxe" will never be dispatched.

Summary:
(1) introduce a custom GUID for "NorFlashDxe has formatted the variable
    store headers for the variable driver to read";
(2) install the GUID in NorFlashDxe once it's done verifying and/or
    formatting the headers;
(3) introduce a custom library instance with an empty constructor
    function, and a DEPEX on the GUID;
(4) hook the library instance into
    "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf"
    in all the platform DSC files where the platform build does not
    pre-format a varstore template in the FDF file;
(5) replace the BEFORE depex with gEfiCpuArchProtocolGuid.

Thanks,
Laszlo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 12:25 ` Laszlo Ersek
@ 2018-04-11 15:34   ` Supreeth Venkatesh
  2018-04-11 16:10     ` Ard Biesheuvel
  2018-04-11 16:20     ` Laszlo Ersek
  2018-04-11 16:41   ` Steve Capper
  2018-04-12 15:02   ` Gao, Liming
  2 siblings, 2 replies; 9+ messages in thread
From: Supreeth Venkatesh @ 2018-04-11 15:34 UTC (permalink / raw)
  To: Laszlo Ersek, Steve Capper, edk2-devel@lists.01.org
  Cc: Ard Biesheuvel, Leif Lindholm, Nariman Poushin

Laszlo/Steve,

I ran into the same problem on ArmVExpress-FVP-AArch64 while running management mode.
I have fixed this problem in this patch by reordering driver load order here:
https://lists.01.org/pipermail/edk2-devel/2018-April/023550.html

Not sure whether Leif/Ard/Laszlo agree with this.

Thanks,
Supreeth

-----Original Message-----
From: edk2-devel <edk2-devel-bounces@lists.01.org> On Behalf Of Laszlo Ersek
Sent: Wednesday, April 11, 2018 7:26 AM
To: Steve Capper <steve.capper@linaro.org>; edk2-devel@lists.01.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Leif Lindholm <leif.lindholm@linaro.org>; Nariman Poushin <nariman.poushin@linaro.org>
Subject: Re: [edk2] Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered

Hi Steve,

On 04/11/18 12:30, Steve Capper wrote:
> Hello,
> I am trying to debug a boot problem for a recent build of EDK2 in an
> Arm FVP model.
>
> I built EDK2 from the following branches:
> Edk2: a146c532c754106431b063fec9985a838afd82be
> Edk2-platforms: e74f53df8b18e4aed0c9df0942ce0c30f78a68e2
>
> Toolchain: Debian Stretch latest (though I have also tried Linaro\x19s
> GCC 5 latest).
>
> Build command:
> GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -b
> DEBUG -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc
>
> The boot log can be found in the attached file. I *think* this is due
> to the Cpu Arch protocol not actually being ready when
> CoreConvertSpace is called by the SetMemoryAttributes from the
> NorFlash code.
>
> I have found that this code path fails:
> https://github.com/tianocore/edk2/blob/a146c532c754106431b063fec9985a8
> 38afd82be/MdeModulePkg/Core/Dxe/Gcd/Gcd.c#L893
>
> The only modification I have made is to edk2-platforms to get more
> debug output (PcdDebugPrintErrorLevel).
>
> Unfortunately, I'm not sure how to fix this?

This is a bit of a problem.

The gDS->SetMemorySpaceAttributes() DXE service is allowed to fail if the CPU architectural protocol has not been installed yet. This is documented in the Platform Init spec (although riddled by a few typos -- EFI_NOT_AVAILABLE_YET is documented under the preceding
GetMemorySpaceDescriptor() section, and not in the correct
SetMemorySpaceAttributes() section).

The usual solution for DXE drivers is to add an explicit dependency on gEfiCpuArchProtocolGuid to the DEPEX section in the INF file. You can see an example in commit f9a8be423cdd
("ArmVirtualizationPkg/PciHostBridgeDxe: MMIO aperture must not be uncached", 2015-02-23).

And that's where the issue is. If you check the [Depex] section in "ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf", you find

> [Depex]
>   #
>   # NorFlashDxe must be loaded before VariableRuntimeDxe in case empty flash needs populating with default values
>   #
>   BEFORE gVariableRuntimeDxeFileGuid

Why is BEFORE technically an issue here? Because, it cannot be combined with other depex opcodes. From the PI spec:

> If this opcode is present in a dependency expression, it must be the
> first and only opcode in the expression. If is appears in any other
> location in the dependency expression, then the dependency expression
> is evaluated to FALSE.

So we can't simply combine the existent BEFORE depex with "AND gEfiCpuArchProtocolGuid", like you see in the commit f9a8be423cdd example above.

Now, more to the point, a "BEFORE" depex is *always* a hack. From the PI
spec:

> This opcode tells the DXE Dispatcher that the DXE driver that is
> associated with this dependency expression must be dispatched just
> before the DXE driver with the file name specified by GUID. This means
> that as soon as the dependency expression for the DXE driver specified
> by GUID evaluates to TRUE, then this DXE driver must be placed in the
> dispatch queue just before the DXE driver with the file name specified
> by GUID.

Sometimes there's really no way around such a hack, to express an inter-module dependency, but even then, there is a better way to implement it. Namely,
- a custom protocol GUID can be invented,
- the pre-requisite module can install a NULL protocol interface with
  that GUID,
- and
  - either the protocol GUID can be added directly to the [depex]
    section of the dependent module (if the latter module is under the
    platform's control),
  - or the platform DSC file can hook a NULL-class library instance into
    the dependent module, such that the lib instance makes the dependent
    module *inherit* a [depex] on the protocol GUID.

In other words, if we want to order the dispatch of a platform-independent module (that lives in another Package), due to platform-specific circumstances, behind another module that our platform owns, then we can change our platform DSC to "imbue" the module with a dependency on a custom protocol GUID. We can then install that NULL protocol in our own module. Under this scheme the usual dependency resolution will order things the right way, and all the depex-es remain composable with other GUIDs.

OK -- so *should* we rewrite this BEFORE depex, like described above? I don't think so. In my opinion, the *idea* of this dependency is wrong.
The BEFORE depex was introduced in commit 6acb379fbcf8
("ArmPlatformPkg/CTA9x4: Remove Variable Storage FD file from FDF", 2011-03-31), and the idea there was to replace the build-time pre-formatting of the flash variable store with runtime formatting. You might ask why this replacement needed an explicit ordering hint between drivers (i.e. why any DEPEXes had to be touched at all). Here's why:

- For *writing* non-volatile UEFI variables, a platform-independent
  protocol dependency chain already exists. At the least abstract level,
  we have the FVB (firmware volume block) protocol service, e.g.
  NorFlashDxe. At the next level, we have the platform-independent FTW
  (fault tolerant write) driver. Finally, at the top (the most abstract
  level), we have the non-volatile variable write service / driver.

- However, for *reading* non-volatile UEFI variables, no such dependency
  chain exists. The variable driver (the top level from the previous
  bullet) will just go ahead and read various headers from the flash
  chip. If those headers are not correctly formatted, the variable
  driver blows up and the platform will not boot. To solve this issue,
  platform FDF files usually pre-format a variable store template at
  build-time, which will at once satisfy the "read-side startup" of the
  variable driver.

Unfortunately, this requires FDF files to contain various ugly hexdumps, and people are tempted to replace those with runtime formatting of the varstore headers. In turn though, they have to employ hacks for ordering the variable driver behind their runtime formatting. Hence the BEFORE depex. :(

So, what can we do? Given that NorFlashDxe is used by several platforms, the ugly BEFORE depex should be removed. Once BEFORE is removed, you can simply add "gEfiCpuArchProtocolGuid", and then the current issue will be solved. But, what shall take the place of BEFORE?

Using ArmVirtQemu as an example platform, the answer is "nothing", because ArmVirtQemu already pre-formats the varstore template -- please see "ArmVirtPkg/VarStore.fdf.inc". For all other platforms that don't do this -- and I don't see "Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf" doing it --, there are two choices:

- build a varstore template in *all* of the platform FDF files where the
  platform DSC file includes the NorFlashDxe driver -- in this case, the
  BEFORE needs no replacement, it can simply be dropped,

- or implement the custom NULL protocol trick that I described above.
  Platforms that don't actually *depend* on this trick, such as
  ArmVirtQemu, will simply ignore the new protocol instance in the
  protocol database.

For the second option, there are several examples under OvmfPkg and ArmVirtPkg. One is:

- "MdeModulePkg/Include/Guid/PlatformHasAcpi.h" defines the custom
  "gEdkiiPlatformHasAcpiGuid".

- "ArmVirtPkg/ArmVirtQemu.dsc" includes the
  "ArmVirtPkg/PlatformHasAcpiDtDxe" platform driver, which installs a
  NULL protocol interface with the above custom GUID under certain
  circumstances.

- "EmbeddedPkg/Library/PlatformHasAcpiLib" is a library instance that
  does nothing; it just has an empty constructor function, and a
  dependency on the GUID.

- "ArmVirtPkg/ArmVirt.dsc.inc" hooks the library into
  "MdeModulePkg/Universal/Acpi/AcpiTableDxe", imbuing the latter with a
  dependency on the protocol GUID.

As a result, "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will not be dispatched until (and, unless!) "ArmVirtPkg/PlatformHasAcpiDtDxe"
installs the GUID. If the GUID is never installed, then "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will never be dispatched.

Summary:
(1) introduce a custom GUID for "NorFlashDxe has formatted the variable
    store headers for the variable driver to read";
(2) install the GUID in NorFlashDxe once it's done verifying and/or
    formatting the headers;
(3) introduce a custom library instance with an empty constructor
    function, and a DEPEX on the GUID;
(4) hook the library instance into
    "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf"
    in all the platform DSC files where the platform build does not
    pre-format a varstore template in the FDF file;
(5) replace the BEFORE depex with gEfiCpuArchProtocolGuid.

Thanks,
Laszlo
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 15:34   ` Supreeth Venkatesh
@ 2018-04-11 16:10     ` Ard Biesheuvel
  2018-04-11 16:25       ` Laszlo Ersek
  2018-04-11 16:20     ` Laszlo Ersek
  1 sibling, 1 reply; 9+ messages in thread
From: Ard Biesheuvel @ 2018-04-11 16:10 UTC (permalink / raw)
  To: Supreeth Venkatesh, Leif Lindholm
  Cc: Laszlo Ersek, Steve Capper, edk2-devel@lists.01.org,
	Nariman Poushin

On 11 April 2018 at 17:34, Supreeth Venkatesh
<Supreeth.Venkatesh@arm.com> wrote:
> Laszlo/Steve,
>
> I ran into the same problem on ArmVExpress-FVP-AArch64 while running management mode.
> I have fixed this problem in this patch by reordering driver load order here:
> https://lists.01.org/pipermail/edk2-devel/2018-April/023550.html
>
> Not sure whether Leif/Ard/Laszlo agree with this.
>

Nope, sorry. PI has an elaborate scheme involving dependency
expressions to manage load order of modules, and tweaking the order
they appear in the flash volume to get things working again is not the
way to address this.

Ironically, though, it seems my patch
61a7b0ec634fa3288f47929ba3ced05ff48de739 (which introduces an AFTER
xxx depex) is the culprit here, and so I should probably take some
responsibility to get things working again.

I will look into replacing the NorFlashDxe DEPEX with something more
suitable to address this issue, but I am a bit swamped at the moment,
so if anyone else beats me to it, I won't complain.

-- 
Ard.

> -----Original Message-----
> From: edk2-devel <edk2-devel-bounces@lists.01.org> On Behalf Of Laszlo Ersek
> Sent: Wednesday, April 11, 2018 7:26 AM
> To: Steve Capper <steve.capper@linaro.org>; edk2-devel@lists.01.org
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Leif Lindholm <leif.lindholm@linaro.org>; Nariman Poushin <nariman.poushin@linaro.org>
> Subject: Re: [edk2] Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
>
> Hi Steve,
>
> On 04/11/18 12:30, Steve Capper wrote:
>> Hello,
>> I am trying to debug a boot problem for a recent build of EDK2 in an
>> Arm FVP model.
>>
>> I built EDK2 from the following branches:
>> Edk2: a146c532c754106431b063fec9985a838afd82be
>> Edk2-platforms: e74f53df8b18e4aed0c9df0942ce0c30f78a68e2
>>
>> Toolchain: Debian Stretch latest (though I have also tried Linaro s
>> GCC 5 latest).
>>
>> Build command:
>> GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -b
>> DEBUG -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc
>>
>> The boot log can be found in the attached file. I *think* this is due
>> to the Cpu Arch protocol not actually being ready when
>> CoreConvertSpace is called by the SetMemoryAttributes from the
>> NorFlash code.
>>
>> I have found that this code path fails:
>> https://github.com/tianocore/edk2/blob/a146c532c754106431b063fec9985a8
>> 38afd82be/MdeModulePkg/Core/Dxe/Gcd/Gcd.c#L893
>>
>> The only modification I have made is to edk2-platforms to get more
>> debug output (PcdDebugPrintErrorLevel).
>>
>> Unfortunately, I'm not sure how to fix this?
>
> This is a bit of a problem.
>
> The gDS->SetMemorySpaceAttributes() DXE service is allowed to fail if the CPU architectural protocol has not been installed yet. This is documented in the Platform Init spec (although riddled by a few typos -- EFI_NOT_AVAILABLE_YET is documented under the preceding
> GetMemorySpaceDescriptor() section, and not in the correct
> SetMemorySpaceAttributes() section).
>
> The usual solution for DXE drivers is to add an explicit dependency on gEfiCpuArchProtocolGuid to the DEPEX section in the INF file. You can see an example in commit f9a8be423cdd
> ("ArmVirtualizationPkg/PciHostBridgeDxe: MMIO aperture must not be uncached", 2015-02-23).
>
> And that's where the issue is. If you check the [Depex] section in "ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf", you find
>
>> [Depex]
>>   #
>>   # NorFlashDxe must be loaded before VariableRuntimeDxe in case empty flash needs populating with default values
>>   #
>>   BEFORE gVariableRuntimeDxeFileGuid
>
> Why is BEFORE technically an issue here? Because, it cannot be combined with other depex opcodes. From the PI spec:
>
>> If this opcode is present in a dependency expression, it must be the
>> first and only opcode in the expression. If is appears in any other
>> location in the dependency expression, then the dependency expression
>> is evaluated to FALSE.
>
> So we can't simply combine the existent BEFORE depex with "AND gEfiCpuArchProtocolGuid", like you see in the commit f9a8be423cdd example above.
>
> Now, more to the point, a "BEFORE" depex is *always* a hack. From the PI
> spec:
>
>> This opcode tells the DXE Dispatcher that the DXE driver that is
>> associated with this dependency expression must be dispatched just
>> before the DXE driver with the file name specified by GUID. This means
>> that as soon as the dependency expression for the DXE driver specified
>> by GUID evaluates to TRUE, then this DXE driver must be placed in the
>> dispatch queue just before the DXE driver with the file name specified
>> by GUID.
>
> Sometimes there's really no way around such a hack, to express an inter-module dependency, but even then, there is a better way to implement it. Namely,
> - a custom protocol GUID can be invented,
> - the pre-requisite module can install a NULL protocol interface with
>   that GUID,
> - and
>   - either the protocol GUID can be added directly to the [depex]
>     section of the dependent module (if the latter module is under the
>     platform's control),
>   - or the platform DSC file can hook a NULL-class library instance into
>     the dependent module, such that the lib instance makes the dependent
>     module *inherit* a [depex] on the protocol GUID.
>
> In other words, if we want to order the dispatch of a platform-independent module (that lives in another Package), due to platform-specific circumstances, behind another module that our platform owns, then we can change our platform DSC to "imbue" the module with a dependency on a custom protocol GUID. We can then install that NULL protocol in our own module. Under this scheme the usual dependency resolution will order things the right way, and all the depex-es remain composable with other GUIDs.
>
> OK -- so *should* we rewrite this BEFORE depex, like described above? I don't think so. In my opinion, the *idea* of this dependency is wrong.
> The BEFORE depex was introduced in commit 6acb379fbcf8
> ("ArmPlatformPkg/CTA9x4: Remove Variable Storage FD file from FDF", 2011-03-31), and the idea there was to replace the build-time pre-formatting of the flash variable store with runtime formatting. You might ask why this replacement needed an explicit ordering hint between drivers (i.e. why any DEPEXes had to be touched at all). Here's why:
>
> - For *writing* non-volatile UEFI variables, a platform-independent
>   protocol dependency chain already exists. At the least abstract level,
>   we have the FVB (firmware volume block) protocol service, e.g.
>   NorFlashDxe. At the next level, we have the platform-independent FTW
>   (fault tolerant write) driver. Finally, at the top (the most abstract
>   level), we have the non-volatile variable write service / driver.
>
> - However, for *reading* non-volatile UEFI variables, no such dependency
>   chain exists. The variable driver (the top level from the previous
>   bullet) will just go ahead and read various headers from the flash
>   chip. If those headers are not correctly formatted, the variable
>   driver blows up and the platform will not boot. To solve this issue,
>   platform FDF files usually pre-format a variable store template at
>   build-time, which will at once satisfy the "read-side startup" of the
>   variable driver.
>
> Unfortunately, this requires FDF files to contain various ugly hexdumps, and people are tempted to replace those with runtime formatting of the varstore headers. In turn though, they have to employ hacks for ordering the variable driver behind their runtime formatting. Hence the BEFORE depex. :(
>
> So, what can we do? Given that NorFlashDxe is used by several platforms, the ugly BEFORE depex should be removed. Once BEFORE is removed, you can simply add "gEfiCpuArchProtocolGuid", and then the current issue will be solved. But, what shall take the place of BEFORE?
>
> Using ArmVirtQemu as an example platform, the answer is "nothing", because ArmVirtQemu already pre-formats the varstore template -- please see "ArmVirtPkg/VarStore.fdf.inc". For all other platforms that don't do this -- and I don't see "Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf" doing it --, there are two choices:
>
> - build a varstore template in *all* of the platform FDF files where the
>   platform DSC file includes the NorFlashDxe driver -- in this case, the
>   BEFORE needs no replacement, it can simply be dropped,
>
> - or implement the custom NULL protocol trick that I described above.
>   Platforms that don't actually *depend* on this trick, such as
>   ArmVirtQemu, will simply ignore the new protocol instance in the
>   protocol database.
>
> For the second option, there are several examples under OvmfPkg and ArmVirtPkg. One is:
>
> - "MdeModulePkg/Include/Guid/PlatformHasAcpi.h" defines the custom
>   "gEdkiiPlatformHasAcpiGuid".
>
> - "ArmVirtPkg/ArmVirtQemu.dsc" includes the
>   "ArmVirtPkg/PlatformHasAcpiDtDxe" platform driver, which installs a
>   NULL protocol interface with the above custom GUID under certain
>   circumstances.
>
> - "EmbeddedPkg/Library/PlatformHasAcpiLib" is a library instance that
>   does nothing; it just has an empty constructor function, and a
>   dependency on the GUID.
>
> - "ArmVirtPkg/ArmVirt.dsc.inc" hooks the library into
>   "MdeModulePkg/Universal/Acpi/AcpiTableDxe", imbuing the latter with a
>   dependency on the protocol GUID.
>
> As a result, "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will not be dispatched until (and, unless!) "ArmVirtPkg/PlatformHasAcpiDtDxe"
> installs the GUID. If the GUID is never installed, then "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will never be dispatched.
>
> Summary:
> (1) introduce a custom GUID for "NorFlashDxe has formatted the variable
>     store headers for the variable driver to read";
> (2) install the GUID in NorFlashDxe once it's done verifying and/or
>     formatting the headers;
> (3) introduce a custom library instance with an empty constructor
>     function, and a DEPEX on the GUID;
> (4) hook the library instance into
>     "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf"
>     in all the platform DSC files where the platform build does not
>     pre-format a varstore template in the FDF file;
> (5) replace the BEFORE depex with gEfiCpuArchProtocolGuid.
>
> Thanks,
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 15:34   ` Supreeth Venkatesh
  2018-04-11 16:10     ` Ard Biesheuvel
@ 2018-04-11 16:20     ` Laszlo Ersek
  1 sibling, 0 replies; 9+ messages in thread
From: Laszlo Ersek @ 2018-04-11 16:20 UTC (permalink / raw)
  To: Supreeth Venkatesh, Steve Capper, edk2-devel@lists.01.org
  Cc: Ard Biesheuvel, Leif Lindholm, Nariman Poushin

On 04/11/18 17:34, Supreeth Venkatesh wrote:
> Laszlo/Steve,
>
> I ran into the same problem on ArmVExpress-FVP-AArch64 while running
> management mode.
> I have fixed this problem in this patch by reordering driver load
> order here:
> https://lists.01.org/pipermail/edk2-devel/2018-April/023550.html
>
> Not sure whether Leif/Ard/Laszlo agree with this.

Unfortunately, that's not a fix, just an unreliable work-around. The
dispatch order between DXE modules is unspecified beyond the order
imposed by their dependency expressions (hence "depex"). I don't claim
that it's always feasible to fix the problem with custom NULL protocols,
but whenever it is, I suggest that we do. The protocol dependency
mechanism is clean and extensible, unlike "BEFORE" depex opcodes, or the
"naked" listing order in FDF files.

Admittedly, sometimes there's no way around specifying a precise
(partial) load order for several modules. For that, the APRIORI DXE file
should be used, if possible. And, the APRIORI DXE file should be kept as
small as possible (listing as few modules as possible).

I think we should implement the following changes.

(1) "ArmPkg/Drivers/ArmGic/ArmGicDxe.inf" produces two custom protocols
already, gHardwareInterruptProtocolGuid and
gHardwareInterrupt2ProtocolGuid. These are installed on the following
call path:

  InterruptDxeInitialize()                      [ArmPkg/Drivers/ArmGic/ArmGicDxe.c]
    GicV2DxeInitialize() | GicV3DxeInitialize() [ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c]
      InstallAndRegisterInterruptService()      [ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c]

The GUIDs come from "EmbeddedPkg/Include/Protocol/HardwareInterrupt.h"
and "EmbeddedPkg/Include/Protocol/HardwareInterrupt2.h", respectively.

Annotate "ArmPkg/Drivers/ArmGic/ArmGicDxe.inf" that it produces
gHardwareInterruptProtocolGuid and gHardwareInterrupt2ProtocolGuid, and
that it consumes (with a protocol notify) gEfiCpuArchProtocolGuid.

(2) Replace "AFTER gArmGicDxeFileGuid" in
"ArmPkg/Drivers/CpuDxe/CpuDxe.inf" with "gHardwareInterruptProtocolGuid
OR gHardwareInterrupt2ProtocolGuid".

(3) Replace "BEFORE gVariableRuntimeDxeFileGuid" in
"ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf" with
"gEfiCpuArchProtocolGuid".

(4) In all platforms that use NorFlashDxe without formatting a variable
store template at build time, make the variable driver depend on
NorFlashDxe's runtime formatting, with the trick I described earlier.


In fact, I haven't booted ArmVirtQemu in a while, and now I'm finding it
is afflicted by the same assertion failure as the one reported by Steve.
This is somewhat strange because I don't see any Arm*Pkg changes since
my commit 34711bf19833 ("ArmVirtPkg/PlatformBootManagerLib: return to
"-kernel before boot devices"", 2018-03-16). I definitely tested that
commit successfully, so I wonder what may have triggered / exposed the
issue recently. Possibly BaseTools changes? That wouldn't be surprising;
again, the dispatch order is unspecified beyond depexes.

Either way, I guess I better get to work on this.

Thanks,
Laszlo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 16:10     ` Ard Biesheuvel
@ 2018-04-11 16:25       ` Laszlo Ersek
  0 siblings, 0 replies; 9+ messages in thread
From: Laszlo Ersek @ 2018-04-11 16:25 UTC (permalink / raw)
  To: Ard Biesheuvel, Supreeth Venkatesh, Leif Lindholm
  Cc: Steve Capper, edk2-devel@lists.01.org, Nariman Poushin

On 04/11/18 18:10, Ard Biesheuvel wrote:
> On 11 April 2018 at 17:34, Supreeth Venkatesh
> <Supreeth.Venkatesh@arm.com> wrote:
>> Laszlo/Steve,
>>
>> I ran into the same problem on ArmVExpress-FVP-AArch64 while running management mode.
>> I have fixed this problem in this patch by reordering driver load order here:
>> https://lists.01.org/pipermail/edk2-devel/2018-April/023550.html
>>
>> Not sure whether Leif/Ard/Laszlo agree with this.
>>
> 
> Nope, sorry. PI has an elaborate scheme involving dependency
> expressions to manage load order of modules, and tweaking the order
> they appear in the flash volume to get things working again is not the
> way to address this.
> 
> Ironically, though, it seems my patch
> 61a7b0ec634fa3288f47929ba3ced05ff48de739 (which introduces an AFTER
> xxx depex) is the culprit here, and so I should probably take some
> responsibility to get things working again.
> 
> I will look into replacing the NorFlashDxe DEPEX with something more
> suitable to address this issue, but I am a bit swamped at the moment,
> so if anyone else beats me to it, I won't complain.

I'll try. :)

Thanks,
Laszlo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 12:25 ` Laszlo Ersek
  2018-04-11 15:34   ` Supreeth Venkatesh
@ 2018-04-11 16:41   ` Steve Capper
  2018-04-12 15:02   ` Gao, Liming
  2 siblings, 0 replies; 9+ messages in thread
From: Steve Capper @ 2018-04-11 16:41 UTC (permalink / raw)
  To: Laszlo Ersek; +Cc: edk2-devel, Nariman Poushin, Leif Lindholm, Ard Biesheuvel

On 11 April 2018 at 13:25, Laszlo Ersek <lersek@redhat.com> wrote:
> Hi Steve,

Hi Laszlo,

[...]

> Summary:
> (1) introduce a custom GUID for "NorFlashDxe has formatted the variable
>     store headers for the variable driver to read";
> (2) install the GUID in NorFlashDxe once it's done verifying and/or
>     formatting the headers;
> (3) introduce a custom library instance with an empty constructor
>     function, and a DEPEX on the GUID;
> (4) hook the library instance into
>     "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf"
>     in all the platform DSC files where the platform build does not
>     pre-format a varstore template in the FDF file;
> (5) replace the BEFORE depex with gEfiCpuArchProtocolGuid.
>

A *very* big thank you for taking the time to explain this in detail,
after a couple of reads (I mainly just build EDK2) I was able to get
something booting following the above approach :-).

Cheers,
--
Steve


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-11 12:25 ` Laszlo Ersek
  2018-04-11 15:34   ` Supreeth Venkatesh
  2018-04-11 16:41   ` Steve Capper
@ 2018-04-12 15:02   ` Gao, Liming
  2018-04-12 17:31     ` Laszlo Ersek
  2 siblings, 1 reply; 9+ messages in thread
From: Gao, Liming @ 2018-04-12 15:02 UTC (permalink / raw)
  To: Laszlo Ersek, Steve Capper, edk2-devel@lists.01.org
  Cc: Ard Biesheuvel, Leif Lindholm, Nariman Poushin

Laszlo:
  On variable storage format are hex, could you submit one bugzillar for it? I have some idea to simplify its description. We can reuse FV section for Variable storage. Its FV section is like below. 

[FV.NVStorage]
FileSystemGuid = gEfiSystemNvDataFvGuid
VariableSignatureGuid = gEfiAuthenticatedVariableGuid
VariabeRegionSize = 0x40000
FtwWorkingSpaceSize = 0x40000
FtwSpareSpaceSize = 0x40000

Thanks
Liming
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Laszlo Ersek
> Sent: Wednesday, April 11, 2018 8:26 PM
> To: Steve Capper <steve.capper@linaro.org>; edk2-devel@lists.01.org
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Leif Lindholm <leif.lindholm@linaro.org>; Nariman Poushin
> <nariman.poushin@linaro.org>
> Subject: Re: [edk2] Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
> 
> Hi Steve,
> 
> On 04/11/18 12:30, Steve Capper wrote:
> > Hello,
> > I am trying to debug a boot problem for a recent build of EDK2 in an
> > Arm FVP model.
> >
> > I built EDK2 from the following branches:
> > Edk2: a146c532c754106431b063fec9985a838afd82be
> > Edk2-platforms: e74f53df8b18e4aed0c9df0942ce0c30f78a68e2
> >
> > Toolchain: Debian Stretch latest (though I have also tried Linaro\x19s
> > GCC 5 latest).
> >
> > Build command:
> > GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -b
> > DEBUG -p Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc
> >
> > The boot log can be found in the attached file. I *think* this is due
> > to the Cpu Arch protocol not actually being ready when
> > CoreConvertSpace is called by the SetMemoryAttributes from the
> > NorFlash code.
> >
> > I have found that this code path fails:
> >
> https://github.com/tianocore/edk2/blob/a146c532c754106431b063fec9985a838afd82be/MdeModulePkg/Core/Dxe/Gcd/Gcd.c#L893
> >
> > The only modification I have made is to edk2-platforms to get more
> > debug output (PcdDebugPrintErrorLevel).
> >
> > Unfortunately, I'm not sure how to fix this?
> 
> This is a bit of a problem.
> 
> The gDS->SetMemorySpaceAttributes() DXE service is allowed to fail if
> the CPU architectural protocol has not been installed yet. This is
> documented in the Platform Init spec (although riddled by a few typos --
> EFI_NOT_AVAILABLE_YET is documented under the preceding
> GetMemorySpaceDescriptor() section, and not in the correct
> SetMemorySpaceAttributes() section).
> 
> The usual solution for DXE drivers is to add an explicit dependency on
> gEfiCpuArchProtocolGuid to the DEPEX section in the INF file. You can
> see an example in commit f9a8be423cdd
> ("ArmVirtualizationPkg/PciHostBridgeDxe: MMIO aperture must not be
> uncached", 2015-02-23).
> 
> And that's where the issue is. If you check the [Depex] section in
> "ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf", you find
> 
> > [Depex]
> >   #
> >   # NorFlashDxe must be loaded before VariableRuntimeDxe in case empty flash needs populating with default values
> >   #
> >   BEFORE gVariableRuntimeDxeFileGuid
> 
> Why is BEFORE technically an issue here? Because, it cannot be combined
> with other depex opcodes. From the PI spec:
> 
> > If this opcode is present in a dependency expression, it must be the
> > first and only opcode in the expression. If is appears in any other
> > location in the dependency expression, then the dependency expression
> > is evaluated to FALSE.
> 
> So we can't simply combine the existent BEFORE depex with "AND
> gEfiCpuArchProtocolGuid", like you see in the commit f9a8be423cdd
> example above.
> 
> Now, more to the point, a "BEFORE" depex is *always* a hack. From the PI
> spec:
> 
> > This opcode tells the DXE Dispatcher that the DXE driver that is
> > associated with this dependency expression must be dispatched just
> > before the DXE driver with the file name specified by GUID. This means
> > that as soon as the dependency expression for the DXE driver specified
> > by GUID evaluates to TRUE, then this DXE driver must be placed in the
> > dispatch queue just before the DXE driver with the file name specified
> > by GUID.
> 
> Sometimes there's really no way around such a hack, to express an
> inter-module dependency, but even then, there is a better way to
> implement it. Namely,
> - a custom protocol GUID can be invented,
> - the pre-requisite module can install a NULL protocol interface with
>   that GUID,
> - and
>   - either the protocol GUID can be added directly to the [depex]
>     section of the dependent module (if the latter module is under the
>     platform's control),
>   - or the platform DSC file can hook a NULL-class library instance into
>     the dependent module, such that the lib instance makes the dependent
>     module *inherit* a [depex] on the protocol GUID.
> 
> In other words, if we want to order the dispatch of a
> platform-independent module (that lives in another Package), due to
> platform-specific circumstances, behind another module that our platform
> owns, then we can change our platform DSC to "imbue" the module with a
> dependency on a custom protocol GUID. We can then install that NULL
> protocol in our own module. Under this scheme the usual dependency
> resolution will order things the right way, and all the depex-es remain
> composable with other GUIDs.
> 
> OK -- so *should* we rewrite this BEFORE depex, like described above? I
> don't think so. In my opinion, the *idea* of this dependency is wrong.
> The BEFORE depex was introduced in commit 6acb379fbcf8
> ("ArmPlatformPkg/CTA9x4: Remove Variable Storage FD file from FDF",
> 2011-03-31), and the idea there was to replace the build-time
> pre-formatting of the flash variable store with runtime formatting. You
> might ask why this replacement needed an explicit ordering hint between
> drivers (i.e. why any DEPEXes had to be touched at all). Here's why:
> 
> - For *writing* non-volatile UEFI variables, a platform-independent
>   protocol dependency chain already exists. At the least abstract level,
>   we have the FVB (firmware volume block) protocol service, e.g.
>   NorFlashDxe. At the next level, we have the platform-independent FTW
>   (fault tolerant write) driver. Finally, at the top (the most abstract
>   level), we have the non-volatile variable write service / driver.
> 
> - However, for *reading* non-volatile UEFI variables, no such dependency
>   chain exists. The variable driver (the top level from the previous
>   bullet) will just go ahead and read various headers from the flash
>   chip. If those headers are not correctly formatted, the variable
>   driver blows up and the platform will not boot. To solve this issue,
>   platform FDF files usually pre-format a variable store template at
>   build-time, which will at once satisfy the "read-side startup" of the
>   variable driver.
> 
> Unfortunately, this requires FDF files to contain various ugly hexdumps,
> and people are tempted to replace those with runtime formatting of the
> varstore headers. In turn though, they have to employ hacks for ordering
> the variable driver behind their runtime formatting. Hence the BEFORE
> depex. :(
> 
> So, what can we do? Given that NorFlashDxe is used by several platforms,
> the ugly BEFORE depex should be removed. Once BEFORE is removed, you can
> simply add "gEfiCpuArchProtocolGuid", and then the current issue will be
> solved. But, what shall take the place of BEFORE?
> 
> Using ArmVirtQemu as an example platform, the answer is "nothing",
> because ArmVirtQemu already pre-formats the varstore template -- please
> see "ArmVirtPkg/VarStore.fdf.inc". For all other platforms that don't do
> this -- and I don't see
> "Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf" doing it --,
> there are two choices:
> 
> - build a varstore template in *all* of the platform FDF files where the
>   platform DSC file includes the NorFlashDxe driver -- in this case, the
>   BEFORE needs no replacement, it can simply be dropped,
> 
> - or implement the custom NULL protocol trick that I described above.
>   Platforms that don't actually *depend* on this trick, such as
>   ArmVirtQemu, will simply ignore the new protocol instance in the
>   protocol database.
> 
> For the second option, there are several examples under OvmfPkg and
> ArmVirtPkg. One is:
> 
> - "MdeModulePkg/Include/Guid/PlatformHasAcpi.h" defines the custom
>   "gEdkiiPlatformHasAcpiGuid".
> 
> - "ArmVirtPkg/ArmVirtQemu.dsc" includes the
>   "ArmVirtPkg/PlatformHasAcpiDtDxe" platform driver, which installs a
>   NULL protocol interface with the above custom GUID under certain
>   circumstances.
> 
> - "EmbeddedPkg/Library/PlatformHasAcpiLib" is a library instance that
>   does nothing; it just has an empty constructor function, and a
>   dependency on the GUID.
> 
> - "ArmVirtPkg/ArmVirt.dsc.inc" hooks the library into
>   "MdeModulePkg/Universal/Acpi/AcpiTableDxe", imbuing the latter with a
>   dependency on the protocol GUID.
> 
> As a result, "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will not be
> dispatched until (and, unless!) "ArmVirtPkg/PlatformHasAcpiDtDxe"
> installs the GUID. If the GUID is never installed, then
> "MdeModulePkg/Universal/Acpi/AcpiTableDxe" will never be dispatched.
> 
> Summary:
> (1) introduce a custom GUID for "NorFlashDxe has formatted the variable
>     store headers for the variable driver to read";
> (2) install the GUID in NorFlashDxe once it's done verifying and/or
>     formatting the headers;
> (3) introduce a custom library instance with an empty constructor
>     function, and a DEPEX on the GUID;
> (4) hook the library instance into
>     "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf"
>     in all the platform DSC files where the platform build does not
>     pre-format a varstore template in the FDF file;
> (5) replace the BEFORE depex with gEfiCpuArchProtocolGuid.
> 
> Thanks,
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered
  2018-04-12 15:02   ` Gao, Liming
@ 2018-04-12 17:31     ` Laszlo Ersek
  0 siblings, 0 replies; 9+ messages in thread
From: Laszlo Ersek @ 2018-04-12 17:31 UTC (permalink / raw)
  To: Gao, Liming, Steve Capper, edk2-devel@lists.01.org
  Cc: Ard Biesheuvel, Leif Lindholm, Nariman Poushin

On 04/12/18 17:02, Gao, Liming wrote:
> Laszlo:
>   On variable storage format are hex, could you submit one bugzillar for it? I have some idea to simplify its description. We can reuse FV section for Variable storage. Its FV section is like below. 
> 
> [FV.NVStorage]
> FileSystemGuid = gEfiSystemNvDataFvGuid
> VariableSignatureGuid = gEfiAuthenticatedVariableGuid
> VariabeRegionSize = 0x40000
> FtwWorkingSpaceSize = 0x40000
> FtwSpareSpaceSize = 0x40000

This looks very nice; I've filed
<https://bugzilla.tianocore.org/show_bug.cgi?id=932>.

Thank you!
Laszlo


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-04-12 17:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-11 10:30 Boot failure for ArmVExpress-FVP-AArch64, CpuArch protocol does not appear to be registered Steve Capper
2018-04-11 12:25 ` Laszlo Ersek
2018-04-11 15:34   ` Supreeth Venkatesh
2018-04-11 16:10     ` Ard Biesheuvel
2018-04-11 16:25       ` Laszlo Ersek
2018-04-11 16:20     ` Laszlo Ersek
2018-04-11 16:41   ` Steve Capper
2018-04-12 15:02   ` Gao, Liming
2018-04-12 17:31     ` Laszlo Ersek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox