https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			128 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   SMM Memory Attribute Protocol provides retrieval and update service
 | |
|   for memory attributes in EFI SMM environment.
 | |
| 
 | |
|   Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #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 supported 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 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 *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 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 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.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EDKII_SMM_GET_MEMORY_ATTRIBUTES)(
 | |
|   IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL *This,
 | |
|   IN  EFI_PHYSICAL_ADDRESS                BaseAddress,
 | |
|   IN  UINT64                              Length,
 | |
|   OUT UINT64                              *Attributes
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// SMM Memory Attribute Protocol provides services to retrieve or update
 | |
| /// attribute of memory 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
 |