A union is introduced to struct iommu_resv_region to hold
any firmware specific data. Also, provided a callback to
free up any firmware specific memory allocations. This is
in preparation to add support for IORT RMR reserve regions
and the union now holds the RMR specific information.

Tested-by: Steven Price <[email protected]>
Tested-by: Laurentiu Tudor <[email protected]>
Signed-off-by: Shameer Kolothum <[email protected]>
---
 include/linux/iommu.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 9208eca4b0d1..38f1e043dfaa 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -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);
 };
 
 /**
-- 
2.17.1

_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to