1 /**@file 2 Functions related to the Firmware Volume Block service whose 3 implementation is specific to the SMM driver build. 4 5 Copyright (C) 2015, Red Hat, Inc. 6 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> 7 8 This program and the accompanying materials are licensed and made available 9 under the terms and conditions of the BSD License which accompanies this 10 distribution. The full text of the license may be found at 11 http://opensource.org/licenses/bsd-license.php 12 13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 15 **/ 16 17 #include <Library/DebugLib.h> 18 #include <Library/PcdLib.h> 19 #include <Library/SmmServicesTableLib.h> 20 #include <Protocol/DevicePath.h> 21 #include <Protocol/SmmFirmwareVolumeBlock.h> 22 23 #include "FwBlockService.h" 24 25 VOID 26 InstallProtocolInterfaces ( 27 IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice 28 ) 29 { 30 EFI_HANDLE FvbHandle; 31 EFI_STATUS Status; 32 33 ASSERT (FeaturePcdGet (PcdSmmSmramRequire)); 34 35 // 36 // There is no SMM service that can install multiple protocols in the SMM 37 // protocol database in one go. 38 // 39 // The SMM Firmware Volume Block protocol structure is the same as the 40 // Firmware Volume Block protocol structure. 41 // 42 FvbHandle = NULL; 43 DEBUG ((EFI_D_INFO, "Installing QEMU flash SMM FVB\n")); 44 Status = gSmst->SmmInstallProtocolInterface ( 45 &FvbHandle, 46 &gEfiSmmFirmwareVolumeBlockProtocolGuid, 47 EFI_NATIVE_INTERFACE, 48 &FvbDevice->FwVolBlockInstance 49 ); 50 ASSERT_EFI_ERROR (Status); 51 52 Status = gSmst->SmmInstallProtocolInterface ( 53 &FvbHandle, 54 &gEfiDevicePathProtocolGuid, 55 EFI_NATIVE_INTERFACE, 56 FvbDevice->DevicePath 57 ); 58 ASSERT_EFI_ERROR (Status); 59 } 60 61 VOID 62 InstallVirtualAddressChangeHandler ( 63 VOID 64 ) 65 { 66 // 67 // Nothing. 68 // 69 } 70