On Thu, Dec 07, 2023 at 09:04:00AM +0000, Tian, Kevin wrote:
From: Liu, Yi L yi.l.liu@intel.com Sent: Thursday, December 7, 2023 2:59 PM
On 2023/11/17 21:07, Yi Liu wrote:
@@ -613,4 +614,38 @@ struct iommu_hwpt_get_dirty_bitmap { #define IOMMU_HWPT_GET_DIRTY_BITMAP _IO(IOMMUFD_TYPE, \
IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP)
+/**
- struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE)
- @size: sizeof(struct iommu_hwpt_invalidate)
- @hwpt_id: HWPT ID of a nested HWPT for cache invalidation
- @reqs_uptr: User pointer to an array having @req_num of cache
invalidation
requests. The request entries in the array are of fixed width
@req_len, and contain a user data structure for invalidation
request specific to the given hardware page table.
- @req_type: One of enum iommu_hwpt_data_type, defining the data
type of all
the entries in the invalidation request array. It should suit
with the data_type passed per the allocation of the hwpt pointed
by @hwpt_id.
@Jason and Kevin,
Here a check with you two. I had a conversation with Nic on the definition of req_type here. It was added to support potential multiple kinds of cache invalidation data types for a invalidating cache for a single hwpt type[1]. But we defined it as reusing the hwpt_data_type. In this way, it is not able to support the potential case in[1]. is it? Shall we define a separate enum for invalidation data types? And how can we let user know the available invalidation data types for a hwpt type? Any idea?
[1] https://lore.kernel.org/linux- iommu/20231018163720.GA3952@nvidia.com/
From that thread Jason mentioned to make the invalidation format part of domain allocation. If that is the direction to go then there won't be multiple invalidation formats per hwpt. The user should create multiple hwpt's per invalidation format (though mixing formats in one virtual platform is very unlikely)?
I think we could do either, but I have a vauge cleanness preference that the enums are just different? That would follow a pretty typical pattern for a structure tag to reflect the content of the structure.
Jason