On Mon, Mar 13, 2023 at 18:16:45 +0100, Ard Biesheuvel wrote:
> In preparation for introducing an implementation of the EFI memory
> attributes protocol that is shared between ARM and AArch64, unify the
> existing code that converts a page table descriptor into a
> EFI_MEMORY_xxx bitfield, so it can be called from the generic code.
Two bits of nitpicking:
1) You use _xxx from here and _xx in the comments below.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
> ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c | 17 +++++++++
> ArmPkg/Drivers/CpuDxe/Arm/Mmu.c | 38 ++++++++++++++++++++
> ArmPkg/Drivers/CpuDxe/CpuDxe.h | 14 ++++++++
> 3 files changed, 69 insertions(+)
>
> diff --git a/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c b/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c
> index 8bda11f08a30..4a416743fb8a 100644
> --- a/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c
> +++ b/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c
> @@ -83,6 +83,23 @@ PageAttributeToGcdAttribute (
> return GcdAttributes;
> }
>
> +/**
> + Convert a arch specific set of page attributes into a mask
"an arch"
(and again x2 below)
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
> + of EFI_MEMORY_xx constants.
> +
> + @param PageAttributes The set of page attributes.
> +
> + @retval The mask of EFI_MEMORY_xx constants.
> +
> +**/
> +UINT64
> +RegionAttributeToGcdAttribute (
> + IN UINTN PageAttributes
> + )
> +{
> + return PageAttributeToGcdAttribute (PageAttributes);
> +}
> +
> STATIC
> UINT64
> GetFirstPageAttribute (
> diff --git a/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c b/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c
> index 07faab8216ec..8e0dd5d2aaca 100644
> --- a/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c
> +++ b/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c
> @@ -13,6 +13,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> #include <Library/MemoryAllocationLib.h>
> #include "CpuDxe.h"
>
> +/**
> + Convert a set of ARM short descriptor section attributes into a mask
> + of EFI_MEMORY_xx constants.
> +
> + @param SectionAttributes The set of page attributes.
> + @param GcdAttributes Pointer to the return value.
> +
> +**/
> +STATIC
> EFI_STATUS
> SectionToGcdAttributes (
> IN UINT32 SectionAttributes,
> @@ -74,6 +83,35 @@ SectionToGcdAttributes (
> return EFI_SUCCESS;
> }
>
> +/**
> + Convert a arch specific set of page attributes into a mask
> + of EFI_MEMORY_xx constants.
> +
> + @param PageAttributes The set of page attributes.
> +
> + @retval The mask of EFI_MEMORY_xx constants.
> +
> +**/
> +UINT64
> +RegionAttributeToGcdAttribute (
> + IN UINTN PageAttributes
> + )
> +{
> + UINT64 Result;
> +
> + SectionToGcdAttributes (PageAttributes, &Result);
> + return Result;
> +}
> +
> +/**
> + Convert a set of ARM short descriptor page attributes into a mask
> + of EFI_MEMORY_xx constants.
> +
> + @param PageAttributes The set of page attributes.
> + @param GcdAttributes Pointer to the return value.
> +
> +**/
> +STATIC
> EFI_STATUS
> PageToGcdAttributes (
> IN UINT32 PageAttributes,
> diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.h b/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> index ff672390ce51..8cb105dcc841 100644
> --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> @@ -126,4 +126,18 @@ SetGcdMemorySpaceAttributes (
> IN UINT64 Attributes
> );
>
> +/**
> + Convert a arch specific set of page attributes into a mask
> + of EFI_MEMORY_xx constants.
> +
> + @param PageAttributes The set of page attributes.
> +
> + @retval The mask of EFI_MEMORY_xx constants.
> +
> +**/
> +UINT64
> +RegionAttributeToGcdAttribute (
> + IN UINTN PageAttributes
> + );
> +
> #endif // CPU_DXE_H_
> --
> 2.39.2
>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#101241): https://edk2.groups.io/g/devel/message/101241
Mute This Topic: https://groups.io/mt/97585996/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3901457/1787277/102458076/xyzzy [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-