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

From: Qinxin Xia

Date: Thu Apr 02 2026 - 22:46:01 EST




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


 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