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