mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 11:13:53 +01:00 
			
		
		
		
	MdeModulePkg DXE Core: Update implementation of SetMemorySpaceAttributes() DXE Service to return EFI_NOT_AVAILABLE_YET if CPU Arch Protocol is not available per PI 1.2 Errata C spec.
Signed-off-by: rsun3 Reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12766 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									d912bad783
								
							
						
					
					
						commit
						fc8ff20ff2
					
				| @ -1683,8 +1683,18 @@ CoreGetMemorySpaceDescriptor ( | |||||||
|   @param  Length                 Specified length |   @param  Length                 Specified length | ||||||
|   @param  Attributes             Specified attributes |   @param  Attributes             Specified attributes | ||||||
| 
 | 
 | ||||||
|   @retval EFI_SUCCESS            Successfully set attribute of a segment of |   @retval EFI_SUCCESS           The attributes were set for the memory region. | ||||||
|                                  memory space. |   @retval EFI_INVALID_PARAMETER Length is zero.  | ||||||
|  |   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory | ||||||
|  |                                 resource range specified by BaseAddress and Length. | ||||||
|  |   @retval EFI_UNSUPPORTED       The bit mask of attributes is not support for the memory resource | ||||||
|  |                                 range specified by BaseAddress and Length. | ||||||
|  |   @retval EFI_ACCESS_DEFINED    The attributes for the memory resource range specified by | ||||||
|  |                                 BaseAddress and Length cannot be modified. | ||||||
|  |   @retval EFI_OUT_OF_RESOURCES  There are not enough system resources to modify the attributes of | ||||||
|  |                                 the memory resource range. | ||||||
|  |   @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is | ||||||
|  |                                 not available yet. | ||||||
| 
 | 
 | ||||||
| **/ | **/ | ||||||
| EFI_STATUS | EFI_STATUS | ||||||
|  | |||||||
| @ -689,7 +689,8 @@ ConverToCpuArchAttributes ( | |||||||
|   @retval EFI_NOT_FOUND          Free a non-using space or remove a non-exist |   @retval EFI_NOT_FOUND          Free a non-using space or remove a non-exist | ||||||
|                                  space, and so on. |                                  space, and so on. | ||||||
|   @retval EFI_OUT_OF_RESOURCES   No buffer could be allocated. |   @retval EFI_OUT_OF_RESOURCES   No buffer could be allocated. | ||||||
| 
 |   @retval EFI_NOT_AVAILABLE_YET  The attributes cannot be set because CPU architectural protocol | ||||||
|  |                                  is not available yet. | ||||||
| **/ | **/ | ||||||
| EFI_STATUS | EFI_STATUS | ||||||
| CoreConvertSpace ( | CoreConvertSpace ( | ||||||
| @ -831,16 +832,20 @@ CoreConvertSpace ( | |||||||
|     //
 |     //
 | ||||||
|     CpuArchAttributes = ConverToCpuArchAttributes (Attributes); |     CpuArchAttributes = ConverToCpuArchAttributes (Attributes); | ||||||
|     if (CpuArchAttributes != INVALID_CPU_ARCH_ATTRIBUTES) { |     if (CpuArchAttributes != INVALID_CPU_ARCH_ATTRIBUTES) { | ||||||
|       if (gCpu != NULL) { |       if (gCpu == NULL) { | ||||||
|  |         Status = EFI_NOT_AVAILABLE_YET; | ||||||
|  |       } else { | ||||||
|         Status = gCpu->SetMemoryAttributes ( |         Status = gCpu->SetMemoryAttributes ( | ||||||
|                          gCpu, |                          gCpu, | ||||||
|                          BaseAddress, |                          BaseAddress, | ||||||
|                          Length, |                          Length, | ||||||
|                          CpuArchAttributes |                          CpuArchAttributes | ||||||
|                          ); |                          ); | ||||||
|         if (EFI_ERROR (Status)) { |  | ||||||
|           goto Done; |  | ||||||
|       } |       } | ||||||
|  |       if (EFI_ERROR (Status)) { | ||||||
|  |         CoreFreePool (TopEntry); | ||||||
|  |         CoreFreePool (BottomEntry); | ||||||
|  |         goto Done; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -1524,8 +1529,18 @@ CoreGetMemorySpaceDescriptor ( | |||||||
|   @param  Length                 Specified length |   @param  Length                 Specified length | ||||||
|   @param  Attributes             Specified attributes |   @param  Attributes             Specified attributes | ||||||
| 
 | 
 | ||||||
|   @retval EFI_SUCCESS            Successfully set attribute of a segment of |   @retval EFI_SUCCESS           The attributes were set for the memory region. | ||||||
|                                  memory space. |   @retval EFI_INVALID_PARAMETER Length is zero.  | ||||||
|  |   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory | ||||||
|  |                                 resource range specified by BaseAddress and Length. | ||||||
|  |   @retval EFI_UNSUPPORTED       The bit mask of attributes is not support for the memory resource | ||||||
|  |                                 range specified by BaseAddress and Length. | ||||||
|  |   @retval EFI_ACCESS_DEFINED    The attributes for the memory resource range specified by | ||||||
|  |                                 BaseAddress and Length cannot be modified. | ||||||
|  |   @retval EFI_OUT_OF_RESOURCES  There are not enough system resources to modify the attributes of | ||||||
|  |                                 the memory resource range. | ||||||
|  |   @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is | ||||||
|  |                                 not available yet. | ||||||
| 
 | 
 | ||||||
| **/ | **/ | ||||||
| EFI_STATUS | EFI_STATUS | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user