[edk2-devel] [PATCH v5 09/38] ArmPkg/CpuDxe: Expose unified region-to-EFI attribute conversion

Leif Lindholm quic_llindhol at quicinc.com
Wed Mar 15 18:08:54 UTC 2023


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 at 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 at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3943202/1813853/130120423/xyzzy [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list