176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @file 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Include file matches things in PI. 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Copyright (c) 2006 - 2008, Intel Corporation 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman All rights reserved. This program and the accompanying materials 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman are licensed and made available under the terms and conditions of the BSD License 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman which accompanies this distribution. The full text of the license may be found at 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman http://opensource.org/licenses/bsd-license.php 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @par Revision Reference: 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman PI Version 1.0 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef __PI_DXECIS_H__ 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define __PI_DXECIS_H__ 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <gpxe/efi/Pi/PiMultiPhase.h> 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Global Coherencey Domain types - Memory type 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef enum { 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMemoryTypeNonExistent, 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMemoryTypeReserved, 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMemoryTypeSystemMemory, 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMemoryTypeMemoryMappedIo, 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMemoryTypeMaximum 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GCD_MEMORY_TYPE; 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// Global Coherencey Domain types - IO type 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef enum { 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdIoTypeNonExistent, 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdIoTypeReserved, 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdIoTypeIo, 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdIoTypeMaximum 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GCD_IO_TYPE; 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// The type of allocation to perform. 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef enum { 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdAllocateAnySearchBottomUp, 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdAllocateMaxAddressSearchBottomUp, 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdAllocateAddress, 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdAllocateAnySearchTopDown, 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdAllocateMaxAddressSearchTopDown, 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EfiGcdMaxAllocateType 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GCD_ALLOCATE_TYPE; 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// EFI_GCD_MEMORY_SPACE_DESCRIPTOR 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The physical address of the first byte in the memory region. Type 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// description in the UEFI 2.0 specification 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_PHYSICAL_ADDRESS BaseAddress; 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The number of bytes in the memory region. 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT64 Length; 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The bit mask of attributes that the memory region is capable of supporting. The bit 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// mask of available attributes is defined in the GetMemoryMap() function description 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// in the UEFI 2.0 specification. 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT64 Capabilities; 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The bit mask of attributes that the memory region is currently using. The bit mask of 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// available attributes is defined in GetMemoryMap(). 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT64 Attributes; 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// AddMemorySpace() function description 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GCD_MEMORY_TYPE GcdMemoryType; 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The image handle of the agent that allocated the memory resource described by 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// PhysicalStart and NumberOfBytes. If this field is NULL, then the memory 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// resource is not currently allocated. Type EFI_HANDLE is defined in 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// InstallProtocolInterface() in the UEFI 2.0 specification. 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_HANDLE ImageHandle; 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The device handle for which the memory resource has been allocated. If 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// ImageHandle is NULL, then the memory resource is not currently allocated. If this 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// field is NULL, then the memory resource is not associated with a device that is 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// described by a device handle. Type EFI_HANDLE is defined in 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// InstallProtocolInterface() in the UEFI 2.0 specification. 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_HANDLE DeviceHandle; 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GCD_MEMORY_SPACE_DESCRIPTOR; 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// EFI_GCD_IO_SPACE_DESCRIPTOR 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/// 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Physical address of the first byte in the I/O region. Type 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// description in the UEFI 2.0 specification. 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_PHYSICAL_ADDRESS BaseAddress; 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Number of bytes in the I/O region. 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT64 Length; 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Type of the I/O region. Type EFI_GCD_IO_TYPE is defined in the 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// AddIoSpace() function description. 12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GCD_IO_TYPE GcdIoType; 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The image handle of the agent that allocated the I/O resource described by 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// PhysicalStart and NumberOfBytes. If this field is NULL, then the I/O 13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// resource is not currently allocated. Type EFI_HANDLE is defined in 13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// InstallProtocolInterface() in the UEFI 2.0 specification. 13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_HANDLE ImageHandle; 13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// The device handle for which the I/O resource has been allocated. If ImageHandle 13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// is NULL, then the I/O resource is not currently allocated. If this field is NULL, then 14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// the I/O resource is not associated with a device that is described by a device handle. 14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// Type EFI_HANDLE is defined in InstallProtocolInterface() in the UEFI 14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 2.0 specification. 14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /// 14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_HANDLE DeviceHandle; 14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_GCD_IO_SPACE_DESCRIPTOR; 14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Adds reserved memory, system memory, or memory-mapped I/O resources to the 15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman global coherency domain of the processor. 15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdMemoryType The type of memory resource being added. 15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address 15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman of the memory resource being added. 15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size, in bytes, of the memory resource that 15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman is being added. 15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Capabilities The bit mask of attributes that the memory 15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource region supports. 15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The memory resource was added to the global 16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman coherency domain of the processor. 16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdMemoryType is invalid. 16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to add 16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the memory resource to the global coherency 16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman domain of the processor. 16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes 16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman of the memory resource range specified by 16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length. 17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DENIED One or more bytes of the memory resource range 17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman specified by BaseAddress and Length conflicts 17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman with a memory resource range that was previously 17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman added to the global coherency domain of the processor. 17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DENIED One or more bytes of the memory resource range 17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman specified by BaseAddress and Length was allocated 17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman in a prior call to AllocateMemorySpace().. 17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 18076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_ADD_MEMORY_SPACE)( 18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_MEMORY_TYPE GcdMemoryType, 18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length, 18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Capabilities 18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Allocates nonexistent memory, reserved memory, system memory, or memorymapped 19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman I/O resources from the global coherency domain of the processor. 19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdAllocateType The type of allocation to perform. 19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdMemoryType The type of memory resource being allocated. 19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Alignment The log base 2 of the boundary that BaseAddress must 19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman be aligned on output. Align with 2^Alignment. 19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the memory resource range that 19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman is being allocated. 19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress A pointer to a physical address to allocate. 19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Imagehandle The image handle of the agent that is allocating 20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the memory resource. 20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param DeviceHandle The device handle for which the memory resource 20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman is being allocated. 20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdAllocateType is invalid. 20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdMemoryType is invalid. 20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER BaseAddress is NULL. 20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER ImageHandle is NULL. 20976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The memory resource request could not be satisfied. 21076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman No descriptor contains the desired space. 21176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to allocate the memory 21276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource from the global coherency domain of the processor. 21376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The memory resource was allocated from the global coherency 21476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman domain of the processor. 21576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 21676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 21776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 21876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 21976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 22076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE)( 22176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, 22276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_MEMORY_TYPE GcdMemoryType, 22376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINTN Alignment, 22476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length, 22576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, 22676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE ImageHandle, 22776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE DeviceHandle OPTIONAL 22876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 22976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 23176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Frees nonexistent memory, reserved memory, system memory, or memory-mapped 23276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman I/O resources from the global coherency domain of the processor. 23376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of the memory resource being freed. 23576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the memory resource range that is being freed. 23676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 23776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The memory resource was freed from the global coherency domain of 23876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the processor. 23976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 24076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory 24176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource range specified by BaseAddress and Length. 24276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The memory resource range specified by BaseAddress and 24376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Length was not allocated with previous calls to AllocateMemorySpace(). 24476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to free the memory resource 24576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman from the global coherency domain of the processor. 24676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 24776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 24876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 24976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 25076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_FREE_MEMORY_SPACE)( 25176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 25276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length 25376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 25476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 25576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 25676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Removes reserved memory, system memory, or memory-mapped I/O resources from 25776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the global coherency domain of the processor. 25876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 25976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of the memory resource being removed. 26076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the memory resource that is being removed. 26176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 26276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The memory resource was removed from the global coherency 26376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman domain of the processor. 26476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 26576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory 26676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource range specified by BaseAddress and Length. 26776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND One or more bytes of the memory resource range specified by 26876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length was not added with previous calls to 26976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman AddMemorySpace(). 27076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DEFINED One or more bytes of the memory resource range specified by 27176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length has been allocated with AllocateMemorySpace(). 27276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to remove the memory 27376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource from the global coherency domain of the processor. 27476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 27576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 27676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 27776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 27876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_REMOVE_MEMORY_SPACE)( 27976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 28076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length 28176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 28276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 28376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 28476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Retrieves the descriptor for a memory region containing a specified address. 28576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 28676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of a memory region. 28776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Descriptor A pointer to a caller allocated descriptor. 28876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 28976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The descriptor for the memory resource region containing 29076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress was returned in Descriptor. 29176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Descriptor is NULL. 29276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND A memory resource range containing BaseAddress was not found. 29376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 29476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 29576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 29676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 29776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR)( 29876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 29976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor 30076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 30176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 30276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 30376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Modifies the attributes for a memory region in the global coherency domain of the 30476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman processor. 30576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 30676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of a memory region. 30776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the memory region. 30876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Attributes The bit mask of attributes to set for the memory region. 30976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 31076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The attributes were set for the memory region. 31176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 31276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory 31376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource range specified by BaseAddress and Length. 31476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource 31576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman range specified by BaseAddress and Length. 31676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DEFINED The attributes for the memory resource range specified by 31776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length cannot be modified. 31876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of 31976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the memory resource range. 32076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 32176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 32276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 32376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 32476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES)( 32576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 32676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length, 32776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Attributes 32876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 32976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 33076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 33176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Returns a map of the memory resources in the global coherency domain of the 33276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman processor. 33376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 33476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param NumberOfDescriptors A pointer to number of descriptors returned in the MemorySpaceMap buffer. 33576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param MemorySpaceMap A pointer to the array of EFI_GCD_MEMORY_SPACE_DESCRIPTORs. 33676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 33776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The memory space map was returned in the MemorySpaceMap 33876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman buffer, and the number of descriptors in MemorySpaceMap was 33976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman returned in NumberOfDescriptors. 34076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER NumberOfDescriptors is NULL. 34176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER MemorySpaceMap is NULL. 34276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate MemorySpaceMap. 34376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 34476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 34576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 34676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 34776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_GET_MEMORY_SPACE_MAP)( 34876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT UINTN *NumberOfDescriptors, 34976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap 35076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 35176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 35276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 35376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Adds reserved I/O or I/O resources to the global coherency domain of the processor. 35476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 35576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdIoType The type of I/O resource being added. 35676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of the I/O resource being added. 35776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the I/O resource that is being added. 35876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 35976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The I/O resource was added to the global coherency domain of 36076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the processor. 36176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdIoType is invalid. 36276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 36376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to add the I/O resource to 36476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the global coherency domain of the processor. 36576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O 36676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource range specified by BaseAddress and Length. 36776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by 36876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length conflicts with an I/O resource 36976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman range that was previously added to the global coherency domain 37076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman of the processor. 37176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by 37276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length was allocated in a prior call to 37376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman AllocateIoSpace(). 37476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 37576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 37676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 37776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 37876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_ADD_IO_SPACE)( 37976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_IO_TYPE GcdIoType, 38076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 38176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length 38276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 38376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 38476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 38576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency 38676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman domain of the processor. 38776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 38876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdAllocateType The type of allocation to perform. 38976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param GcdIoType The type of I/O resource being allocated. 39076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Alignment The log base 2 of the boundary that BaseAddress must be aligned on output. 39176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the I/O resource range that is being allocated. 39276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress A pointer to a physical address. 39376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Imagehandle The image handle of the agent that is allocating the I/O resource. 39476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param DeviceHandle The device handle for which the I/O resource is being allocated. 39576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 39676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The I/O resource was allocated from the global coherency domain 39776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman of the processor. 39876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdAllocateType is invalid. 39976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER GcdIoType is invalid. 40076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 40176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER BaseAddress is NULL. 40276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER ImageHandle is NULL. 40376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to allocate the I/O 40476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource from the global coherency domain of the processor. 40576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The I/O resource request could not be satisfied. 40676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 40776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 40876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 40976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 41076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_ALLOCATE_IO_SPACE)( 41176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, 41276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_GCD_IO_TYPE GcdIoType, 41376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINTN Alignment, 41476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length, 41576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, 41676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE ImageHandle, 41776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE DeviceHandle OPTIONAL 41876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 41976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 42076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 42176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency 42276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman domain of the processor. 42376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 42476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of the I/O resource being freed. 42576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the I/O resource range that is being freed. 42676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 42776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The I/O resource was freed from the global coherency domain of the 42876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman processor. 42976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 43076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O resource 43176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman range specified by BaseAddress and Length. 43276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The I/O resource range specified by BaseAddress and Length 43376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman was not allocated with previous calls to AllocateIoSpace(). 43476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to free the I/O resource from 43576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the global coherency domain of the processor. 43676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 43776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 43876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 43976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 44076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_FREE_IO_SPACE)( 44176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 44276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length 44376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 44476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 44576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 44676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Removes reserved I/O or I/O resources from the global coherency domain of the 44776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman processor. 44876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 44976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress A pointer to a physical address that is the start address of the I/O resource being 45076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman removed. 45176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Length The size in bytes of the I/O resource that is being removed. 45276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 45376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The I/O resource was removed from the global coherency domain 45476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman of the processor. 45576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Length is zero. 45676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O 45776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource range specified by BaseAddress and Length. 45876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND One or more bytes of the I/O resource range specified by 45976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length was not added with previous 46076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman calls to AddIoSpace(). 46176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by 46276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress and Length has been allocated with 46376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman AllocateIoSpace(). 46476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources to remove the I/O 46576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman resource from the global coherency domain of the processor. 46676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 46776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 46876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 46976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 47076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_REMOVE_IO_SPACE)( 47176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 47276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 Length 47376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 47476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 47576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 47676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Retrieves the descriptor for an I/O region containing a specified address. 47776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 47876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param BaseAddress The physical address that is the start address of an I/O region. 47976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Descriptor A pointer to a caller allocated descriptor. 48076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 48176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The descriptor for the I/O resource region containing 48276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BaseAddress was returned in Descriptor. 48376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER Descriptor is NULL. 48476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND An I/O resource range containing BaseAddress was not found. 48576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 48676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 48776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 48876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 48976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR)( 49076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PHYSICAL_ADDRESS BaseAddress, 49176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor 49276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 49376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 49476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 49576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Returns a map of the I/O resources in the global coherency domain of the processor. 49676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 49776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param NumberOfDescriptors A pointer to number of descriptors returned in the IoSpaceMap buffer. 49876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param MemorySpaceMap A pointer to the array of EFI_GCD_IO_SPACE_DESCRIPTORs. 49976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 50076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The I/O space map was returned in the IoSpaceMap buffer, and 50176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the number of descriptors in IoSpaceMap was returned in 50276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman NumberOfDescriptors. 50376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER NumberOfDescriptors is NULL. 50476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_INVALID_PARAMETER IoSpaceMap is NULL. 50576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate IoSpaceMap. 50676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 50776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 50876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 50976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 51076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 51176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_GET_IO_SPACE_MAP)( 51276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT UINTN *NumberOfDescriptors, 51376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap 51476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 51576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 51676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 51776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 51876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 51976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Loads and executed DXE drivers from firmware volumes. 52076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 52176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman The Dispatch() function searches for DXE drivers in firmware volumes that have been 52276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman installed since the last time the Dispatch() service was called. It then evaluates 52376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the dependency expressions of all the DXE drivers and loads and executes those DXE 52476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman drivers whose dependency expression evaluate to TRUE. This service must interact with 52576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the Security Architectural Protocol to authenticate DXE drivers before they are executed. 52676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman This process is continued until no more DXE drivers can be executed. 52776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 52876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS One or more DXE driver were dispatched. 52976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND No DXE drivers were dispatched. 53076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_ALREADY_STARTED An attempt is being made to start the DXE Dispatcher recursively. 53176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Thus no action was taken. 53276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 53376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 53476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 53576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 53676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_DISPATCH)( 53776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman VOID 53876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 53976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 54076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 54176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume. 54276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 54376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName. 54476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param FileName A pointer to the name of the file in a firmware volume. 54576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 54676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The DXE driver was found and its SOR bit was cleared. 54776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The DXE driver does not exist, or the DXE driver exists and its SOR 54876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman bit is not set. 54976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 55076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 55176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 55276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 55376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SCHEDULE)( 55476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE FirmwareVolumeHandle, 55576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN CONST EFI_GUID *FileName 55676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 55776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 55876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 55976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Promotes a file stored in a firmware volume from the untrusted to the trusted state. 56076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 56176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName. 56276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param DriverName A pointer to the name of the file in a firmware volume. 56376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 56476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @return Status of promoting FFS from untrusted to trusted 56576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman state. 56676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_NOT_FOUND The file was not found in the untrusted state. 56776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 56876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 56976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 57076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 57176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_TRUST)( 57276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_HANDLE FirmwareVolumeHandle, 57376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN CONST EFI_GUID *FileName 57476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 57576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 57676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 57776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Creates a firmware volume handle for a firmware volume that is present in system memory. 57876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 57976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param FirmwareVolumeHeader A pointer to the header of the firmware volume. 58076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param Size The size, in bytes, of the firmware volume. 58176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @param FirmwareVolumeHandle On output, a pointer to the created handle. 58276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 58376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_SUCCESS The EFI_FIRMWARE_VOLUME_PROTOCOL and 58476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_DEVICE_PATH_PROTOCOL were installed onto 58576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman FirmwareVolumeHandle for the firmware volume described 58676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman by FirmwareVolumeHeader and Size. 58776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_VOLUME_CORRUPTED The firmware volume described by FirmwareVolumeHeader 58876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman and Size is corrupted. 58976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman @retval EFI_OUT_OF_RESOURCES There are not enough system resources available to produce the 59076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FIRMWARE_VOLUME_PROTOCOL and EFI_DEVICE_PATH_PROTOCOL 59176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for the firmware volume described by FirmwareVolumeHeader and Size. 59276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 59376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman**/ 59476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 59576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 59676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME)( 59776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN CONST VOID *FirmwareVolumeHeader, 59876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINTN Size, 59976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT EFI_HANDLE *FirmwareVolumeHandle 60076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 60176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 60276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 60376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// DXE Services Table 60476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 60576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define DXE_SERVICES_SIGNATURE 0x565245535f455844ULL 60676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define DXE_SERVICES_REVISION ((1<<16) | (00)) 60776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 60876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 60976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_TABLE_HEADER Hdr; 61076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 61176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 61276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // Global Coherency Domain Services 61376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 61476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_ADD_MEMORY_SPACE AddMemorySpace; 61576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace; 61676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FREE_MEMORY_SPACE FreeMemorySpace; 61776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace; 61876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor; 61976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes; 62076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap; 62176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_ADD_IO_SPACE AddIoSpace; 62276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_ALLOCATE_IO_SPACE AllocateIoSpace; 62376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_FREE_IO_SPACE FreeIoSpace; 62476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_REMOVE_IO_SPACE RemoveIoSpace; 62576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor; 62676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_GET_IO_SPACE_MAP GetIoSpaceMap; 62776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 62876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 62976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // Dispatcher Services 63076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 63176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_DISPATCH Dispatch; 63276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SCHEDULE Schedule; 63376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_TRUST Trust; 63476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 63576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // Service to process a single firmware volume found in a capsule 63676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 63776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume; 63876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} DXE_SERVICES; 63976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 64076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef DXE_SERVICES EFI_DXE_SERVICES; 64176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 64276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 643