Hi Ard, AFAIK, the latest Ampere Software Release Package (SRP) release has been already fixed this runtime issue. Regards, Nhi ________________________________ From: Ard Biesheuvel Sent: Thursday, August 29, 2024 8:38 PM To: devel@edk2.groups.io ; Nhi Pham OS Cc: Chuong Tran OS ; quic_llindhol@quicinc.com ; Chuong Tran OS ; Rebecca Cran OS Subject: Re: [edk2-devel] [PATCH 1/1] AmpereAltraPkg/FlashLib: Fix kernel crash if not call SetVirtualAddressMap() On Thu, 29 Aug 2024 at 10:48, Nhi Pham via groups.io wrote: > > Pushed as 03d3395552c5 > Thanks for finally providing a fix for this! Is there any way to detect whether a firmware build has this fix? > ________________________________ > From: Chuong Tran OS > Sent: Thursday, August 29, 2024 3:25 PM > To: Nhi Pham OS ; devel@edk2.groups.io > Cc: quic_llindhol@quicinc.com ; Chuong Tran OS ; Rebecca Cran OS > Subject: Re: [PATCH 1/1] AmpereAltraPkg/FlashLib: Fix kernel crash if not call SetVirtualAddressMap() > > Acked-by: Chuong Tran > > Thanks, > Chuong > > On 8/14/2024 10:22 AM, Nhi Pham wrote: > > From: Chuong Tran > > > > OS kernel with greater than or equal to 48-bit VA space avoids EFI's > > SetVirtualAddressMap() runtime service on Arm64 and simply uses the 1:1 > > address mapping that UEFI used at booting. However, AmpereAltraPkg's > > RuntimeFlashLib replies on function call SetVirtualAddressMap() to > > determine whether it is in boot time or run-time. If > > SetVirtualAddressMap() has not been called prior, it causes the kernel > > crash. This patch fixes that issue by removing the separation between > > UEFI boot time and run-time in RuntimeFlashLib. > > > > Signed-off-by: Nhi Pham > > --- > > Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/FlashLibCommon.c | 11 +++-------- > > Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/RuntimeFlashLib.c | 2 -- > > 2 files changed, 3 insertions(+), 10 deletions(-) > > > > diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/FlashLibCommon.c b/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/FlashLibCommon.c > > index 83695c857a11..0b000c2aad46 100644 > > --- a/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/FlashLibCommon.c > > +++ b/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/FlashLibCommon.c > > @@ -15,7 +15,6 @@ > > > > #include "FlashLibCommon.h" > > > > -BOOLEAN gFlashLibRuntime = FALSE; > > UINT8 *gFlashLibPhysicalBuffer; > > UINT8 *gFlashLibVirtualBuffer; > > > > @@ -34,13 +33,9 @@ ConvertToPhysicalBuffer ( > > IN UINT32 Size > > ) > > { > > - if (gFlashLibRuntime) { > > - ASSERT (VirtualPtr != NULL); > > - CopyMem (gFlashLibVirtualBuffer, VirtualPtr, Size); > > - return gFlashLibPhysicalBuffer; > > - } > > - > > - return VirtualPtr; > > + ASSERT (VirtualPtr != NULL); > > + CopyMem (gFlashLibVirtualBuffer, VirtualPtr, Size); > > + return gFlashLibPhysicalBuffer; > > } > > > > /** > > diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/RuntimeFlashLib.c b/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/RuntimeFlashLib.c > > index 2dcd13e08146..14cef8e17ece 100644 > > --- a/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/RuntimeFlashLib.c > > +++ b/Silicon/Ampere/AmpereAltraPkg/Library/FlashLib/RuntimeFlashLib.c > > @@ -35,8 +35,6 @@ FlashLibAddressChangeEvent ( > > { > > gRT->ConvertPointer (0x0, (VOID **)&gFlashLibVirtualBuffer); > > gRT->ConvertPointer (0x0, (VOID **)&mMmCommunicationProtocol); > > - > > - gFlashLibRuntime = TRUE; > > } > > > > /** > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#120441): https://edk2.groups.io/g/devel/message/120441 Mute This Topic: https://groups.io/mt/107889187/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-