#define __PLATFORM_VTD_POLICY_PROTOCOL_H__\r
\r
#include <IndustryStandard/Vtd.h>\r
+#include <IndustryStandard/DmaRemappingReportingTable.h>\r
\r
#define EDKII_PLATFORM_VTD_POLICY_PROTOCOL_GUID \\r
{ \\r
OUT EDKII_PLATFORM_VTD_DEVICE_INFO *DeviceInfo\r
);\r
\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+ //\r
+ // The segment number of the device\r
+ //\r
+ UINT16 SegmentNumber;\r
+ //\r
+ // Device scope definition in DMAR table\r
+ //\r
+ EFI_ACPI_DMAR_DEVICE_SCOPE_STRUCTURE_HEADER DeviceScope;\r
+ //\r
+ // Pci path definition in DMAR table\r
+ //\r
+//EFI_ACPI_DMAR_PCI_PATH PciPath[];\r
+} EDKII_PLATFORM_VTD_DEVICE_SCOPE;\r
+\r
+typedef struct {\r
+ UINT16 VendorId;\r
+ UINT16 DeviceId;\r
+ UINT8 RevisionId;\r
+ UINT16 SubsystemVendorId;\r
+ UINT16 SubsystemDeviceId;\r
+} EDKII_PLATFORM_VTD_PCI_DEVICE_ID;\r
+\r
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_END 0\r
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_DEVICE_SCOPE 1\r
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_PCI_DEVICE_ID 2\r
+\r
+typedef struct {\r
+ //\r
+ // EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_xxx defined above.\r
+ //\r
+ UINT8 Type;\r
+ //\r
+ // The length of the full data structure including EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO and Data.\r
+ //\r
+ UINT8 Length;\r
+ //\r
+ // Data can be EDKII_PLATFORM_VTD_DEVICE_SCOPE or EDKII_PLATFORM_VTD_PCI_DEVICE_ID\r
+ //\r
+//UINT8 Data[Length - sizeof(EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO)];\r
+} EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO;\r
+\r
+#pragma pack()\r
+\r
+\r
/**\r
Get a list of the exception devices.\r
\r
@param[in] This The protocol instance pointer.\r
@param[out] DeviceInfoCount The count of the list of DeviceInfo.\r
@param[out] DeviceInfo A callee allocated buffer to hold a list of DeviceInfo.\r
+ Each DeviceInfo pointer points to EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO.\r
\r
@retval EFI_SUCCESS The DeviceInfoCount and DeviceInfo are returned.\r
@retval EFI_INVALID_PARAMETER DeviceInfoCount is NULL, or DeviceInfo is NULL.\r
(EFIAPI *EDKII_PLATFORM_VTD_POLICY_GET_EXCEPTION_DEVICE_LIST) (\r
IN EDKII_PLATFORM_VTD_POLICY_PROTOCOL *This,\r
OUT UINTN *DeviceInfoCount,\r
- OUT EDKII_PLATFORM_VTD_DEVICE_INFO **DeviceInfo\r
+ OUT VOID **DeviceInfo\r
);\r
\r
struct _EDKII_PLATFORM_VTD_POLICY_PROTOCOL {\r