[+Catalin, Marc, Jason] On Fri, Jul 14, 2023 at 12:32:49PM +1000, Benjamin Herrenschmidt wrote: > Hi Folks ! > > I'd like to revive an old discussion as we (Amazon Linux) have been > getting asks for it. > > What's the best interface to provide the option of write combine mmap's > of BARs via VFIO ? There is an ongoing thread on this topic that we should use to bring this discussion to completion: https://lore.kernel.org/linux-arm-kernel/ZHcxHbCb439I1Uk2@xxxxxxx > > The problem isn't so much the low level implementation, we just have to > play with the pgprot, the question is more around what API to present > to control this. > > One trivial way would be to have an ioctl to set a flag for a given > region/BAR that cause subsequent mmap's to use write-combine. We would > have to keep a bitmap for the "legacy" regions, and use a flag in > struct vfio_pci_region for the others. > > One potentially better way is to make it strictly an attribute of > vfio_pci_region, along with an ioctl that creates a "subregion". The > idea here is that we would have an ioctl to create a region from an > existing region dynamically, which represents a subset of the original > region (typically a BAR), with potentially different attributes (or we > keep the attribute get/set separate). > > I like the latter more because it will allow to more easily define that > portions of a BAR can need different attributes without causing > state/race issues between setting the attribute and mmap. > > This will also enable other attributes than write-combine if/when the > need arises. > > Any better idea ? thoughs ? objections ? > > This is still quite specific to PCI, but so is the entire regions > mechanism, so I don't see an easy path to something more generic at > this stage. > > Cheers, > Ben. >