On Sun, Feb 09, 2025 at 02:41:52PM -0400, Jason Gunthorpe wrote:
On Sat, Feb 08, 2025 at 01:02:41AM -0800, Nicolin Chen wrote:
@@ -433,8 +433,8 @@ static int iommufd_group_setup_msi(struct iommufd_group *igroup, list_for_each_entry(cur, &ictx->sw_msi_list, sw_msi_item) { int rc;
if (cur->sw_msi_start != igroup->sw_msi_start ||
!test_bit(cur->id, igroup->required_sw_msi.bitmap))
if (cur->sw_msi_start != idev->sw_msi_start ||
!test_bit(cur->id, idev->igroup->required_sw_msi.bitmap)) continue;
So we end up creating seperate sw_msi_list items with unique IDs for every sw_msi_start?
That indeed might work well, I will try to check it and think about this harder.
The sw_msi_list is still per-ictx, so there won't be items/ids that overlap with their sw_msi windows, right?
Then, the per-HWPT bitmap could still protect the iommu_map(), as the design wanted to? No?
Nicolin