public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <ardb@kernel.org>
Cc: "'Michael Kinney'" <michael.d.kinney@intel.com>,
	"'Jiewen Yao'" <jiewen.yao@intel.com>,
	"'Michael Kubacki'" <michael.kubacki@microsoft.com>,
	"'Sean Brogan'" <sean.brogan@microsoft.com>,
	"'Rebecca Cran'" <quic_rcran@quicinc.com>,
	"'Leif Lindholm'" <quic_llindhol@quicinc.com>,
	"'Sami Mujawar'" <sami.mujawar@arm.com>,
	"'Taylor Beebe'" <t@taylorbeebe.com>
Subject: 回复: [edk2-devel] [PATCH v2 1/3] MdePkg: Add Memory Attribute Protocol definition
Date: Fri, 3 Feb 2023 13:28:25 +0800	[thread overview]
Message-ID: <032101d93790$56c83540$04589fc0$@byosoft.com.cn> (raw)
In-Reply-To: <20230202112722.2200755-2-ardb@kernel.org>

Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
> Biesheuvel
> 发送时间: 2023年2月2日 19:27
> 收件人: devel@edk2.groups.io
> 抄送: Ard Biesheuvel <ardb@kernel.org>; Michael Kinney
> <michael.d.kinney@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>;
> Jiewen Yao <jiewen.yao@intel.com>; Michael Kubacki
> <michael.kubacki@microsoft.com>; Sean Brogan
> <sean.brogan@microsoft.com>; Rebecca Cran <quic_rcran@quicinc.com>;
> Leif Lindholm <quic_llindhol@quicinc.com>; Sami Mujawar
> <sami.mujawar@arm.com>; Taylor Beebe <t@taylorbeebe.com>
> 主题: [edk2-devel] [PATCH v2 1/3] MdePkg: Add Memory Attribute Protocol
> definition
> 
> Add the Memory Attribute Protocol definition, which was adopted and
> included in version 2.10 of the UEFI specification.
> 
> Link: https://bugzilla.tianocore.org/show_bug.cgi?id=3519
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  MdePkg/Include/Protocol/MemoryAttribute.h | 142
> ++++++++++++++++++++
>  MdePkg/MdePkg.dec                         |   3 +
>  2 files changed, 145 insertions(+)
> 
> diff --git a/MdePkg/Include/Protocol/MemoryAttribute.h
> b/MdePkg/Include/Protocol/MemoryAttribute.h
> new file mode 100644
> index 000000000000..ff930fb21aa6
> --- /dev/null
> +++ b/MdePkg/Include/Protocol/MemoryAttribute.h
> @@ -0,0 +1,142 @@
> +/** @file
> 
> +
> 
> +  EFI Memory Attribute Protocol provides retrieval and update service
> 
> +  for memory attributes in EFI environment.
> 
> +
> 
> +  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> 
> +  Copyright (c) 2023, Google LLC. All rights reserved.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#ifndef __EFI_MEMORY_ATTRIBUTE_H__
> 
> +#define __EFI_MEMORY_ATTRIBUTE_H__
> 
> +
> 
> +#define EFI_MEMORY_ATTRIBUTE_PROTOCOL_GUID \
> 
> +  { \
> 
> +    0xf4560cf6, 0x40ec, 0x4b4a, { 0xa1, 0x92, 0xbf, 0x1d, 0x57, 0xd0,
0xb1,
> 0x89 } \
> 
> +  }
> 
> +
> 
> +typedef struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL
> EFI_MEMORY_ATTRIBUTE_PROTOCOL;
> 
> +
> 
> +/**
> 
> +  This function set given attributes of the memory region specified by
> 
> +  BaseAddress and Length.
> 
> +
> 
> +  The valid Attributes is EFI_MEMORY_RP, EFI_MEMORY_XP, and
> EFI_MEMORY_RO.
> 
> +
> 
> +  @param  This              The
> EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
> 
> +  @param  BaseAddress       The physical address that is the start
> address of
> 
> +                            a memory region.
> 
> +  @param  Length            The size in bytes of the memory region.
> 
> +  @param  Attributes        The bit mask of attributes to set for the
> memory
> 
> +                            region.
> 
> +
> 
> +  @retval EFI_SUCCESS           The attributes were set for the
> memory region.
> 
> +  @retval EFI_INVALID_PARAMETER Length is zero.
> 
> +                                Attributes specified an illegal
> combination of
> 
> +                                attributes that cannot be set
> together.
> 
> +  @retval EFI_UNSUPPORTED       The processor does not support one
> or more
> 
> +                                bytes of the memory resource range
> specified
> 
> +                                by BaseAddress and Length.
> 
> +                                The bit mask of attributes is not
> supported for
> 
> +                                the memory resource range
> specified by
> 
> +                                BaseAddress and Length.
> 
> +  @retval EFI_OUT_OF_RESOURCES  Requested attributes cannot be
> applied due to
> 
> +                                lack of system resources.
> 
> +  @retval EFI_ACCESS_DENIED     Attributes for the requested memory
> region are
> 
> +                                controlled by system firmware and
> cannot be
> 
> +                                updated via the protocol.
> 
> +
> 
> +**/
> 
> +typedef
> 
> +EFI_STATUS
> 
> +(EFIAPI *EFI_SET_MEMORY_ATTRIBUTES)(
> 
> +  IN  EFI_MEMORY_ATTRIBUTE_PROTOCOL       *This,
> 
> +  IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
> 
> +  IN  UINT64                              Length,
> 
> +  IN  UINT64                              Attributes
> 
> +  );
> 
> +
> 
> +/**
> 
> +  This function clears given attributes of the memory region specified by
> 
> +  BaseAddress and Length.
> 
> +
> 
> +  The valid Attributes is EFI_MEMORY_RP, EFI_MEMORY_XP, and
> EFI_MEMORY_RO.
> 
> +
> 
> +  @param  This              The
> EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
> 
> +  @param  BaseAddress       The physical address that is the start
> address of
> 
> +                            a memory region.
> 
> +  @param  Length            The size in bytes of the memory region.
> 
> +  @param  Attributes        The bit mask of attributes to clear for the
> memory
> 
> +                            region.
> 
> +
> 
> +  @retval EFI_SUCCESS           The attributes were cleared for the
> memory region.
> 
> +  @retval EFI_INVALID_PARAMETER Length is zero.
> 
> +                                Attributes specified an illegal
> combination of
> 
> +                                attributes that cannot be cleared
> together.
> 
> +  @retval EFI_UNSUPPORTED       The processor does not support one
> or more
> 
> +                                bytes of the memory resource range
> specified
> 
> +                                by BaseAddress and Length.
> 
> +                                The bit mask of attributes is not
> supported for
> 
> +                                the memory resource range
> specified by
> 
> +                                BaseAddress and Length.
> 
> +  @retval EFI_OUT_OF_RESOURCES  Requested attributes cannot be
> applied due to
> 
> +                                lack of system resources.
> 
> +  @retval EFI_ACCESS_DENIED     Attributes for the requested memory
> region are
> 
> +                                controlled by system firmware and
> cannot be
> 
> +                                updated via the protocol.
> 
> +
> 
> +**/
> 
> +typedef
> 
> +EFI_STATUS
> 
> +(EFIAPI *EFI_CLEAR_MEMORY_ATTRIBUTES)(
> 
> +  IN  EFI_MEMORY_ATTRIBUTE_PROTOCOL       *This,
> 
> +  IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
> 
> +  IN  UINT64                              Length,
> 
> +  IN  UINT64                              Attributes
> 
> +  );
> 
> +
> 
> +/**
> 
> +  This function retrieves the attributes of the memory region specified
by
> 
> +  BaseAddress and Length. If different attributes are got from different
part
> 
> +  of the memory region, EFI_NO_MAPPING will be returned.
> 
> +
> 
> +  @param  This              The
> EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
> 
> +  @param  BaseAddress       The physical address that is the start
> address of
> 
> +                            a memory region.
> 
> +  @param  Length            The size in bytes of the memory region.
> 
> +  @param  Attributes        Pointer to attributes returned.
> 
> +
> 
> +  @retval EFI_SUCCESS           The attributes got for the memory
> region.
> 
> +  @retval EFI_INVALID_PARAMETER Length is zero.
> 
> +                                Attributes is NULL.
> 
> +  @retval EFI_NO_MAPPING        Attributes are not consistent cross
> the memory
> 
> +                                region.
> 
> +  @retval EFI_UNSUPPORTED       The processor does not support one
> or more
> 
> +                                bytes of the memory resource range
> specified
> 
> +                                by BaseAddress and Length.
> 
> +
> 
> +**/
> 
> +typedef
> 
> +EFI_STATUS
> 
> +(EFIAPI *EFI_GET_MEMORY_ATTRIBUTES)(
> 
> +  IN  EFI_MEMORY_ATTRIBUTE_PROTOCOL       *This,
> 
> +  IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
> 
> +  IN  UINT64                              Length,
> 
> +  OUT UINT64                              *Attributes
> 
> +  );
> 
> +
> 
> +///
> 
> +/// EFI Memory Attribute Protocol provides services to retrieve or update
> 
> +/// attribute of memory in the EFI environment.
> 
> +///
> 
> +struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL {
> 
> +  EFI_GET_MEMORY_ATTRIBUTES      GetMemoryAttributes;
> 
> +  EFI_SET_MEMORY_ATTRIBUTES      SetMemoryAttributes;
> 
> +  EFI_CLEAR_MEMORY_ATTRIBUTES    ClearMemoryAttributes;
> 
> +};
> 
> +
> 
> +extern EFI_GUID  gEfiMemoryAttributeProtocolGuid;
> 
> +
> 
> +#endif
> 
> diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
> index 3d08f20d15b0..a8658403c8fd 100644
> --- a/MdePkg/MdePkg.dec
> +++ b/MdePkg/MdePkg.dec
> @@ -1915,6 +1915,9 @@ [Protocols]
>    ## Include/Protocol/RedfishDiscover.h
> 
>    gEfiRedfishDiscoverProtocolGuid      = { 0x5db12509, 0x4550, 0x4347,
> { 0x96, 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f }}
> 
> 
> 
> +   ## Include/Protocol/MemoryAttribute.h
> 
> +  gEfiMemoryAttributeProtocolGuid = { 0xf4560cf6, 0x40ec, 0x4b4a, { 0xa1,
> 0x92, 0xbf, 0x1d, 0x57, 0xd0, 0xb1, 0x89 }}
> 
> +
> 
>    #
> 
>    # Protocols defined in Shell2.0
> 
>    #
> 
> --
> 2.39.0
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#99466): https://edk2.groups.io/g/devel/message/99466
> Mute This Topic: https://groups.io/mt/96697936/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
> 




  reply	other threads:[~2023-02-03  5:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-02 11:27 [PATCH v2 0/3] ArmPkg: implement EFI memory attributes protocol Ard Biesheuvel
2023-02-02 11:27 ` [PATCH v2 1/3] MdePkg: Add Memory Attribute Protocol definition Ard Biesheuvel
2023-02-03  5:28   ` gaoliming [this message]
2023-02-02 11:27 ` [PATCH v2 2/3] ArmPkg/CpuDxe: Unify PageAttributeToGcdAttribute helper Ard Biesheuvel
2023-02-02 11:27 ` [PATCH v2 3/3] ArmPkg/CpuDxe: Implement EFI memory attributes protocol Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='032101d93790$56c83540$04589fc0$@byosoft.com.cn' \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox