diff options
Diffstat (limited to 'EDK/Foundation/Include/IndustryStandard/DMARemappingReportingTable.h')
-rw-r--r-- | EDK/Foundation/Include/IndustryStandard/DMARemappingReportingTable.h | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/EDK/Foundation/Include/IndustryStandard/DMARemappingReportingTable.h b/EDK/Foundation/Include/IndustryStandard/DMARemappingReportingTable.h new file mode 100644 index 0000000..bdc3903 --- /dev/null +++ b/EDK/Foundation/Include/IndustryStandard/DMARemappingReportingTable.h @@ -0,0 +1,203 @@ +/*++ + +Copyright (c) 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + DMARemappingReportingTable.h + +Abstract: + + The definition for ACPI DMA-Remapping Reporting (DMAR) Table. + It is defined in "Intel VT for Direct IO Architecture Specification". + +--*/ + +#ifndef _EFI_DMA_REMAPPING_REPORTING_TABLE_H_ +#define _EFI_DMA_REMAPPING_REPORTING_TABLE_H_ + +#include "AcpiCommon.h" + +// +// "DMAR" DMAR Description Table Signature +// +#define EFI_ACPI_DMAR_DESCRIPTION_TABLE_SIGNATURE 0x52414d44 + +// +// DMAR Revision +// +#define EFI_ACPI_DMAR_DESCRIPTION_TABLE_REVISION 0x01 + +// +// Ensure proper structure formats +// +#pragma pack (1) + +// +// Definition for DMA Remapping Structure Types +// +#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_DRHD 0 +#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_RMRR 1 +#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_ATSR 2 + +// +// Definition for DMA Remapping Structure Header +// +typedef struct { + UINT16 Type; + UINT16 Length; +} EFI_ACPI_DMAR_STRUCTURE_HEADER; + +// +// Definition for DMA-Remapping PCI Path +// +typedef struct { + UINT8 Device; + UINT8 Function; +} EFI_ACPI_DMAR_PCI_PATH; + +// +// Definition for DMA-Remapping Device Scope Entry Structure +// +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_ENDPOINT 0x01 +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_BRIDGE 0x02 +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_IOAPIC 0x03 +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_MSI_CAPABLE_HPET 0x04 +typedef struct { + UINT8 DeviceScopeEntryType; + UINT8 Length; + UINT16 Reserved_2; + UINT8 EnumerationID; + UINT8 StartingBusNumber; +} EFI_ACPI_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE; + +// +// Definition for DMA-Remapping Hardware Definition (DRHD) Structure +// +#define EFI_ACPI_DMAR_DRHD_FLAGS_INCLUDE_ALL_SET 0x1 +#define EFI_ACPI_DMAR_DRHD_FLAGS_INCLUDE_ALL_CLEAR 0x0 +typedef struct { + UINT16 Type; + UINT16 Length; + UINT8 Flags; + UINT8 Reserved_5; + UINT16 SegmentNumber; + UINT64 RegisterBaseAddress; +} EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE; + +// +// Definition for Reserved Memory Region Reporting (RMRR) Structure +// +typedef struct { + UINT16 Type; + UINT16 Length; + UINT8 Reserved_4[2]; + UINT16 SegmentNumber; + UINT64 ReservedMemoryRegionBaseAddress; + UINT64 ReservedMemoryRegionLimitAddress; +} EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE; + +// +// Definition for Root Port ATS Capability Reporting (ATSR) Structure +// +#define EFI_ACPI_DMAR_ATSR_FLAGS_ALL_PORTS_SET 0x1 +#define EFI_ACPI_DMAR_ATSR_FLAGS_ALL_PORTS_CLEAR 0x0 +typedef struct { + UINT16 Type; + UINT16 Length; + UINT8 Flags; + UINT8 Reserved_5; + UINT16 SegmentNumber; +} EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE; + +// +// Definition for DMA Remapping Structure +// +typedef union { + EFI_ACPI_DMAR_STRUCTURE_HEADER DMARStructureHeader; + EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE DMARHardwareUnitDefinition; + EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE DMARReservedMemoryRegionReporting; + EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE DMARRootPortATSCapabilityReporting; +} EFI_ACPI_DMA_REMAPPING_STRUCTURE; + +// +// Definition for DMA-Remapping Reporting ACPI Table +// +#define EFI_ACPI_DMAR_TABLE_FLAGS_INTR_REMAP_SET 0x01 +#define EFI_ACPI_DMAR_TABLE_FLAGS_INTR_REMAP_CLEAR 0x00 +typedef struct { + EFI_ACPI_DESCRIPTION_HEADER Header; + UINT8 HostAddressWidth; + UINT8 Flags; + UINT8 Reserved_38[10]; +} EFI_ACPI_DMAR_DESCRIPTION_TABLE; + +// +// The Platform specific definition can be as follows: +// NOTE: we use /**/ as comment for user convenience to copy it. +// + +/* + +// +// Dmar.h +// + +#define EFI_ACPI_MAX_NUM_PCI_PATH_ENTRIES 0x01 // user need to update +typedef struct { + EFI_ACPI_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE Header; + EFI_ACPI_DMAR_PCI_PATH PciPath[EFI_ACPI_MAX_NUM_PCI_PATH_ENTRIES]; +} EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE; + +#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_DHRD_ENTRY 0x01 // user need to update +typedef struct { + EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE Header; + EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_DHRD_ENTRY]; +} EFI_ACPI_3_0_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE; + +#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_RMRR_ENTRY 0x01 // user need to update +typedef struct { + EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE Header; + EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_RMRR_ENTRY]; +} EFI_ACPI_3_0_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE; + +#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_ATSR_ENTRY 0x01 // user need to update +typedef struct { + EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE Header; + EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_ATSR_ENTRY]; +} EFI_ACPI_3_0_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE; + +#define EFI_ACPI_DMAR_DHRD_ENTRY_COUNT 0x1 // user need to update +#define EFI_ACPI_DMAR_RMRR_ENTRY_COUNT 0x1 // user need to update +#define EFI_ACPI_DMAR_ATSR_ENTRY_COUNT 0x1 // user need to update + +typedef struct { + EFI_ACPI_DMAR_DESCRIPTION_TABLE Header; + +#if EFI_ACPI_3_0_DMAR_DHRD_ENTRY_COUNT > 0 + EFI_ACPI_3_0_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE Dhrd[EFI_ACPI_DMAR_DHRD_ENTRY_COUNT]; +#endif + +#if EFI_ACPI_3_0_DMAR_RMRR_ENTRY_COUNT > 0 + EFI_ACPI_3_0_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE Rmrr[EFI_ACPI_DMAR_RMRR_ENTRY_COUNT]; +#endif + +#if EFI_ACPI_3_0_DMAR_ATSR_ENTRY_COUNT > 0 + EFI_ACPI_3_0_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE Atsr[EFI_ACPI_DMAR_ATSR_ENTRY_COUNT]; +#endif + +} EFI_ACPI_3_0_DMA_REMAPPING_REPORTING_TABLE; + +*/ + +#pragma pack() + +#endif + |