Re: [RFC PATCH 10/30] vfio/pci: Export vfio dma-buf specific info for importers
Ackerley Tng <[email protected]> Mon, 27 Jul 2026 11:53:55 -0700
| Newsgroups | dev.linux.lists.linux-coco,dev.linux.lists.iommu,org.freedesktop.lists.dri-devel,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <CAEvNRgGYc0B1YyhDhS0Khfm3N85hbkYGMTfDLiXYn+WHTLF2EQ@mail.gmail.com> |
Xu Yilun <[email protected]> writes: >> > If VFIO can create one > > It is an interesting idea to let VFIO create a guest_memfd instance, if > DMABUF doesn't work. But to achieve this goal, I think we still need to > refactor guest_memfd to allow for different memory/MMIO resource > exporters/creators, and different resource importers/users like KVM MMU > & IOMMUFD. > Yup I think both ways we'd need some level of integration from both sides :) >> >> At guest_memfd creation time, guest_memfd is always created for a >> KVM. This is the first place where it is bound to a kvm instance. This >> is one place where it helps Yilun with Confidential VMs, so KVM can be >> sure that the memory was meant for a specific CoCo kvm and not any VM. >> >> I think it might be weird to have VFIO take a kvm fd to create a >> guest_memfd? > > I think having VFIO create a guest_memfd is better than having KVM > create a guest_memfd on behalf of VFIO. > > The lifecycle of the MMIO resources should be managed by VFIO, cause > the availability of these MMIO resouces are impacted by device > operations, e.g., device reset, PCI Memory Space Enable (MSE) ... > You can't export MMIO resources to KVM MMU without VFIO's awareness. > Thanks for explaining the above! Do you mean that as long as VFIO knows that some addresses are not usable, those addressses have to be removed from the stage 2 page tables that KVM manages? > And VFIO doesn't have to take a kvm fd paramter to create a guest_memfd, > VFIO has got the kvm instance via KVM_DEV_VFIO_FILE_ADD. > I'm new to this - looks to me KVM_DEV_VFIO_FILE_ADD is for linking VFIO to KVM but some mmap-ing is also required (pre-CoCo) to set up memslots? With CoCo, setting up memslots would use some fd (guest_memfd wrapping VFIO or the VFIO-created guest_memfd like you were suggesting) and I'd think there will still be some notifiers between KVM and VFIO for the mapping. Btw is it right to say that KVM_DEV_VFIO_FILE_ADD is only in the case of setting up irqchip? Is irqchip a requirement for Confidential IO? Hope you also had a chance to look at [1] that David Woodhouse is working on :) [1] https://lore.kernel.org/all/[email protected]/ >> >> I was thinking that the userspace VMM could do something like: >> >> int vfio_fd = open("/dev/vfio/devices/vfio0"); >> int gmem_fd = ioctl(KVM_CREATE_GUEST_MEMFD, { .fd = vfio_fd });