/** @file
This file provides services for DXE VTD policy default initialization
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
/**
This function prints the DXE phase VTD policy.
@param[in] SaPolicy - Instance of SA_POLICY_PROTOCOL
**/
VOID
VtdPrintPolicyDxe (
IN SA_POLICY_PROTOCOL *SaPolicy
)
{
EFI_STATUS Status;
VTD_DXE_CONFIG *VtdDxeConfig;
//
// Get requisite IP Config Blocks which needs to be used here
//
Status = GetConfigBlock ((VOID *) SaPolicy, &gVtdDxeConfigGuid, (VOID *)&VtdDxeConfig);
ASSERT_EFI_ERROR (Status);
DEBUG_CODE_BEGIN ();
DEBUG ((DEBUG_INFO, "\n------------------------ Vtd Policy (DXE) print BEGIN -----------------\n"));
DEBUG ((DEBUG_INFO, " Revision : %d\n", VtdDxeConfig->Header.Revision));
ASSERT (VtdDxeConfig->Header.Revision == VTD_DXE_CONFIG_REVISION);
DEBUG ((DEBUG_INFO, "\n------------------------ Vtd Policy (DXE) print END -----------------\n"));
DEBUG_CODE_END ();
return;
}
/**
This function Load default Vtd DXE policy.
@param[in] ConfigBlockPointer The pointer to add VTD config block
**/
VOID
VtdLoadDefaultDxe (
IN VOID *ConfigBlockPointer
)
{
VTD_DXE_CONFIG *VtdDxeConfig;
VtdDxeConfig = ConfigBlockPointer;
DEBUG ((DEBUG_INFO, "VtdDxeConfig->Header.GuidHob.Name = %g\n", &VtdDxeConfig->Header.GuidHob.Name));
DEBUG ((DEBUG_INFO, "VtdDxeConfig->Header.GuidHob.Header.HobLength = 0x%x\n", VtdDxeConfig->Header.GuidHob.Header.HobLength));
}
static COMPONENT_BLOCK_ENTRY mVtdDxeIpBlock = {
&gVtdDxeConfigGuid, sizeof (VTD_DXE_CONFIG), VTD_DXE_CONFIG_REVISION, VtdLoadDefaultDxe
};
/**
Get VTD DXE config block table total size.
@retval Size of VTD DXE config block table
**/
UINT16
EFIAPI
VtdGetConfigBlockTotalSizeDxe (
VOID
)
{
return mVtdDxeIpBlock.Size;
}
/**
VtdAddConfigBlocks add VTD DXE config block.
@param[in] ConfigBlockTableAddress The pointer to add VTD config blocks
@retval EFI_SUCCESS The policy default is initialized.
@retval EFI_OUT_OF_RESOURCES Insufficient resources to create buffer
**/
EFI_STATUS
EFIAPI
VtdAddConfigBlocksDxe (
IN VOID *ConfigBlockTableAddress
)
{
EFI_STATUS Status;
Status = AddComponentConfigBlocks (ConfigBlockTableAddress, &mVtdDxeIpBlock, 1);
return Status;
}