/** @file This file is the library for SA DXE Policy initialization. Copyright (c) 2017 - 2020 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "DxeSaPolicyInit.h" #include #define SA_VTD_RMRR_USB_LENGTH 0x20000 GLOBAL_REMOVE_IF_UNREFERENCED EFI_PHYSICAL_ADDRESS mAddress; GLOBAL_REMOVE_IF_UNREFERENCED UINTN mSize; /** Update RMRR Base and Limit Address for USB. **/ VOID UpdateRmrrUsbAddress ( IN OUT SA_POLICY_PROTOCOL *SaPolicy ) { EFI_STATUS Status; MISC_DXE_CONFIG *MiscDxeConfig; Status = GetConfigBlock ((VOID *)SaPolicy, &gMiscDxeConfigGuid, (VOID *)&MiscDxeConfig); ASSERT_EFI_ERROR (Status); if (1) { mSize = EFI_SIZE_TO_PAGES(SA_VTD_RMRR_USB_LENGTH); mAddress = SIZE_4GB; Status = (gBS->AllocatePages) ( AllocateMaxAddress, EfiReservedMemoryType, mSize, &mAddress ); ASSERT_EFI_ERROR (Status); MiscDxeConfig->RmrrUsbBaseAddress[0] = mAddress; MiscDxeConfig->RmrrUsbBaseAddress[1] = mAddress + SA_VTD_RMRR_USB_LENGTH - 1; } } /** Get data for platform policy from setup options. @param[in] SaPolicy The pointer to get SA Policy protocol instance @retval EFI_SUCCESS Operation success. **/ EFI_STATUS EFIAPI UpdateDxeSaPolicy ( IN OUT SA_POLICY_PROTOCOL *SaPolicy ) { UpdateRmrrUsbAddress (SaPolicy); return EFI_SUCCESS; }