Re: [Question mpam mpam/snapshot+extras/v6.18-rc1] Question with Configuring iommu_group in 'task'
From: Ben Horgan
Date: Mon Apr 13 2026 - 11:03:11 EST
Hi Qinxin,
On 4/3/26 03:44, Qinxin Xia wrote:
>
>
> On 2026/3/27 18:47:49, Ben Horgan <ben.horgan@xxxxxxx> wrote:
>> Hi Qinxin,
>>
>> On 3/27/26 10:21, Qinxin Xia wrote:
>>>
>>> Hello everyone!
>>>
>>> In earlier versions, mpam supports the configuration of iommu_groups.
>>>
>>> 823 static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
>>> 824 char *buf, size_t nbytes,
>>> loff_t off)
>>> 825 {
>>> 826 struct rdtgroup *rdtgrp;
>>> 827 int iommu_group_id;
>>> 828 bool is_iommu;
>>> 829 char *pid_str;
>>> 830 int ret = 0;
>>> 831 pid_t pid;
>>> 832
>>> 833 rdtgrp = rdtgroup_kn_lock_live(of->kn);
>>> 834 if (!rdtgrp) {
>>> 835 rdtgroup_kn_unlock(of->kn);
>>> 836 return -ENOENT;
>>> 837 }
>>> 838 rdt_last_cmd_clear();
>>> 839
>>> 840 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED ||
>>> 841 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) {
>>> 842 ret = -EINVAL;
>>> 843 rdt_last_cmd_puts("Pseudo-locking in progress\n");
>>> 844 goto unlock;
>>> 845 }
>>> 846
>>> 847 while (buf && buf[0] != '\0' && buf[0] != '\n') {
>>> 848 pid_str = strim(strsep(&buf, ","));
>>> 849
>>> 850 is_iommu = string_is_iommu_group(pid_str, &iommu_group_id);
>>>
>>> What puzzles me is why we would put it under 'task'—this seems a little
>>> strange to users.It seems they are not related.Why don't we add a new
>>> interface like 'iommu'?
>>
>> I think it is likely that this interface would change if upstream support is added.
>>
>
> I have done some work in this direction before, and I will release an
> RFC later for further discussion.:-)
Looking forward to seeing it.
Ben
>
>>>
>>> 851 if (is_iommu)
>>> 852 ret = rdtgroup_move_iommu(iommu_group_id, rdtgrp, of);
>>> 853 else if (kstrtoint(pid_str, 0, &pid)) {
>>> 854 rdt_last_cmd_printf("Task list parsing error pid %s\n", pid_str);
>>> 855 ret = -EINVAL;
>>> 856 break;
>>> 857 }
>>> 858
>>> 859 if (pid < 0) {
>>> 860 rdt_last_cmd_printf("Invalid pid %d\n", pid);
>>> 861 ret = -EINVAL;
>>> 862 break;
>>> 863 }
>>> 864
>>>
>>> In future glue versions, will you re-enable support for iommu_group, and
>>> if so, will the configuration scheme be changed?
>>
>> Please can you let us know about your usecase so that we can get more information to decide
>> what the best interface would be?
>>
>> Thanks,
>>
>> Ben
>>
>>
>>
>
> We want to use the iommu mpam to implement stream control for different
> PCIe devices. By limiting the access bandwidth of some PCIe devices, the
> high-priority service devices can obtain more resources.
>