Good catch. "EFI" should be removed and "IN" should be "OUT". Thanks for the 
feedback.

> -----Original Message-----
> From: Zeng, Star
> Sent: Thursday, November 09, 2017 1:13 PM
> To: Wang, Jian J <jian.j.w...@intel.com>; edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.d...@intel.com>; Yao, Jiewen <jiewen....@intel.com>; Ni,
> Ruiyu <ruiyu...@intel.com>; Zeng, Star <star.z...@intel.com>
> Subject: RE: [PATCH v4 2/7] MdeModulePkg/SmmMemoryAttribute.h: Add new
> protocol definitions
> 
> Suggest to use " SMM Memory Attribute Protocol " instead of " EFI SMM
> Memory Attribute Protocol " in the comments.
> 
> Should "+  IN  UINT64                              *Attributes" be "+  OUT  
> UINT64
> *Attributes" for EDKII_SMM_GET_MEMORY_ATTRIBUTES?
> 
> Thanks,
> Star
> -----Original Message-----
> From: Wang, Jian J
> Sent: Friday, October 27, 2017 2:12 PM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star <star.z...@intel.com>; Dong, Eric <eric.d...@intel.com>; Yao,
> Jiewen <jiewen....@intel.com>; Ni, Ruiyu <ruiyu...@intel.com>
> Subject: [PATCH v4 2/7] MdeModulePkg/SmmMemoryAttribute.h: Add new
> protocol definitions
> 
> The new protocol gEdkiiSmmMemoryAttributeProtocolGuid is intended for
> PiSmmCore to be able to change memory page attributes for the sake of heap
> guard feature.
> 
> This protocol provides three interfaces to get/set/clear page attribute.
> 
> struct _EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL {
>   EDKII_SMM_GET_MEMORY_ATTRIBUTES       GetMemoryAttributes;
>   EDKII_SMM_SET_MEMORY_ATTRIBUTES       SetMemoryAttributes;
>   EDKII_SMM_CLEAR_MEMORY_ATTRIBUTES     ClearMemoryAttributes;
> };
> 
> Cc: Star Zeng <star.z...@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Ruiyu Ni <ruiyu...@intel.com>
> Suggested-by: Ayellet Wolman <ayellet.wol...@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jian J Wang <jian.j.w...@intel.com>
> ---
>  MdeModulePkg/Include/Protocol/SmmMemoryAttribute.h | 136
> +++++++++++++++++++++
>  1 file changed, 136 insertions(+)
>  create mode 100644 MdeModulePkg/Include/Protocol/SmmMemoryAttribute.h
> 
> diff --git a/MdeModulePkg/Include/Protocol/SmmMemoryAttribute.h
> b/MdeModulePkg/Include/Protocol/SmmMemoryAttribute.h
> new file mode 100644
> index 0000000000..20e145c2dc
> --- /dev/null
> +++ b/MdeModulePkg/Include/Protocol/SmmMemoryAttribute.h
> @@ -0,0 +1,136 @@
> +/** @file
> +  EFI SMM Memory Attribute Protocol provides retrieval and update
> +service
> +  for memory attributes in EFI SMM environment.
> +
> +  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>  This
> + program and the accompanying materials  are licensed and made
> + available under the terms and conditions of the BSD License  which
> + accompanies this distribution.  The full text of the license may be
> + found at  http://opensource.org/licenses/bsd-license.php
> +
> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> +
> +**/
> +
> +#ifndef __SMM_MEMORYATTRIBUTE_H__
> +#define __SMM_MEMORYATTRIBUTE_H__
> +
> +//{69B792EA-39CE-402D-A2A6-F721DE351DFE}
> +#define EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL_GUID \
> +  { \
> +    0x69b792ea, 0x39ce, 0x402d, { 0xa2, 0xa6, 0xf7, 0x21, 0xde, 0x35,
> +0x1d, 0xfe } \
> +  }
> +
> +typedef struct _EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL
> +EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL;
> +
> +/**
> +  This function set given attributes of the memory region specified by
> +  BaseAddress and Length.
> +
> +  @param  This              The EDKII_SMM_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 support for
> +                                the memory resource range specified by
> +                                BaseAddress and Length.
> +
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_SMM_SET_MEMORY_ATTRIBUTES)(
> +  IN  EDKII_SMM_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.
> +
> +  @param  This              The EDKII_SMM_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 support for
> +                                the memory resource range specified by
> +                                BaseAddress and Length.
> +
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_SMM_CLEAR_MEMORY_ATTRIBUTES)(
> +  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL *This,
> +  IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
> +  IN  UINT64                              Length,
> +  IN  UINT64                              Attributes
> +  );
> +
> +/**
> +  This function retrieve 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 EDKII_SMM_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.
> +                                The bit mask of attributes is not support for
> +                                the memory resource range specified by
> +                                BaseAddress and Length.
> +
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_SMM_GET_MEMORY_ATTRIBUTES)(
> +  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL *This,
> +  IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
> +  IN  UINT64                              Length,
> +  IN  UINT64                              *Attributes
> +  );
> +
> +///
> +/// EFI SMM Memory Attribute Protocol provides services to retrieve or
> +update /// memory attribute in the EFI SMM environment.
> +///
> +struct _EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL {
> +  EDKII_SMM_GET_MEMORY_ATTRIBUTES       GetMemoryAttributes;
> +  EDKII_SMM_SET_MEMORY_ATTRIBUTES       SetMemoryAttributes;
> +  EDKII_SMM_CLEAR_MEMORY_ATTRIBUTES     ClearMemoryAttributes;
> +};
> +
> +extern EFI_GUID gEdkiiSmmMemoryAttributeProtocolGuid;
> +
> +#endif
> --
> 2.14.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to