@@ -127,6 +127,11 @@ enum iommu_resv_type {
IOMMU_RESV_SW_MSI,
};
+struct iommu_iort_rmr_data {
+ const u32 *sids; /* Stream IDs associated with IORT RMR entry */
+ u32 num_sids;
+};
+
/**
* struct iommu_resv_region - descriptor for a reserved memory region
* @list: Linked list pointers
@@ -134,6 +139,9 @@ enum iommu_resv_type {
* @length: Length of the region in bytes
* @prot: IOMMU Protection flags (READ/WRITE/...)
* @type: Type of the reserved region
+ * @fw_data: Firmware-specific data
+ * @resv_region_free_fw_data: Callback to free any firmware specific
+ * memory allocation
*/
struct iommu_resv_region {
struct list_head list;
@@ -141,6 +149,11 @@ struct iommu_resv_region {
size_t length;
int prot;
enum iommu_resv_type type;
+ union {
+ struct iommu_iort_rmr_data rmr;
+ } fw_data;
+ void (*resv_region_free_fw_data)(struct device *dev,
+ struct iommu_resv_region *region);
};
/**