Hi Ray, Thanks, Chao On 2024/3/25 10:31, Ni, Ray wrote: > Just curious, how many modules need to call this API? > If there is only one (I guess CpuDxe driver), should LoongArch CPU > driver implement the logic internally so that the lib class/API can be > avoided? This API will be consumed in the PEI and DXE stage. In the PEI stage, we will use them to configure the MMU, and the DXE, through which we can set memory region attributes. > > Thanks, > Ray > ------------------------------------------------------------------------ > *From:* Chao Li > *Sent:* Wednesday, March 20, 2024 16:43 > *To:* devel@edk2.groups.io > *Cc:* Ni, Ray ; Kumar, Rahul R > ; Gerd Hoffmann ; Leif > Lindholm ; Ard Biesheuvel > ; Sami Mujawar ; > Sunil V L ; Warkentin, Andrei > > *Subject:* [PATCH v2 07/13] UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg > Add a new header file CpuMmuLib.h, whitch is referenced from > ArmPkg/Include/Library/ArmMmuLib.h. Currently, only support for > LoongArch64 is added, and more architectures can be accommodated in the > future. > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4734 > > Cc: Ray Ni > Cc: Rahul Kumar > Cc: Gerd Hoffmann > Cc: Leif Lindholm > Cc: Ard Biesheuvel > Cc: Sami Mujawar > Cc: Sunil V L > Cc: Andrei Warkentin > Signed-off-by: Chao Li > Acked-by: Gerd Hoffmann > --- >  UefiCpuPkg/Include/Library/CpuMmuLib.h | 55 ++++++++++++++++++++++++++ >  UefiCpuPkg/UefiCpuPkg.dec              |  4 ++ >  2 files changed, 59 insertions(+) >  create mode 100644 UefiCpuPkg/Include/Library/CpuMmuLib.h > > diff --git a/UefiCpuPkg/Include/Library/CpuMmuLib.h > b/UefiCpuPkg/Include/Library/CpuMmuLib.h > new file mode 100644 > index 0000000000..26d2d65524 > --- /dev/null > +++ b/UefiCpuPkg/Include/Library/CpuMmuLib.h > @@ -0,0 +1,33 @@ > +/** @file > + > +  Copyright (c) 2024 Loongson Technology Corporation Limited. All > rights reserved.
> + > +  SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef CPU_MMU_LIB_H_ > +#define CPU_MMU_LIB_H_ > + > +#include > + > +/** > +  Sets the Attributes  of the specified memory region. > + > +  @param[in]  BaseAddress    The base address of the memory region to > set the Attributes. > +  @param[in]  Length         The length of the memory region to set > the Attributes. > +  @param[in]  Attributes     The Attributes to be set. > +  @param[in]  AttributeMask  Mask of memory attributes to take into > account. > + > +  @retval  EFI_SUCCESS    The Attributes was set successfully > +**/ > +EFI_STATUS > +EFIAPI > +SetMemoryRegionAttributes ( > +  IN EFI_PHYSICAL_ADDRESS  BaseAddress, > +  IN UINTN                 Length, > +  IN UINTN                 Attributes, > +  IN UINT64                AttributeMask > +  ); > + > +#endif // CPU_MMU_LIB_H_ > diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec > index 571b59b36f..ca744fab55 100644 > --- a/UefiCpuPkg/UefiCpuPkg.dec > +++ b/UefiCpuPkg/UefiCpuPkg.dec > @@ -72,6 +72,10 @@ [LibraryClasses.RISCV64] >    ## >    RiscVMmuLib|Include/Library/BaseRiscVMmuLib.h > > +[LibraryClasses.LoongArch64] > +  ##  @libraryclass  Provides functions for the memory management unit. > +  CpuMmuLib|Include/Library/CpuMmuLib.h > + >  [Guids] >    gUefiCpuPkgTokenSpaceGuid      = { 0xac05bf33, 0x995a, 0x4ed4, { > 0xaa, 0xb8, 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0 }} >    gMsegSmramGuid                 = { 0x5802bce4, 0xeeee, 0x4e33, { > 0xa1, 0x30, 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 }} -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117079): https://edk2.groups.io/g/devel/message/117079 Mute This Topic: https://groups.io/mt/105041094/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-