Re: [edk2-devel] Synchronous Exception at ArmGicDxe

2024-04-25 Thread Ba Gia Bao Phan
It is near to the GicDistributorBase (0x4ac1) of STM32MP25

Le jeu. 25 avr. 2024 à 02:21, Andrew (EFI) Fish  a écrit :

> The fault address is 0x0004AC14. Is that in the address range of
> the GIC for this platform? What does that Physical address map to you on
> the STM32MP25?
>
> Thanks,
>
> Andrew Fish
>
> On Apr 21, 2024, at 10:07 PM, Ba Gia Bao Phan 
> wrote:
>
> Hi Everyone,
>
> I'm working on a project with edk2, and these guys are trying to port edk2
> to STM32MP25 platforms. I had no issue compiling and booting the image on
> my device. Then I've come across an issue at very early stages of booting.
> I was given a Synchronous Exception listed briefly below.
>
> Synchronous Exception at *0x00010A63501C*
> PC 0x00010A63501C (0x00010A633000+0x201C) [ 0] ArmGicDxe.dll
> PC 0x00010A6350CC (0x00010A633000+0x20CC) [ 0] ArmGicDxe.dll
> PC 0x00010A63657C (0x00010A633000+0x357C) [ 0] ArmGicDxe.dll
> PC 0x00010A85853C (0x00010A851000+0x753C) [ 1] DxeCore.dll
> PC 0x00010A8666DC (0x00010A851000+0x000156DC) [ 1] DxeCore.dll
> PC 0x00010A85BF14 (0x00010A851000+0xAF14) [ 1] DxeCore.dll
> PC 0x84006EBC
> PC 0x8400700C
>
> [ 0]
> /local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/ArmPkg/Drivers/ArmGic/ArmGicDxe/DEBUG/ArmGicDxe.dll
> [ 1]
> /local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
>
>   X0 0x0004AC14   X1 0x   X2 0x
> X3 0x4F46A76E3FDDA605
>   X4 0x083D1B53F41229AD   X5 0x003CF238   X6 0x0080
> X7 0x
>   X8 0x00010A850688   X9 0x0004  X10 0x000109E9F000
>  X11 0x00010A297FFF
>  X12 0x  X13 0x000E  X14 0x00FF
>  X15 0x0002
>  X16 0x00010AFFFAD0  X17 0x00395790  X18 0x
>  X19 0x0004AC14
>  X20 0x00010A638000  X21 0x00010A638000  X22 0x00010A638000
>  X23 0x00010A6380A8
>  X24 0x00010A876448  X25 0x00010A873026  X26 0x00010A877000
>  X27 0x800E
>  X28 0x0001   FP 0x00010AFFFA50   LR 0x00010A6350CC
>
>   V0 0xAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAF   V1 0xFF80FFD0
> 00010AFFFA30
>   V2 0x0007 0E001858   V3 0x1000
> 0100
>   V4 0x    V5 0x
> 
>   V6 0x    V7 0x
> 
>   V8 0x    V9 0x
> 
>  V10 0x   V11 0x
> 
>  V12 0x   V13 0x
> 
>  V14 0x   V15 0x
> 
>  V16 0x6145998C70863CB0 9004002B4AC68640  V17 0x646586E820A5D596
> AA30249EC11F1469
>  V18 0x5756252D20E5B421 336EEAEC2122B3AB  V19 0x6285C083AAECD063
> 020A72C37700322A
>  V20 0x40846C68BA2085FB 20966526601C44BB  V21 0x818208204CD0A89D
> 6D84E94813E14B24
>  V22 0x2362CBA9962AF073 E83ED49CD4A13F98  V23 0x0C1123CD73F5C5B0
> C3E9222891467015
>  V24 0x02B1194895858177 1B028BE1A860D73B  V25 0x542AB00936183D90
> 752F1D1CCC4D2345
>  V26 0x03D02013962356F3 0CCA6F83842045EA  V27 0x9DF9D2A28D44915E
> 2892460B223FD84C
>  V28 0x61A2CC120A809CD8 AC33034803D74C10  V29 0x7A1089709810B030
> 88B3298EEB68B450
>  V30 0xD20F81310E0896C0 20E2BA370E2AC6F9  V31 0x6C3BBEA030B2BB50
> 2C2A91AAF201EF50
>
>   SP 0x00010AFFFA50  ELR 0x00010A63501C  SPSR 0x43C5  FPSR
> 0x
>  ESR 0x9605  FAR 0x0004AC14
>
>  ESR : EC 0x25  IL 0x1  ISS 0x0005
>
> Data abort: Translation fault, first level
>
>
> By using objdump to determine where the wrong source code is, I found out
> that the program stopped around the code below.
>
> UINT32
> EFIAPI
> MmioRead32 (
>   IN  UINTN  Address
>   )
> {
>   UINT32   Value;
>   BOOLEAN  Flag;
>
>   ASSERT ((Address & 3) == 0);
>
>   Flag = FilterBeforeMmIoRead (FilterWidth32, Address, );
>   if (Flag) {
> MemoryFence ();
>
> if (IsTdxGuest ()) {
>   Value = TdMmioRead32 (Address);
> } else {
>   Value = *(volatile UINT32 *)Address;
> }
>
> MemoryFence ();
>   }
>
>   FilterAfterMmIoRead (FilterWidth32, Address, );
>
>   return Value;
> }
>
> Output of objdump:
> UINT32
> EFIAPI
> MmioRead32 (
>   IN  UINTN  Address
>   )
> {
> 1fec: a9be7bfd stp x29, x30, [sp, #-32]!
> 1ff0: 910003fd mov x29, sp
> 1ff4: f9000bf3 str x19, [sp, #16]
> 1ff8: aa0003f3 mov x19, x0
>   UINT32   Value;
>   BOOLEAN  Flag;
>
>   ASSERT ((Address & 3) == 0);
> 1ffc: f240041f tst x0, #0x3
> 2000: 54e0 b.eq 201c   // b.none
> 2004: b002 adrp x2, 3000 
> 2008: b000 adrp x0, 3000 
> 200c: 913ac442 add x2, x2, #0xeb1
> 2010: 913b1000 add x0, x0, #0xec4
> 2014: 

Re: [edk2-devel] Synchronous Exception at ArmGicDxe

2024-04-24 Thread Andrew Fish via groups.io
The fault address is 0x0004AC14. Is that in the address range of the 
GIC for this platform? What does that Physical address map to you on the 
STM32MP25?

Thanks,

Andrew Fish

> On Apr 21, 2024, at 10:07 PM, Ba Gia Bao Phan  
> wrote:
> 
> Hi Everyone,
> 
> I'm working on a project with edk2, and these guys are trying to port edk2 to 
> STM32MP25 platforms. I had no issue compiling and booting the image on my 
> device. Then I've come across an issue at very early stages of booting. I was 
> given a Synchronous Exception listed briefly below. 
> 
> Synchronous Exception at 0x00010A63501C
> PC 0x00010A63501C (0x00010A633000+0x201C) [ 0] ArmGicDxe.dll
> PC 0x00010A6350CC (0x00010A633000+0x20CC) [ 0] ArmGicDxe.dll
> PC 0x00010A63657C (0x00010A633000+0x357C) [ 0] ArmGicDxe.dll
> PC 0x00010A85853C (0x00010A851000+0x753C) [ 1] DxeCore.dll
> PC 0x00010A8666DC (0x00010A851000+0x000156DC) [ 1] DxeCore.dll
> PC 0x00010A85BF14 (0x00010A851000+0xAF14) [ 1] DxeCore.dll
> PC 0x84006EBC
> PC 0x8400700C
> 
> [ 0] 
> /local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/ArmPkg/Drivers/ArmGic/ArmGicDxe/DEBUG/ArmGicDxe.dll
> [ 1] 
> /local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
> 
>   X0 0x0004AC14   X1 0x   X2 0x   X3 
> 0x4F46A76E3FDDA605
>   X4 0x083D1B53F41229AD   X5 0x003CF238   X6 0x0080   X7 
> 0x
>   X8 0x00010A850688   X9 0x0004  X10 0x000109E9F000  X11 
> 0x00010A297FFF
>  X12 0x  X13 0x000E  X14 0x00FF  X15 
> 0x0002
>  X16 0x00010AFFFAD0  X17 0x00395790  X18 0x  X19 
> 0x0004AC14
>  X20 0x00010A638000  X21 0x00010A638000  X22 0x00010A638000  X23 
> 0x00010A6380A8
>  X24 0x00010A876448  X25 0x00010A873026  X26 0x00010A877000  X27 
> 0x800E
>  X28 0x0001   FP 0x00010AFFFA50   LR 0x00010A6350CC  
> 
>   V0 0xAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAF   V1 0xFF80FFD0 
> 00010AFFFA30
>   V2 0x0007 0E001858   V3 0x1000 
> 0100
>   V4 0x    V5 0x 
> 
>   V6 0x    V7 0x 
> 
>   V8 0x    V9 0x 
> 
>  V10 0x   V11 0x 
> 
>  V12 0x   V13 0x 
> 
>  V14 0x   V15 0x 
> 
>  V16 0x6145998C70863CB0 9004002B4AC68640  V17 0x646586E820A5D596 
> AA30249EC11F1469
>  V18 0x5756252D20E5B421 336EEAEC2122B3AB  V19 0x6285C083AAECD063 
> 020A72C37700322A
>  V20 0x40846C68BA2085FB 20966526601C44BB  V21 0x818208204CD0A89D 
> 6D84E94813E14B24
>  V22 0x2362CBA9962AF073 E83ED49CD4A13F98  V23 0x0C1123CD73F5C5B0 
> C3E9222891467015
>  V24 0x02B1194895858177 1B028BE1A860D73B  V25 0x542AB00936183D90 
> 752F1D1CCC4D2345
>  V26 0x03D02013962356F3 0CCA6F83842045EA  V27 0x9DF9D2A28D44915E 
> 2892460B223FD84C
>  V28 0x61A2CC120A809CD8 AC33034803D74C10  V29 0x7A1089709810B030 
> 88B3298EEB68B450
>  V30 0xD20F81310E0896C0 20E2BA370E2AC6F9  V31 0x6C3BBEA030B2BB50 
> 2C2A91AAF201EF50
> 
>   SP 0x00010AFFFA50  ELR 0x00010A63501C  SPSR 0x43C5  FPSR 
> 0x
>  ESR 0x9605  FAR 0x0004AC14
> 
>  ESR : EC 0x25  IL 0x1  ISS 0x0005
> 
> Data abort: Translation fault, first level
> 
> 
> By using objdump to determine where the wrong source code is, I found out 
> that the program stopped around the code below.
> 
> UINT32
> EFIAPI
> MmioRead32 (
>   IN  UINTN  Address
>   )
> {
>   UINT32   Value;
>   BOOLEAN  Flag;
> 
>   ASSERT ((Address & 3) == 0);
> 
>   Flag = FilterBeforeMmIoRead (FilterWidth32, Address, );
>   if (Flag) {
> MemoryFence ();
> 
> if (IsTdxGuest ()) {
>   Value = TdMmioRead32 (Address);
> } else {
>   Value = *(volatile UINT32 *)Address;
> }
> 
> MemoryFence ();
>   }
> 
>   FilterAfterMmIoRead (FilterWidth32, Address, );
> 
>   return Value;
> }
> 
> Output of objdump:
> UINT32
> EFIAPI
> MmioRead32 (
>   IN  UINTN  Address
>   )
> {
> 1fec: a9be7bfd stp x29, x30, [sp, #-32]!
> 1ff0: 910003fd mov x29, sp
> 1ff4: f9000bf3 str x19, [sp, #16]
> 1ff8: aa0003f3 mov x19, x0
>   UINT32   Value;
>   BOOLEAN  Flag;
> 
>   ASSERT ((Address & 3) == 0);
> 1ffc: f240041f tst x0, #0x3
> 2000: 54e0 b.eq 201c   // b.none
> 2004: b002 adrp x2, 3000 
> 2008: b000 adrp x0, 3000 
> 200c: 913ac442 add x2, x2, #0xeb1
> 2010: 913b1000 add x0, x0, #0xec4
> 2014: d2804461 mov x1, #0x223 // #547
> 2018: 977a bl 1e00 
> 

[edk2-devel] Synchronous Exception at ArmGicDxe

2024-04-24 Thread Ba Gia Bao Phan
Hi Everyone,

I'm working on a project with edk2, and these guys are trying to port edk2
to STM32MP25 platforms. I had no issue compiling and booting the image on
my device. Then I've come across an issue at very early stages of booting.
I was given a Synchronous Exception listed briefly below.

Synchronous Exception at *0x00010A63501C*
PC 0x00010A63501C (0x00010A633000+0x201C) [ 0] ArmGicDxe.dll
PC 0x00010A6350CC (0x00010A633000+0x20CC) [ 0] ArmGicDxe.dll
PC 0x00010A63657C (0x00010A633000+0x357C) [ 0] ArmGicDxe.dll
PC 0x00010A85853C (0x00010A851000+0x753C) [ 1] DxeCore.dll
PC 0x00010A8666DC (0x00010A851000+0x000156DC) [ 1] DxeCore.dll
PC 0x00010A85BF14 (0x00010A851000+0xAF14) [ 1] DxeCore.dll
PC 0x84006EBC
PC 0x8400700C

[ 0]
/local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/ArmPkg/Drivers/ArmGic/ArmGicDxe/DEBUG/ArmGicDxe.dll
[ 1]
/local/home/phanbagi/Documents/RPi3/Build/STM32MP25/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll

  X0 0x0004AC14   X1 0x   X2 0x
X3 0x4F46A76E3FDDA605
  X4 0x083D1B53F41229AD   X5 0x003CF238   X6 0x0080
X7 0x
  X8 0x00010A850688   X9 0x0004  X10 0x000109E9F000
 X11 0x00010A297FFF
 X12 0x  X13 0x000E  X14 0x00FF
 X15 0x0002
 X16 0x00010AFFFAD0  X17 0x00395790  X18 0x
 X19 0x0004AC14
 X20 0x00010A638000  X21 0x00010A638000  X22 0x00010A638000
 X23 0x00010A6380A8
 X24 0x00010A876448  X25 0x00010A873026  X26 0x00010A877000
 X27 0x800E
 X28 0x0001   FP 0x00010AFFFA50   LR 0x00010A6350CC

  V0 0xAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAF   V1 0xFF80FFD0
00010AFFFA30
  V2 0x0007 0E001858   V3 0x1000
0100
  V4 0x    V5 0x

  V6 0x    V7 0x

  V8 0x    V9 0x

 V10 0x   V11 0x

 V12 0x   V13 0x

 V14 0x   V15 0x

 V16 0x6145998C70863CB0 9004002B4AC68640  V17 0x646586E820A5D596
AA30249EC11F1469
 V18 0x5756252D20E5B421 336EEAEC2122B3AB  V19 0x6285C083AAECD063
020A72C37700322A
 V20 0x40846C68BA2085FB 20966526601C44BB  V21 0x818208204CD0A89D
6D84E94813E14B24
 V22 0x2362CBA9962AF073 E83ED49CD4A13F98  V23 0x0C1123CD73F5C5B0
C3E9222891467015
 V24 0x02B1194895858177 1B028BE1A860D73B  V25 0x542AB00936183D90
752F1D1CCC4D2345
 V26 0x03D02013962356F3 0CCA6F83842045EA  V27 0x9DF9D2A28D44915E
2892460B223FD84C
 V28 0x61A2CC120A809CD8 AC33034803D74C10  V29 0x7A1089709810B030
88B3298EEB68B450
 V30 0xD20F81310E0896C0 20E2BA370E2AC6F9  V31 0x6C3BBEA030B2BB50
2C2A91AAF201EF50

  SP 0x00010AFFFA50  ELR 0x00010A63501C  SPSR 0x43C5  FPSR
0x
 ESR 0x9605  FAR 0x0004AC14

 ESR : EC 0x25  IL 0x1  ISS 0x0005

Data abort: Translation fault, first level


By using objdump to determine where the wrong source code is, I found out
that the program stopped around the code below.

UINT32
EFIAPI
MmioRead32 (
  IN  UINTN  Address
  )
{
  UINT32   Value;
  BOOLEAN  Flag;

  ASSERT ((Address & 3) == 0);

  Flag = FilterBeforeMmIoRead (FilterWidth32, Address, );
  if (Flag) {
MemoryFence ();

if (IsTdxGuest ()) {
  Value = TdMmioRead32 (Address);
} else {
  Value = *(volatile UINT32 *)Address;
}

MemoryFence ();
  }

  FilterAfterMmIoRead (FilterWidth32, Address, );

  return Value;
}

Output of objdump:
UINT32
EFIAPI
MmioRead32 (
  IN  UINTN  Address
  )
{
1fec: a9be7bfd stp x29, x30, [sp, #-32]!
1ff0: 910003fd mov x29, sp
1ff4: f9000bf3 str x19, [sp, #16]
1ff8: aa0003f3 mov x19, x0
  UINT32   Value;
  BOOLEAN  Flag;

  ASSERT ((Address & 3) == 0);
1ffc: f240041f tst x0, #0x3
2000: 54e0 b.eq 201c   // b.none
2004: b002 adrp x2, 3000 
2008: b000 adrp x0, 3000 
200c: 913ac442 add x2, x2, #0xeb1
2010: 913b1000 add x0, x0, #0xec4
2014: d2804461 mov x1, #0x223 // #547
2018: 977a bl 1e00 

  Flag = FilterBeforeMmIoRead (FilterWidth32, Address, );
  if (Flag) {

*Value = *(volatile UINT32 *)Address;201c: b9400260 ldr w0, [x19]*
  }

  FilterAfterMmIoRead (FilterWidth32, Address, );

  return Value;
}

Thanks
-- 
PHAN Ba Gia Bao
Etudiant en 5A STI - INSA Centre Val de Loire


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#118243): https://edk2.groups.io/g/devel/message/118243
Mute This Topic: https://groups.io/mt/105721886/21656
Group Owner: devel+ow...@edk2.groups.io