diff options
author | Jiewen Yao <jiewen.yao@intel.com> | 2017-08-22 11:47:54 +0800 |
---|---|---|
committer | Jiewen Yao <jiewen.yao@intel.com> | 2017-08-28 16:28:43 +0800 |
commit | 71872f7cda66ddf381e7d788750ed69e3e02a3d0 (patch) | |
tree | 78504d8c48a5bbdbb0da9f0307353ead360fdee0 /IntelSiliconPkg/Include | |
parent | 306a5bcc6b0170d28b0db10bd359817bb4b1db9f (diff) | |
download | edk2-71872f7cda66ddf381e7d788750ed69e3e02a3d0.zip edk2-71872f7cda66ddf381e7d788750ed69e3e02a3d0.tar.gz edk2-71872f7cda66ddf381e7d788750ed69e3e02a3d0.tar.bz2 |
IntelSiliconPkg/header: update PlatformVtdPolicy
Add flexible exception list format:
1) Support Device scope based reporting:
Such as, Seg:0/StartBus:0/(Dev:1C|Func:0)/(Dev:0|Func:0)
2) Support PCI VendorId/DeviceId based reporting
Such as, VID:8086|DID:9D2F|Rev:21|SVID:8086|SDID:7270
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Diffstat (limited to 'IntelSiliconPkg/Include')
-rw-r--r-- | IntelSiliconPkg/Include/Protocol/PlatformVtdPolicy.h | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/IntelSiliconPkg/Include/Protocol/PlatformVtdPolicy.h b/IntelSiliconPkg/Include/Protocol/PlatformVtdPolicy.h index 29774c1..441da5c 100644 --- a/IntelSiliconPkg/Include/Protocol/PlatformVtdPolicy.h +++ b/IntelSiliconPkg/Include/Protocol/PlatformVtdPolicy.h @@ -16,6 +16,7 @@ #define __PLATFORM_VTD_POLICY_PROTOCOL_H__
#include <IndustryStandard/Vtd.h>
+#include <IndustryStandard/DmaRemappingReportingTable.h>
#define EDKII_PLATFORM_VTD_POLICY_PROTOCOL_GUID \
{ \
@@ -66,6 +67,53 @@ EFI_STATUS OUT EDKII_PLATFORM_VTD_DEVICE_INFO *DeviceInfo
);
+#pragma pack(1)
+
+typedef struct {
+ //
+ // The segment number of the device
+ //
+ UINT16 SegmentNumber;
+ //
+ // Device scope definition in DMAR table
+ //
+ EFI_ACPI_DMAR_DEVICE_SCOPE_STRUCTURE_HEADER DeviceScope;
+ //
+ // Pci path definition in DMAR table
+ //
+//EFI_ACPI_DMAR_PCI_PATH PciPath[];
+} EDKII_PLATFORM_VTD_DEVICE_SCOPE;
+
+typedef struct {
+ UINT16 VendorId;
+ UINT16 DeviceId;
+ UINT8 RevisionId;
+ UINT16 SubsystemVendorId;
+ UINT16 SubsystemDeviceId;
+} EDKII_PLATFORM_VTD_PCI_DEVICE_ID;
+
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_END 0
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_DEVICE_SCOPE 1
+#define EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_PCI_DEVICE_ID 2
+
+typedef struct {
+ //
+ // EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO_TYPE_xxx defined above.
+ //
+ UINT8 Type;
+ //
+ // The length of the full data structure including EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO and Data.
+ //
+ UINT8 Length;
+ //
+ // Data can be EDKII_PLATFORM_VTD_DEVICE_SCOPE or EDKII_PLATFORM_VTD_PCI_DEVICE_ID
+ //
+//UINT8 Data[Length - sizeof(EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO)];
+} EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO;
+
+#pragma pack()
+
+
/**
Get a list of the exception devices.
@@ -74,6 +122,7 @@ EFI_STATUS @param[in] This The protocol instance pointer.
@param[out] DeviceInfoCount The count of the list of DeviceInfo.
@param[out] DeviceInfo A callee allocated buffer to hold a list of DeviceInfo.
+ Each DeviceInfo pointer points to EDKII_PLATFORM_VTD_EXCEPTION_DEVICE_INFO.
@retval EFI_SUCCESS The DeviceInfoCount and DeviceInfo are returned.
@retval EFI_INVALID_PARAMETER DeviceInfoCount is NULL, or DeviceInfo is NULL.
@@ -85,7 +134,7 @@ EFI_STATUS (EFIAPI *EDKII_PLATFORM_VTD_POLICY_GET_EXCEPTION_DEVICE_LIST) (
IN EDKII_PLATFORM_VTD_POLICY_PROTOCOL *This,
OUT UINTN *DeviceInfoCount,
- OUT EDKII_PLATFORM_VTD_DEVICE_INFO **DeviceInfo
+ OUT VOID **DeviceInfo
);
struct _EDKII_PLATFORM_VTD_POLICY_PROTOCOL {
|