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. Jason