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