The ICH9_LPC_SMI_F_BROADCAST and ICH9_LPC_SMI_F_CPU_HOTPLUG feature flags cause QEMU to behave as follows: BROADCAST CPU_HOTPLUG use case / behavior --------- ----------- ------------------------------------------------ clear clear OVMF built without SMM_REQUIRE; or very old OVMF (from before commita316d7ac91
/ 2017-02-07). QEMU permits CPU hotplug operations, and does not cause the OS to inject an SMI upon hotplug. Firmware is not expected to be aware of hotplug events. clear set Invalid feature set; QEMU rejects the feature negotiation. set clear OVMF aftera316d7ac91
/ 2017-02-07, built with SMM_REQUIRE, but no support for CPU hotplug. QEMU gracefully refuses hotplug operations. set set OVMF aftera316d7ac91
/ 2017-02-07, built with SMM_REQUIRE, and supporting CPU hotplug. QEMU permits CPU hotplug operations, and causes the OS to inject an SMI upon hotplug. Firmware is expected to deal with hotplug events. Negotiate ICH9_LPC_SMI_F_CPU_HOTPLUG -- but only if SEV is disabled, as OvmfPkg/CpuHotplugSmm can't deal with SEV yet. Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Igor Mammedov <imammedo@redhat.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Liran Alon <liran.alon@oracle.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200714184305.9814-1-lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@arm.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
71 lines
1.8 KiB
INI
71 lines
1.8 KiB
INI
## @file
|
|
# A DXE_RUNTIME_DRIVER providing synchronous SMI activations via the
|
|
# EFI_SMM_CONTROL2_PROTOCOL.
|
|
#
|
|
# We expect the PEI phase to have covered the following:
|
|
# - ensure that the underlying QEMU machine type be Q35
|
|
# (responsible: OvmfPkg/SmmAccess/SmmAccessPei.inf)
|
|
# - ensure that the ACPI PM IO space be configured
|
|
# (responsible: OvmfPkg/PlatformPei/PlatformPei.inf)
|
|
#
|
|
# Our own entry point is responsible for confirming the SMI feature and for
|
|
# configuring it.
|
|
#
|
|
# Copyright (C) 2013, 2015, Red Hat, Inc.
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = SmmControl2Dxe
|
|
FILE_GUID = 1206F7CA-A475-4624-A83E-E6FC9BB38E49
|
|
MODULE_TYPE = DXE_RUNTIME_DRIVER
|
|
VERSION_STRING = 1.0
|
|
PI_SPECIFICATION_VERSION = 0x00010400
|
|
ENTRY_POINT = SmmControl2DxeEntryPoint
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64
|
|
#
|
|
|
|
[Sources]
|
|
SmiFeatures.h
|
|
SmiFeatures.c
|
|
SmmControl2Dxe.c
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
OvmfPkg/OvmfPkg.dec
|
|
UefiCpuPkg/UefiCpuPkg.dec
|
|
|
|
[LibraryClasses]
|
|
BaseLib
|
|
DebugLib
|
|
IoLib
|
|
MemEncryptSevLib
|
|
MemoryAllocationLib
|
|
PcdLib
|
|
PciLib
|
|
QemuFwCfgLib
|
|
QemuFwCfgS3Lib
|
|
UefiBootServicesTableLib
|
|
UefiDriverEntryPoint
|
|
|
|
[Protocols]
|
|
gEfiS3SaveStateProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiSmmControl2ProtocolGuid ## PRODUCES
|
|
|
|
[Pcd]
|
|
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout ## SOMETIMES_PRODUCES
|
|
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode ## SOMETIMES_PRODUCES
|
|
|
|
[FeaturePcd]
|
|
gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire
|
|
|
|
[Depex]
|
|
TRUE
|