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_
|