Hi,

On 2019/1/22 3:40, Ard Biesheuvel wrote:
On Mon, 21 Jan 2019 at 14:36, Julien Grall <julien.gr...@linaro.org> wrote:

Hi,

On 21/01/2019 10:46, Zeng, Star wrote:
On 2019/1/18 2:59, Julien Grall wrote:
I saw the discussion at
https://lists.01.org/pipermail/edk2-devel/2019-January/035405.html. Fortunately,
it has been fixed.
So I did rebase for the code.
Repo: g...@github.com:lzeng14/edk2.git
Branch: MergedVariableDriver_EmuNvMode_V3_rebased

I was about to ask a branch as there were conflicts in the rebase.
Thank you for providing the branch!


If you can help have a quick test, that will be very helpful. :)

With your series applied, EDK2 is crashing while the Linux EFI stub
is running. See the log below.

My knowledge of EDK2 is quite limited, so I am not entirely where to
look at. I am happy to help debugging if you provide guidance.

Thanks for the test. Fortunately, we could catch this before the patch is pushed. :)



Hi Julien,

Could you try the patch below please?

diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
index a8bb9cf25ebd..adaf6ccb48b0 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
@@ -236,14 +236,16 @@ VariableClassAddressChangeEvent (
  {
    UINTN          Index;

-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetBlockSize);
-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetPhysicalAddress);
-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetAttributes);
-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->SetAttributes);
-  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->Read);
-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->Write);
-  EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->EraseBlocks);
-  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance);
+  if (mVariableModuleGlobal->FvbInstance != NULL) {
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetBlockSize);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetPhysicalAddress);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->GetAttributes);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->SetAttributes);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->Read);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->Write);
+    EfiConvertPointer (0x0, (VOID **)
&mVariableModuleGlobal->FvbInstance->EraseBlocks);
+    EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance);
+  }
    EfiConvertPointer (0x0, (VOID **) 
&mVariableModuleGlobal->PlatformLangCodes);
    EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->LangCodes);
    EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->PlatformLang);

Thanks Ard. I integrated it into the patch 10 of V4.
Repo: g...@github.com:lzeng14/edk2.git
Branch: MergedVariableDriver_EmuNvMode_V4

Julien, could you help take a try?


Thanks,
Star






Press any key to continue...

[Security] 3rd party image[0] can be loaded after EndOfDxe: 
MemoryMapped(0x2,0x67789000,0x68DF1200).

InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 7AB2B040

Loading driver at 0x00065783000 EntryPoint=0x00066878664

Loading driver at 0x00065783000 EntryPoint=0x00066878664

InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 7AA54B18

ProtectUefiImageCommon - 0x7AB2B040

   - 0x0000000065783000 - 0x0000000002006000

SetUefiImageMemoryAttributes - 0x0000000065783000 - 0x0000000000001000 
(0x0000000000004008)

SetUefiImageMemoryAttributes - 0x0000000065784000 - 0x00000000011CD000 
(0x0000000000020008)

SetUefiImageMemoryAttributes - 0x0000000066951000 - 0x0000000000E38000 
(0x0000000000004008)

EFI stub: Booting Linux Kernel...

EFI stub: Using DTB from configuration table

EFI stub: Exiting boot services and installing virtual address map...

XenBus: Set state to 5

XenBus: Set state to 5, done

XenPvBlk: waiting backend state 5, current: 4

XenStore: Watch event 7B036698

XenBus: Set state to 6

XenBus: Set state to 6, done

XenPvBlk: waiting backend state 6, current: 5

XenStore: Watch event 7B036698

XenBus: Set state to 1

XenBus: Set state to 1, done

Xen GrantTable, removing 38003

Xen GrantTable, removing 38002

Xen GrantTable, removing 38001

Xen GrantTable, removing 38000

SetUefiImageMemoryAttributes - 0x000000007BE60000 - 0x0000000000040000 
(0x0000000000000008)

SetUefiImageMemoryAttributes - 0x0000000078AE0000 - 0x0000000000050000 
(0x0000000000000008)

SetUefiImageMemoryAttributes - 0x0000000078A90000 - 0x0000000000040000 
(0x0000000000000008)

SetUefiImageMemoryAttributes - 0x00000000789F0000 - 0x0000000000040000 
(0x0000000000000008)

SetUefiImageMemoryAttributes - 0x0000000078950000 - 0x0000000000040000 
(0x0000000000000008)

SetUefiImageMemoryAttributes - 0x00000000788B0000 - 0x0000000000040000 
(0x0000000000000008)





Synchronous Exception at 0x000000007BE70698

PC 0x00007BE70698 (0x00007BE60000+0x00010698) [ 0] RuntimeDxe.dll

PC 0x000078AFECB0 (0x000078AE0000+0x0001ECB0) [ 1] VariableRuntimeDxe.dll

PC 0x000078AF0AC8 (0x000078AE0000+0x00010AC8) [ 1] VariableRuntimeDxe.dll

PC 0x00007BE7094C (0x00007BE60000+0x0001094C) [ 2] RuntimeDxe.dll

PC 0x00006687E014

PC 0x00006687C348

PC 0x000066878680

PC 0x00007F492BF4 (0x00007F48C000+0x00006BF4) [ 3] DxeCore.dll

PC 0x0000783E6724

PC 0x0000783E6A38

PC 0x0000784BF888

PC 0x0000784605F8

PC 0x0000784602A4

PC 0x00007845C608

PC 0x00007845C838

PC 0x00007845C914

PC 0x00007845C974

PC 0x0000784DFB48

PC 0x0000786922D0

PC 0x00007F492BF4 (0x00007F48C000+0x00006BF4) [ 3] DxeCore.dll

PC 0x00007875B27C

PC 0x00007877A2D0

PC 0x00007F492BF4 (0x00007F48C000+0x00006BF4) [ 3] DxeCore.dll

PC 0x00007BD1912C (0x00007BD0A000+0x0000F12C) [ 4] BdsDxe.dll

PC 0x00007BD0BFBC (0x00007BD0A000+0x00001FBC) [ 4] BdsDxe.dll

PC 0x00007BD0D5C8 (0x00007BD0A000+0x000035C8) [ 4] BdsDxe.dll

PC 0x00007F48E564 (0x00007F48C000+0x00002564) [ 5] DxeCore.dll

PC 0x00007F48D598 (0x00007F48C000+0x00001598) [ 5] DxeCore.dll

PC 0x00007F48D024 (0x00007F48C000+0x00001024) [ 5] DxeCore.dll

PC 0x0000400895C8

PC 0x0000400897AC

PC 0x000040082B4C

PC 0x000040082C24



[ 0] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll

[ 1] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe/DEBUG/VariableRuntimeDxe.dll

[ 2] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll

[ 3] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll

[ 4] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll

[ 5] 
/home/julien/works/edk2/Build/ArmVirtXen-AARCH64/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll



   X0 0x0000000000000018   X1 0x0000000000000018   X2 0x000000007BE7066C   X3 
0x000000007BFDD998

   X4 0x000000007BE707D8   X5 0x0000000000000004   X6 0x0000000000000000   X7 
0x000000007B036E18

   X8 0x000000007BFFF608   X9 0x0000000400000000  X10 0x000000007B036000  X11 
0x000000007BA37FFF

  X12 0x0000000000000000  X13 0x0000000000000008  X14 0x000000007FFFEF5C  X15 
0x0000000000000000

  X16 0x00000000DEADBEEF  X17 0x0000000000000000  X18 0x00000000FFFFFFFE  X19 
0x000000007BFD0018

  X20 0x000000007FFFF170  X21 0x000000007FFFF250  X22 0x0000000000000000  X23 
0x000000007F200000

  X24 0x000000007AA54918  X25 0x0000000000000078  X26 0xFFFFFFFFFFFFFFFF  X27 
0x000000007FFFF150

  X28 0x0000000000000000   FP 0x000000007FFFEFB0   LR 0x0000000078AFECB0



   V0 0x0000000000000000 0000000000000000   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 0x000000007FFFEFB0  ELR 0x000000007BE70698  SPSR 0x200000C5  FPSR 
0x00000000

  ESR 0x96000000          FAR 0x0000000000000018



  ESR : EC 0x25  IL 0x1  ISS 0x00000000



Data abort: Address size fault, zeroth level of translation or translation 
table base register



Stack dump:

   000007FFFEEB0: 000000007FFFEEE0 0000000000000003 0000000000001000 
000000007B04EFF8

   000007FFFEED0: 000000007B04E780 000000030000030C 000000007FFFEF30 
000000007BCEA25C

   000007FFFEEF0: 000000007FFFEF70 0000000000000008 0000000000040000 
00000000788B0000

   000007FFFEF10: 0000000000000000 000000007FFFB000 0000000000000000 
000000000000070C

   000007FFFEF30: 000000007FFFEF90 000000007F4974E4 0000000000000008 
0000000000040000

   000007FFFEF50: 00000000788B0000 000000007BCF7008 00000000788B0000 
006000000000070C

   000007FFFEF70: 0000000000010000 00000000788B0000 0000000000000000 
000000000000070C

   000007FFFEF90: 000000007FFFEFD0 000000007BE70E1C 0000000000000078 
000000007BFD0018

000007FFFEFB0: 000000007FFFEFF0 0000000078AFECB0 0000000000000018 
0000000000000000

   000007FFFEFD0: 0000000078B109A8 0000000000000000 000000007BFE0000 
000000007BFDFF18

   000007FFFEFF0: 000000007FFFF010 0000000078AF0AC8 0000000000000018 
0000000000000000

   000007FFFF010: 000000007FFFF040 000000007BE7094C 0000000000000000 
000000007BFDD998

   000007FFFF030: 0000000000000000 000000007BFDEA18 000000007FFFF0A0 
000000006687E014

   000007FFFF050: 00000000784D4018 0000000100000000 0000000000000030 
00000000000001E0

   000007FFFF070: 000000007BFD0018 000000007FFFF170 000000007FFFF250 
0000000000000000

   000007FFFF090: 000000007BFDD9F8 000000007BFDDA20 000000007FFFF1B0 
000000006687C348

ASSERT [ArmCpuDxe] 
/home/julien/works/edk2/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c(279):
 ((BOOLEAN)(0==1))

Cheers,

--
Julien Grall
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to