4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include file matches things in PI for multiple module types.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthe terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThe full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync These elements are defined in UEFI Platform Initialization Specification 1.2.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __PI_MULTIPHASE_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __PI_MULTIPHASE_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiFirmwareVolume.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiFirmwareFile.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiBootMode.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiHob.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiDependency.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiStatusCode.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Pi/PiS3BootScript.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Produces an error code in the range reserved for use by the Platform Initialization
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Architecture Specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The supported 32-bit range is 0xA0000000-0xBFFFFFFF
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param StatusCode The status code value to convert into a warning code.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync StatusCode must be in the range 0x00000000..0x1FFFFFFF.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The value specified by StatusCode in the PI reserved range.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DXE_ERROR(StatusCode) (MAX_BIT | (MAX_BIT >> 2) | StatusCode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// If this value is returned by an EFI image, then the image should be unloaded.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_REQUEST_UNLOAD_IMAGE DXE_ERROR (1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// If this value is returned by an API, it means the capability is not yet
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// installed/available/ready to use.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_NOT_AVAILABLE_YET DXE_ERROR (2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Success and warning codes reserved for use by PI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Supported 32-bit range is 0x20000000-0x3fffffff.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PI_ENCODE_WARNING(a) ((MAX_BIT >> 2) | (a))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Error codes reserved for use by PI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Supported 32-bit range is 0xa0000000-0xbfffffff.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PI_ENCODE_ERROR(a) (MAX_BIT | (MAX_BIT >> 2) | (a))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Return status codes defined in SMM CIS.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_INTERRUPT_PENDING PI_ENCODE_ERROR (0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_WARN_INTERRUPT_SOURCE_PENDING PI_ENCODE_WARNING (0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_WARN_INTERRUPT_SOURCE_QUIESCED PI_ENCODE_WARNING (1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Bitmask of values for Authentication Status.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// xx00 Image was not signed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// signature was tested, and the signature passed authentication test).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 0010 Image was signed, the signature was tested, and the signature passed authentication test.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 0110 Image was signed and the signature was not tested.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///@{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_NOT_TESTED 0x04
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_TEST_FAILED 0x08
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_AUTH_STATUS_ALL 0x0f
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///@}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SMRAM states and capabilities
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SMRAM_OPEN 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SMRAM_CLOSED 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SMRAM_LOCKED 0x00000004
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CACHEABLE 0x00000008
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ALLOCATED 0x00000010
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_NEEDS_TESTING 0x00000020
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_NEEDS_ECC_INITIALIZATION 0x00000040
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Structure describing a SMRAM region and its accessibility attributes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Designates the physical address of the SMRAM in memory. This view of memory is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// the same as seen by I/O-based agents, for example, but it may not be the address seen
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// by the processors.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS PhysicalStart;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Designates the address of the SMRAM, as seen by software executing on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// processors. This address may or may not match PhysicalStart.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS CpuStart;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Describes the number of bytes in the SMRAM region.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 PhysicalSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Describes the accessibility attributes of the SMRAM. These attributes include the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// initialization).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 RegionState;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SMRAM_DESCRIPTOR;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif