[edk2-devel] [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition

Ard Biesheuvel posted 4 patches 3 years ago
There is a newer version of this series
[edk2-devel] [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition
Posted by Ard Biesheuvel 3 years ago
From: Sean Brogan <sean.brogan@microsoft.com>

Add the Memory Attribute Protocol definition, which was adopted and
included in version 2.10 of the UEFI specification.

Taken from Project Mu's mu_basecore repository.

Link: https://bugzilla.tianocore.org/show_bug.cgi?id=3519
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 MdePkg/Include/Protocol/MemoryAttribute.h | 131 ++++++++++++++++++++
 MdePkg/MdePkg.dec                         |   3 +
 2 files changed, 134 insertions(+)

diff --git a/MdePkg/Include/Protocol/MemoryAttribute.h b/MdePkg/Include/Protocol/MemoryAttribute.h
new file mode 100644
index 000000000000..b33138732ad1
--- /dev/null
+++ b/MdePkg/Include/Protocol/MemoryAttribute.h
@@ -0,0 +1,131 @@
+/** @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>
+  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.
+
+**/
+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.
+
+**/
+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 (#99369): https://edk2.groups.io/g/devel/message/99369
Mute This Topic: https://groups.io/mt/96664066/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
[edk2-devel] 回复: [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition
Posted by gaoliming via groups.io 3 years ago
Ard:
 I check this protocol definition in UEFI2.10 spec. GetMemoryAttributes and
SetMemoryAttributes API return status include EFI_OUT_OF_RESOURCES and
EFI_ACCESS_DENIED. But, they are missing in this patch. Can you help
confirm?

Thanks
Liming
> -----邮件原件-----
> 发件人: Ard Biesheuvel <ardb@kernel.org>
> 发送时间: 2023年2月1日 6:36
> 收件人: 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>
> 主题: [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition
> 
> From: Sean Brogan <sean.brogan@microsoft.com>
> 
> Add the Memory Attribute Protocol definition, which was adopted and
> included in version 2.10 of the UEFI specification.
> 
> Taken from Project Mu's mu_basecore repository.
> 
> Link: https://bugzilla.tianocore.org/show_bug.cgi?id=3519
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  MdePkg/Include/Protocol/MemoryAttribute.h | 131
> ++++++++++++++++++++
>  MdePkg/MdePkg.dec                         |   3 +
>  2 files changed, 134 insertions(+)
> 
> diff --git a/MdePkg/Include/Protocol/MemoryAttribute.h
> b/MdePkg/Include/Protocol/MemoryAttribute.h
> new file mode 100644
> index 000000000000..b33138732ad1
> --- /dev/null
> +++ b/MdePkg/Include/Protocol/MemoryAttribute.h
> @@ -0,0 +1,131 @@
> +/** @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>
> 
> +  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.
> 
> +
> 
> +**/
> 
> +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.
> 
> +
> 
> +**/
> 
> +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 (#99430): https://edk2.groups.io/g/devel/message/99430
Mute This Topic: https://groups.io/mt/96693492/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] 回复: [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition
Posted by Ard Biesheuvel 3 years ago
On Thu, 2 Feb 2023 at 04:19, gaoliming via groups.io
<gaoliming=byosoft.com.cn@groups.io> wrote:
>
> Ard:
>  I check this protocol definition in UEFI2.10 spec. GetMemoryAttributes and
> SetMemoryAttributes API return status include EFI_OUT_OF_RESOURCES and
> EFI_ACCESS_DENIED. But, they are missing in this patch. Can you help
> confirm?
>

I just took the Project Mu version without realizing this - I can fix
that up in v2.

> > -----邮件原件-----
> > 发件人: Ard Biesheuvel <ardb@kernel.org>
> > 发送时间: 2023年2月1日 6:36
> > 收件人: 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>
> > 主题: [PATCH 1/4] MdePkg: Add Memory Attribute Protocol definition
> >
> > From: Sean Brogan <sean.brogan@microsoft.com>
> >
> > Add the Memory Attribute Protocol definition, which was adopted and
> > included in version 2.10 of the UEFI specification.
> >
> > Taken from Project Mu's mu_basecore repository.
> >
> > Link: https://bugzilla.tianocore.org/show_bug.cgi?id=3519
> > Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> > ---
> >  MdePkg/Include/Protocol/MemoryAttribute.h | 131
> > ++++++++++++++++++++
> >  MdePkg/MdePkg.dec                         |   3 +
> >  2 files changed, 134 insertions(+)
> >
> > diff --git a/MdePkg/Include/Protocol/MemoryAttribute.h
> > b/MdePkg/Include/Protocol/MemoryAttribute.h
> > new file mode 100644
> > index 000000000000..b33138732ad1
> > --- /dev/null
> > +++ b/MdePkg/Include/Protocol/MemoryAttribute.h
> > @@ -0,0 +1,131 @@
> > +/** @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>
> >
> > +  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.
> >
> > +
> >
> > +**/
> >
> > +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.
> >
> > +
> >
> > +**/
> >
> > +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 (#99443): https://edk2.groups.io/g/devel/message/99443
Mute This Topic: https://groups.io/mt/96693492/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-