mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-24 16:53:47 +02:00 
			
		
		
		
	UefiCpuPkg/CpuDxe: implement Mp Services:GetProcessorInfo()
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16356 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									d894d8b704
								
							
						
					
					
						commit
						e7938b5a86
					
				| @ -26,7 +26,7 @@ VOID *mApStackStart = 0; | |||||||
| 
 | 
 | ||||||
| EFI_MP_SERVICES_PROTOCOL  mMpServicesTemplate = { | EFI_MP_SERVICES_PROTOCOL  mMpServicesTemplate = { | ||||||
|   GetNumberOfProcessors, |   GetNumberOfProcessors, | ||||||
|   NULL, // GetProcessorInfo,
 |   GetProcessorInfo, | ||||||
|   NULL, // StartupAllAPs,
 |   NULL, // StartupAllAPs,
 | ||||||
|   NULL, // StartupThisAP,
 |   NULL, // StartupThisAP,
 | ||||||
|   NULL, // SwitchBSP,
 |   NULL, // SwitchBSP,
 | ||||||
| @ -114,6 +114,56 @@ GetNumberOfProcessors ( | |||||||
|   return EFI_SUCCESS; |   return EFI_SUCCESS; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |   Gets detailed MP-related information on the requested processor at the | ||||||
|  |   instant this call is made. This service may only be called from the BSP. | ||||||
|  | 
 | ||||||
|  |   This service retrieves detailed MP-related information about any processor | ||||||
|  |   on the platform. Note the following: | ||||||
|  |     - The processor information may change during the course of a boot session. | ||||||
|  |     - The information presented here is entirely MP related. | ||||||
|  | 
 | ||||||
|  |   Information regarding the number of caches and their sizes, frequency of operation, | ||||||
|  |   slot numbers is all considered platform-related information and is not provided | ||||||
|  |   by this service. | ||||||
|  | 
 | ||||||
|  |   @param[in]  This                  A pointer to the EFI_MP_SERVICES_PROTOCOL | ||||||
|  |                                     instance. | ||||||
|  |   @param[in]  ProcessorNumber       The handle number of processor. | ||||||
|  |   @param[out] ProcessorInfoBuffer   A pointer to the buffer where information for | ||||||
|  |                                     the requested processor is deposited. | ||||||
|  | 
 | ||||||
|  |   @retval EFI_SUCCESS             Processor information was returned. | ||||||
|  |   @retval EFI_DEVICE_ERROR        The calling processor is an AP. | ||||||
|  |   @retval EFI_INVALID_PARAMETER   ProcessorInfoBuffer is NULL. | ||||||
|  |   @retval EFI_NOT_FOUND           The processor with the handle specified by | ||||||
|  |                                   ProcessorNumber does not exist in the platform. | ||||||
|  | 
 | ||||||
|  | **/ | ||||||
|  | EFI_STATUS | ||||||
|  | EFIAPI | ||||||
|  | GetProcessorInfo ( | ||||||
|  |   IN  EFI_MP_SERVICES_PROTOCOL   *This, | ||||||
|  |   IN  UINTN                      ProcessorNumber, | ||||||
|  |   OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer | ||||||
|  |   ) | ||||||
|  | { | ||||||
|  |   if (ProcessorInfoBuffer == NULL) { | ||||||
|  |     return EFI_INVALID_PARAMETER; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (!IsBSP ()) { | ||||||
|  |     return EFI_DEVICE_ERROR; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (ProcessorNumber >= mMpSystemData.NumberOfProcessors) { | ||||||
|  |     return EFI_NOT_FOUND; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   CopyMem (ProcessorInfoBuffer, &mMpSystemData.CpuDatas[ProcessorNumber], sizeof (EFI_PROCESSOR_INFORMATION)); | ||||||
|  |   return EFI_SUCCESS; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|   This return the handle number for the calling processor.  This service may be |   This return the handle number for the calling processor.  This service may be | ||||||
|   called from the BSP and APs. |   called from the BSP and APs. | ||||||
|  | |||||||
| @ -168,6 +168,40 @@ GetNumberOfProcessors ( | |||||||
|   OUT UINTN                     *NumberOfEnabledProcessors |   OUT UINTN                     *NumberOfEnabledProcessors | ||||||
|   ); |   ); | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |   Gets detailed MP-related information on the requested processor at the | ||||||
|  |   instant this call is made. This service may only be called from the BSP. | ||||||
|  | 
 | ||||||
|  |   This service retrieves detailed MP-related information about any processor | ||||||
|  |   on the platform. Note the following: | ||||||
|  |     - The processor information may change during the course of a boot session. | ||||||
|  |     - The information presented here is entirely MP related. | ||||||
|  | 
 | ||||||
|  |   Information regarding the number of caches and their sizes, frequency of operation, | ||||||
|  |   slot numbers is all considered platform-related information and is not provided | ||||||
|  |   by this service. | ||||||
|  | 
 | ||||||
|  |   @param[in]  This                  A pointer to the EFI_MP_SERVICES_PROTOCOL | ||||||
|  |                                     instance. | ||||||
|  |   @param[in]  ProcessorNumber       The handle number of processor. | ||||||
|  |   @param[out] ProcessorInfoBuffer   A pointer to the buffer where information for | ||||||
|  |                                     the requested processor is deposited. | ||||||
|  | 
 | ||||||
|  |   @retval EFI_SUCCESS             Processor information was returned. | ||||||
|  |   @retval EFI_DEVICE_ERROR        The calling processor is an AP. | ||||||
|  |   @retval EFI_INVALID_PARAMETER   ProcessorInfoBuffer is NULL. | ||||||
|  |   @retval EFI_NOT_FOUND           The processor with the handle specified by | ||||||
|  |                                   ProcessorNumber does not exist in the platform. | ||||||
|  | 
 | ||||||
|  | **/ | ||||||
|  | EFI_STATUS | ||||||
|  | EFIAPI | ||||||
|  | GetProcessorInfo ( | ||||||
|  |   IN  EFI_MP_SERVICES_PROTOCOL   *This, | ||||||
|  |   IN  UINTN                      ProcessorNumber, | ||||||
|  |   OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|   This return the handle number for the calling processor.  This service may be |   This return the handle number for the calling processor.  This service may be | ||||||
|   called from the BSP and APs. |   called from the BSP and APs. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user