From: "Wang, Jian J" <jian.j.wang@intel.com>
To: "Zeng, Star" <star.zeng@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Dong, Eric" <eric.dong@intel.com>,
"Yao, Jiewen" <jiewen.yao@intel.com>,
"Ni, Ruiyu" <ruiyu.ni@intel.com>
Subject: Re: [PATCH v4 2/7] MdeModulePkg/SmmMemoryAttribute.h: Add new protocol definitions
Date: Thu, 9 Nov 2017 05:54:05 +0000 [thread overview]
Message-ID: <D827630B58408649ACB04F44C510003624CAAA7F@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <0C09AFA07DD0434D9E2A0C6AEB0483103B9B369C@shsmsx102.ccr.corp.intel.com>
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.wang@intel.com>; edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.dong@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ni,
> Ruiyu <ruiyu.ni@intel.com>; Zeng, Star <star.zeng@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.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>; Yao,
> Jiewen <jiewen.yao@intel.com>; Ni, Ruiyu <ruiyu.ni@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.zeng@intel.com>
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Ruiyu Ni <ruiyu.ni@intel.com>
> Suggested-by: Ayellet Wolman <ayellet.wolman@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jian J Wang <jian.j.wang@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
next prev parent reply other threads:[~2017-11-09 5:50 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-27 6:11 [PATCH v4 0/7] Implement heap guard feature Jian J Wang
2017-10-27 6:11 ` [PATCH v4 1/7] MdeModulePkg/MdeModulePkg.dec, .uni: Add Protocol, PCDs and string tokens Jian J Wang
2017-10-27 6:11 ` [PATCH v4 2/7] MdeModulePkg/SmmMemoryAttribute.h: Add new protocol definitions Jian J Wang
2017-11-09 5:12 ` Zeng, Star
2017-11-09 5:54 ` Wang, Jian J [this message]
2017-10-27 6:11 ` [PATCH v4 3/7] UefiCpuPkg/CpuDxe: Reduce debug message Jian J Wang
2017-10-27 6:11 ` [PATCH v4 4/7] MdeModulePkg/DxeIpl: Enable paging for heap guard Jian J Wang
2017-10-27 6:11 ` [PATCH v4 5/7] MdeModulePkg/DxeCore: Implement heap guard feature for UEFI Jian J Wang
2017-10-27 6:11 ` [PATCH v4 6/7] UefiCpuPkg/PiSmmCpuDxeSmm: Add SmmMemoryAttribute protocol Jian J Wang
2017-10-27 6:11 ` [PATCH v4 7/7] MdeModulePkg/PiSmmCore: Implement heap guard feature for SMM mode Jian J Wang
2017-10-27 17:22 ` [PATCH v4 0/7] Implement heap guard feature Laszlo Ersek
2017-11-09 1:59 ` Wang, Jian J
2017-11-09 2:53 ` Yao, Jiewen
2017-11-09 3:14 ` Wang, Jian J
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=D827630B58408649ACB04F44C510003624CAAA7F@SHSMSX103.ccr.corp.intel.com \
--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