From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../FwBlockServiceSmm.c | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 roms/edk2/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c (limited to 'roms/edk2/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c') diff --git a/roms/edk2/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c b/roms/edk2/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c new file mode 100644 index 000000000..544f88e66 --- /dev/null +++ b/roms/edk2/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c @@ -0,0 +1,86 @@ +/**@file + Functions related to the Firmware Volume Block service whose + implementation is specific to the SMM driver build. + + Copyright (C) 2015, Red Hat, Inc. + Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include +#include +#include +#include + +#include "FwBlockService.h" + +VOID +InstallProtocolInterfaces ( + IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice + ) +{ + EFI_HANDLE FvbHandle; + EFI_STATUS Status; + + ASSERT (FeaturePcdGet (PcdSmmSmramRequire)); + + // + // There is no SMM service that can install multiple protocols in the SMM + // protocol database in one go. + // + // The SMM Firmware Volume Block protocol structure is the same as the + // Firmware Volume Block protocol structure. + // + FvbHandle = NULL; + DEBUG ((DEBUG_INFO, "Installing QEMU flash SMM FVB\n")); + Status = gSmst->SmmInstallProtocolInterface ( + &FvbHandle, + &gEfiSmmFirmwareVolumeBlockProtocolGuid, + EFI_NATIVE_INTERFACE, + &FvbDevice->FwVolBlockInstance + ); + ASSERT_EFI_ERROR (Status); + + Status = gSmst->SmmInstallProtocolInterface ( + &FvbHandle, + &gEfiDevicePathProtocolGuid, + EFI_NATIVE_INTERFACE, + FvbDevice->DevicePath + ); + ASSERT_EFI_ERROR (Status); +} + +VOID +InstallVirtualAddressChangeHandler ( + VOID + ) +{ + // + // Nothing. + // +} + +EFI_STATUS +MarkIoMemoryRangeForRuntimeAccess ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINTN Length + ) +{ + // + // Nothing + // + + return EFI_SUCCESS; +} + +VOID +SetPcdFlashNvStorageBaseAddresses ( + VOID + ) +{ + // + // Do nothing. + // +} -- cgit