Implement the First SMI Handler for hot-added CPUs, in NASM. Add the interfacing C-language function that the SMM Monarch calls. This function launches and coordinates SMBASE relocation for a hot-added CPU. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Igor Mammedov <imammedo@redhat.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1512 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200226221156.29589-13-lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
		
			
				
	
	
		
			47 lines
		
	
	
		
			849 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			849 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   SMBASE relocation for hot-plugged CPUs.
 | |
| 
 | |
|   Copyright (c) 2020, Red Hat, Inc.
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| **/
 | |
| 
 | |
| #ifndef SMBASE_H_
 | |
| #define SMBASE_H_
 | |
| 
 | |
| #include <Uefi/UefiBaseType.h> // EFI_STATUS
 | |
| #include <Uefi/UefiSpec.h>     // EFI_BOOT_SERVICES
 | |
| 
 | |
| #include "ApicId.h"            // APIC_ID
 | |
| 
 | |
| EFI_STATUS
 | |
| SmbaseAllocatePostSmmPen (
 | |
|   OUT UINT32                  *PenAddress,
 | |
|   IN  CONST EFI_BOOT_SERVICES *BootServices
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| SmbaseReinstallPostSmmPen (
 | |
|   IN UINT32 PenAddress
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| SmbaseReleasePostSmmPen (
 | |
|   IN UINT32                  PenAddress,
 | |
|   IN CONST EFI_BOOT_SERVICES *BootServices
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| SmbaseInstallFirstSmiHandler (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| SmbaseRelocate (
 | |
|   IN APIC_ID ApicId,
 | |
|   IN UINTN   Smbase,
 | |
|   IN UINT32  PenAddress
 | |
|   );
 | |
| 
 | |
| #endif // SMBASE_H_
 |