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
25VOID
26InstallProtocolInterfaces (
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
61VOID
62InstallVirtualAddressChangeHandler (
63  VOID
64  )
65{
66  //
67  // Nothing.
68  //
69}
70