RE: [PATCH V3] PCI: Extend ACS configurability

From: Vidya Sagar
Date: Mon Jun 03 2024 - 03:51:18 EST


Hi Bjorn,
Could you let me know if Jason's reply answers your question?
Please let me know if you are looking for any more information.

Thanks,
Vidya Sagar

> -----Original Message-----
> From: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Sent: Thursday, May 23, 2024 8:46 PM
> To: Bjorn Helgaas <helgaas@xxxxxxxxxx>
> Cc: Vidya Sagar <vidyas@xxxxxxxxxx>; corbet@xxxxxxx; bhelgaas@xxxxxxxxxx; Gal
> Shalom <galshalom@xxxxxxxxxx>; Leon Romanovsky <leonro@xxxxxxxxxx>; Thierry
> Reding <treding@xxxxxxxxxx>; Jon Hunter <jonathanh@xxxxxxxxxx>; Masoud
> Moshref Javadi <mmoshrefjava@xxxxxxxxxx>; Shahaf Shuler <shahafs@xxxxxxxxxx>;
> Vikram Sethi <vsethi@xxxxxxxxxx>; Shanker Donthineni <sdonthineni@xxxxxxxxxx>;
> Jiandi An <jan@xxxxxxxxxx>; Tushar Dave <tdave@xxxxxxxxxx>; linux-
> doc@xxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> Krishna Thota <kthota@xxxxxxxxxx>; Manikanta Maddireddy
> <mmaddireddy@xxxxxxxxxx>; sagar.tv@xxxxxxxxx; Joerg Roedel <joro@xxxxxxxxxx>;
> Will Deacon <will@xxxxxxxxxx>; Robin Murphy <robin.murphy@xxxxxxx>;
> iommu@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH V3] PCI: Extend ACS configurability
>
> On Thu, May 23, 2024 at 09:59:36AM -0500, Bjorn Helgaas wrote:
> > [+cc iommu folks]
> >
> > On Thu, May 23, 2024 at 12:05:28PM +0530, Vidya Sagar wrote:
> > > For iommu_groups to form correctly, the ACS settings in the PCIe
> > > fabric need to be setup early in the boot process, either via the
> > > BIOS or via the kernel disable_acs_redir parameter.
> >
> > Can you point to the iommu code that is involved here? It sounds like
> > the iommu_groups are built at boot time and are immutable after that?
>
> They are created when the struct device is plugged in. pci_device_group() does the
> logic.
>
> Notably groups can't/don't change if details like ACS change after the groups are
> setup.
>
> There are alot of instructions out there telling people to boot their servers and then
> manually change the ACS flags with set_pci or something, and these are not good
> instructions since it defeats the VFIO group based security mechanisms.
>
> > If we need per-device ACS config that depends on the workload, it
> > seems kind of problematic to only be able to specify this at boot
> > time. I guess we would need to reboot if we want to run a workload
> > that needs a different config?
>
> Basically. The main difference I'd see is if the server is a VM host or running bare
> metal apps. You can get more efficicenty if you change things for the bare metal case,
> and often bare metal will want to turn the iommu off while a VM host often wants
> more of it turned on.
>
> > Is this the iommu usage model we want in the long term?
>
> There is some path to more dynamic behavior here, but it would require separating
> groups into two components - devices that are together because they are physically
> sharing translation (aliases and things) from devices that are together because they
> share a security boundary (ACS).
>
> It is more believable we could dynamically change security group assigments for VFIO
> than translation group assignment. I don't know anyone interested in this right now -
> Alex and I have only talked about it as a possibility a while back.
>
> FWIW I don't view patch as excluding more dynamisism in the future, but it is the best
> way to work with the current state of affairs, and definitely better than set_pci
> instructions.
>
> Thanks,
> Jason