[Question mpam mpam/snapshot+extras/v6.18-rc1] Question with Configuring iommu_group in 'task'

Qinxin Xia xiaqinxin at huawei.com
Thu Apr 2 19:44:35 PDT 2026



On 2026/3/27 18:47:49, Ben Horgan <ben.horgan at arm.com> 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.:-)

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

-- 
Thanks,
Qinxin




More information about the linux-arm-kernel mailing list