[Bug 2019537] [NEW] load shim fbaa64.efi cause exception on arm64

Jianyong Wu 2019537 at bugs.launchpad.net
Mon May 15 07:36:20 UTC 2023


Public bug reported:

Exception generates when start ubuntu:22.04 from edk2 based on qemu on
arm64:

FSOpen: Open '\EFI\BOOT\BOOTAA64.EFI' Success
[Bds] Expand PciRoot(0x0)/Pci(0x4,0x0) -> PciRoot(0x0)/Pci(0x4,0x0)/HD(15,GPT,06DEE026-3035-4AA3-89C2-9E5F5C2B6643,0x800,0x31801)/\EFI\BOOT\BOOTAA64.EFI
BdsDxe: loading Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x4,0x0)
[Security] 3rd party image[0] can be loaded after EndOfDxe: PciRoot(0x0)/Pci(0x4,0x0)/HD(15,GPT,06DEE026-3035-4AA3-89C2-9E5F5C2B6643,0x800,0x31801)/\EFI\BOOT\BOOTAA64.EFI.
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 13EB8CAC0
Loading driver at 0x0013C739000 EntryPoint=0x0013C757000
Loading driver at 0x0013C739000 EntryPoint=0x0013C757000
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 13EC6B318
ProtectUefiImageCommon - 0x3EB8CAC0
  - 0x000000013C739000 - 0x00000000000D7000
SetUefiImageMemoryAttributes - 0x000000013C739000 - 0x000000000001E000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000013C757000 - 0x0000000000067000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000013C7BE000 - 0x0000000000052000 (0x0000000000004008)
BdsDxe: starting Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x4,0x0)
InstallProtocolInterface: 605DAB50-E046-4300-ABB6-3DD810DD8B23 13C7EC9A0
FSOpen: Open '\EFI\BOOT\fbaa64.efi' Success
FSOpen: Open '\EFI\BOOT\fbaa64.efi' Success
SetMemoryAttributes: BaseAddress == 0x13C6F0000, Length == 0x19000, Attributes == 0x4000
ClearMemoryAttributes: BaseAddress == 0x13C6F0000, Length == 0x19000, Attributes == 0x22000


Synchronous Exception at 0x000000013C6F4000


Synchronous Exception at 0x000000013C6F4000
PC 0x00013C6F4000
PC 0x00013C7593F4
PC 0x00013C759608
PC 0x00013C75A32C
PC 0x00013C757030
PC 0x000047876468 (0x00004786F000+0x00007468) [ 1] DxeCore.dll
PC 0x00013FCDC688 (0x00013FCD6000+0x00006688) [ 2] BdsDxe.dll
PC 0x00013FCDF670 (0x00013FCD6000+0x00009670) [ 2] BdsDxe.dll
PC 0x000047878D88 (0x00004786F000+0x00009D88) [ 3] DxeCore.dll
[ 1] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
[ 2] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll
[ 3] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll

  X0 0x000000013F2B3218   X1 0x000000013FFD0018   X2 0x000000013C6F4000   X3 0x0000000000000000
  X4 0x000000013FD4C0E8   X5 0x000000004786E400   X6 0x000000008000004F   X7 0x0000000000000000
  X8 0x000000004786E3D0   X9 0x0000000000000002  X10 0x000000013C6F0000  X11 0x0000000000000003
 X12 0x0000000000000002  X13 0x0000000000000002  X14 0x0000000000000001  X15 0x0000000000000002
 X16 0x000000013FD45260  X17 0x00000000C19CD528  X18 0x0000000000000011  X19 0x000000013C7D8000
 X20 0x0000000000000000  X21 0x000000013F2B3218  X22 0x000000013C7EC930  X23 0x0000000000000001
 X24 0x000000013C7EC000  X25 0x000000013C7EC9F8  X26 0x000000013C7ECA00  X27 0x000000013C7ECA08
 X28 0x000000013C7ECA10   FP 0x000000004786E740   LR 0x000000013C7593F4

  V0 0xAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAF   V1 0x0000000000000000 0000000000000000
  V2 0x0000000000000000 0000000000000000   V3 0x0000000000000000 0000000000000000
  V4 0x0000000000000000 0000000000000000   V5 0x0000000000000000 0000000000000000
  V6 0x0000000000000000 0000000000000000   V7 0x0000000000000000 0000000000000000
  V8 0x0000000000000000 0000000000000000   V9 0x0000000000000000 0000000000000000
 V10 0x0000000000000000 0000000000000000  V11 0x0000000000000000 0000000000000000
 V12 0x0000000000000000 0000000000000000  V13 0x0000000000000000 0000000000000000
 V14 0x0000000000000000 0000000000000000  V15 0x0000000000000000 0000000000000000
 V16 0x0000000000000000 0000000000000000  V17 0x0000000000000000 0000000000000000
 V18 0x0000000000000000 0000000000000000  V19 0x0000000000000000 0000000000000000
 V20 0x0000000000000000 0000000000000000  V21 0x0000000000000000 0000000000000000
 V22 0x0000000000000000 0000000000000000  V23 0x0000000000000000 0000000000000000
 V24 0x0000000000000000 0000000000000000  V25 0x0000000000000000 0000000000000000
 V26 0x0000000000000000 0000000000000000  V27 0x0000000000000000 0000000000000000
 V28 0x0000000000000000 0000000000000000  V29 0x0000000000000000 0000000000000000
 V30 0x0000000000000000 0000000000000000  V31 0x0000000000000000 0000000000000000

  SP 0x000000004786E740  ELR 0x000000013C6F4000  SPSR 0x60000205  FPSR 0x00000000
 ESR 0x8600000F          FAR 0x000000013C6F4000

 ESR : EC 0x21  IL 0x1  ISS 0x0000000F

Instruction abort: Permission fault, third level

Stack dump:
  000004786E640: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E660: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E680: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E6A0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E6C0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E6E0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
  000004786E700: 0000000000000000 0000000000000000 000000013FD49A74 0000000040000304
  000004786E720: 0000000000000000 000000008600000F 000000013C6F4000 000000013C709098
> 000004786E740: 000000004786E7A0 000000013C759608 0000000000000001 000000013C7D8000
  000004786E760: 000000013F2B3218 0000000000000000 000160184786E7A0 000000013C6F4000
  000004786E780: 000000013C6F0000 0000000000000019 000000013CB41D18 000000013C709018
  000004786E7A0: 000000004786E800 000000013C75A32C 0000000000000000 000000013C757428
  000004786E7C0: 000000013C7EC9DF 000000013F2B3218 000000004786E870 000000013C75A2F0
  000004786E7E0: 000000013EB8CAC0 000000013F29D030 000000013F2B3520 000000013F2B3120
  000004786E800: 000000004786E8A0 000000013C757030 0000000000000000 0000000000000000
  000004786E820: 000000013FCEE000 0000000000000000 0000000000000001 000000013FCEE1B8
ASSERT [ArmCpuDxe] /root/edk2/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c(333): ((BOOLEAN)(0==1))


>From the log, I think that BOOTAA64.EFI fails to update memory attribute correctly for fbaa64.efi, that is, the memory region for text segment of fbaa64.efi is set to no executable which cause the intruction exception.
I try to fix it by rebuilding shim to replace BOOTAA64.EFI and it works. Maybe, we need update shim using the latest code.

** Affects: cloud-archive
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to Ubuntu Cloud Archive.
https://bugs.launchpad.net/bugs/2019537

Title:
  load shim fbaa64.efi cause exception on arm64

Status in Ubuntu Cloud Archive:
  New

Bug description:
  Exception generates when start ubuntu:22.04 from edk2 based on qemu on
  arm64:

  FSOpen: Open '\EFI\BOOT\BOOTAA64.EFI' Success
  [Bds] Expand PciRoot(0x0)/Pci(0x4,0x0) -> PciRoot(0x0)/Pci(0x4,0x0)/HD(15,GPT,06DEE026-3035-4AA3-89C2-9E5F5C2B6643,0x800,0x31801)/\EFI\BOOT\BOOTAA64.EFI
  BdsDxe: loading Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x4,0x0)
  [Security] 3rd party image[0] can be loaded after EndOfDxe: PciRoot(0x0)/Pci(0x4,0x0)/HD(15,GPT,06DEE026-3035-4AA3-89C2-9E5F5C2B6643,0x800,0x31801)/\EFI\BOOT\BOOTAA64.EFI.
  InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 13EB8CAC0
  Loading driver at 0x0013C739000 EntryPoint=0x0013C757000
  Loading driver at 0x0013C739000 EntryPoint=0x0013C757000
  InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 13EC6B318
  ProtectUefiImageCommon - 0x3EB8CAC0
    - 0x000000013C739000 - 0x00000000000D7000
  SetUefiImageMemoryAttributes - 0x000000013C739000 - 0x000000000001E000 (0x0000000000004008)
  SetUefiImageMemoryAttributes - 0x000000013C757000 - 0x0000000000067000 (0x0000000000020008)
  SetUefiImageMemoryAttributes - 0x000000013C7BE000 - 0x0000000000052000 (0x0000000000004008)
  BdsDxe: starting Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x4,0x0)
  InstallProtocolInterface: 605DAB50-E046-4300-ABB6-3DD810DD8B23 13C7EC9A0
  FSOpen: Open '\EFI\BOOT\fbaa64.efi' Success
  FSOpen: Open '\EFI\BOOT\fbaa64.efi' Success
  SetMemoryAttributes: BaseAddress == 0x13C6F0000, Length == 0x19000, Attributes == 0x4000
  ClearMemoryAttributes: BaseAddress == 0x13C6F0000, Length == 0x19000, Attributes == 0x22000

  
  Synchronous Exception at 0x000000013C6F4000

  
  Synchronous Exception at 0x000000013C6F4000
  PC 0x00013C6F4000
  PC 0x00013C7593F4
  PC 0x00013C759608
  PC 0x00013C75A32C
  PC 0x00013C757030
  PC 0x000047876468 (0x00004786F000+0x00007468) [ 1] DxeCore.dll
  PC 0x00013FCDC688 (0x00013FCD6000+0x00006688) [ 2] BdsDxe.dll
  PC 0x00013FCDF670 (0x00013FCD6000+0x00009670) [ 2] BdsDxe.dll
  PC 0x000047878D88 (0x00004786F000+0x00009D88) [ 3] DxeCore.dll
  [ 1] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
  [ 2] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll
  [ 3] /root/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll

    X0 0x000000013F2B3218   X1 0x000000013FFD0018   X2 0x000000013C6F4000   X3 0x0000000000000000
    X4 0x000000013FD4C0E8   X5 0x000000004786E400   X6 0x000000008000004F   X7 0x0000000000000000
    X8 0x000000004786E3D0   X9 0x0000000000000002  X10 0x000000013C6F0000  X11 0x0000000000000003
   X12 0x0000000000000002  X13 0x0000000000000002  X14 0x0000000000000001  X15 0x0000000000000002
   X16 0x000000013FD45260  X17 0x00000000C19CD528  X18 0x0000000000000011  X19 0x000000013C7D8000
   X20 0x0000000000000000  X21 0x000000013F2B3218  X22 0x000000013C7EC930  X23 0x0000000000000001
   X24 0x000000013C7EC000  X25 0x000000013C7EC9F8  X26 0x000000013C7ECA00  X27 0x000000013C7ECA08
   X28 0x000000013C7ECA10   FP 0x000000004786E740   LR 0x000000013C7593F4

    V0 0xAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAF   V1 0x0000000000000000 0000000000000000
    V2 0x0000000000000000 0000000000000000   V3 0x0000000000000000 0000000000000000
    V4 0x0000000000000000 0000000000000000   V5 0x0000000000000000 0000000000000000
    V6 0x0000000000000000 0000000000000000   V7 0x0000000000000000 0000000000000000
    V8 0x0000000000000000 0000000000000000   V9 0x0000000000000000 0000000000000000
   V10 0x0000000000000000 0000000000000000  V11 0x0000000000000000 0000000000000000
   V12 0x0000000000000000 0000000000000000  V13 0x0000000000000000 0000000000000000
   V14 0x0000000000000000 0000000000000000  V15 0x0000000000000000 0000000000000000
   V16 0x0000000000000000 0000000000000000  V17 0x0000000000000000 0000000000000000
   V18 0x0000000000000000 0000000000000000  V19 0x0000000000000000 0000000000000000
   V20 0x0000000000000000 0000000000000000  V21 0x0000000000000000 0000000000000000
   V22 0x0000000000000000 0000000000000000  V23 0x0000000000000000 0000000000000000
   V24 0x0000000000000000 0000000000000000  V25 0x0000000000000000 0000000000000000
   V26 0x0000000000000000 0000000000000000  V27 0x0000000000000000 0000000000000000
   V28 0x0000000000000000 0000000000000000  V29 0x0000000000000000 0000000000000000
   V30 0x0000000000000000 0000000000000000  V31 0x0000000000000000 0000000000000000

    SP 0x000000004786E740  ELR 0x000000013C6F4000  SPSR 0x60000205  FPSR 0x00000000
   ESR 0x8600000F          FAR 0x000000013C6F4000

   ESR : EC 0x21  IL 0x1  ISS 0x0000000F

  Instruction abort: Permission fault, third level

  Stack dump:
    000004786E640: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E660: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E680: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E6A0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E6C0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E6E0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    000004786E700: 0000000000000000 0000000000000000 000000013FD49A74 0000000040000304
    000004786E720: 0000000000000000 000000008600000F 000000013C6F4000 000000013C709098
  > 000004786E740: 000000004786E7A0 000000013C759608 0000000000000001 000000013C7D8000
    000004786E760: 000000013F2B3218 0000000000000000 000160184786E7A0 000000013C6F4000
    000004786E780: 000000013C6F0000 0000000000000019 000000013CB41D18 000000013C709018
    000004786E7A0: 000000004786E800 000000013C75A32C 0000000000000000 000000013C757428
    000004786E7C0: 000000013C7EC9DF 000000013F2B3218 000000004786E870 000000013C75A2F0
    000004786E7E0: 000000013EB8CAC0 000000013F29D030 000000013F2B3520 000000013F2B3120
    000004786E800: 000000004786E8A0 000000013C757030 0000000000000000 0000000000000000
    000004786E820: 000000013FCEE000 0000000000000000 0000000000000001 000000013FCEE1B8
  ASSERT [ArmCpuDxe] /root/edk2/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c(333): ((BOOLEAN)(0==1))

  
  From the log, I think that BOOTAA64.EFI fails to update memory attribute correctly for fbaa64.efi, that is, the memory region for text segment of fbaa64.efi is set to no executable which cause the intruction exception.
  I try to fix it by rebuilding shim to replace BOOTAA64.EFI and it works. Maybe, we need update shim using the latest code.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2019537/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list