From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F8ACC83F1A for ; Wed, 23 Jul 2025 13:02:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A91A48E0003; Wed, 23 Jul 2025 09:02:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A68DA8E0002; Wed, 23 Jul 2025 09:02:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 97ECB8E0003; Wed, 23 Jul 2025 09:02:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 84BCA8E0002 for ; Wed, 23 Jul 2025 09:02:00 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 21FE95AB40 for ; Wed, 23 Jul 2025 13:02:00 +0000 (UTC) X-FDA: 83695542000.20.C8234A1 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf18.hostedemail.com (Postfix) with ESMTP id 641D81C0021 for ; Wed, 23 Jul 2025 13:01:57 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PyvJ2iUl; spf=pass (imf18.hostedemail.com: domain of leon@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1753275718; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=phKzR0U9vdX+OIE2j4TVSoC003PJDnKhnDKfctYSamc=; b=U2cwMaYhtRfw+5MEsTDlKkpMiDsWlily2TVrF8pZAN/xEZEjyq++vUDZMIXoiPCRG9cVgL 2Cdw2kNoCP9+zNX3GHYiF3rLg7cmQXjh7GynXxikCtDchNSrg4GNou43qCKX+nniPFDwzh YASOxhYvhzhwsd/c7u5/ax9BTzhqHeg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1753275718; a=rsa-sha256; cv=none; b=G7OPAk8ukH+zS0lgjUFugRkb2h57r5MGQD+6DpXsjcViS1FWv1TmPxUy6e6icQ0RHuHSvq 19kIfA1uMYoUJQUQ0YnMlZchPq2kBzS8V7EawiSTPr7RBGtkRIykkc4TMHjKU+G2s/jw4x QLxGMhiP+VZFBX5Na3rSvL1lD6tvcAY= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PyvJ2iUl; spf=pass (imf18.hostedemail.com: domain of leon@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 0E15646205; Wed, 23 Jul 2025 13:01:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB36AC4CEE7; Wed, 23 Jul 2025 13:01:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753275715; bh=VeEaP0I6Ju84rRyRYaicpp+t8ePJyjkfRFyzhb+AudA=; h=From:To:Cc:Subject:Date:From; b=PyvJ2iUlLMlbGzX5qzJpPwU19z2ZHVNgRRR6I6pgdUocqIvlwyAEVWlzxFVyH+O5B rgvRUW0KyWJCaIjAWkNSjYQZTjUA8hXt537lM2z1lqW3QLRM+cccx6Wa7AnC47Kdh5 5vyhtPdVK3eYgRSInD6ot6DkzLAf5sTN26YAlVnpeeskZCszqRTW1E/3s1cIFoXbIv cwHrWiFoDlhJYh6kh2ZXmBFSyLLP1YH2+JOYj0Akmjoq6YhcbZiRr95b4qm1dHfFnN OpoAwh1yBhmId5vMmQ85Jwdtkwph/jN1NrrSQ24V5bB3R7cAOPmCfMDkPo1fsYxenn 0kqYO1EMHe0rw== From: Leon Romanovsky To: Alex Williamson Cc: Leon Romanovsky , Christoph Hellwig , Jason Gunthorpe , Andrew Morton , Bjorn Helgaas , =?UTF-8?q?Christian=20K=C3=B6nig?= , dri-devel@lists.freedesktop.org, iommu@lists.linux.dev, Jens Axboe , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Joerg Roedel , kvm@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-mm@kvack.org, linux-pci@vger.kernel.org, Logan Gunthorpe , Marek Szyprowski , Robin Murphy , Sumit Semwal , Vivek Kasireddy , Will Deacon Subject: [PATCH 00/10] vfio/pci: Allow MMIO regions to be exported through dma-buf Date: Wed, 23 Jul 2025 16:00:01 +0300 Message-ID: X-Mailer: git-send-email 2.50.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 641D81C0021 X-Stat-Signature: h1y7fdorzsm4mtaxzxcgw5uqtereuath X-Rspam-User: X-HE-Tag: 1753275717-796385 X-HE-Meta: U2FsdGVkX1//aLWRvJ5fMQrvGVws6TZzir+dXqohAUcUZM3ZPM/PSAYAWQHMoNYjfV/KnpHjRXJEk4fMJP/KAl2+fzCf08NZtfCGEDosSmLxOlqL45FIvaHaAJWHgZ65/nc+myhSUtAoq2lxeU/RNZb/ut/vqov2Bweqqx1qaZXPbS/64jhhv5cYI7vrcV2IqepB6lS9GuFmfP2JHZvN5F4rjgY5PuaPdkUlFJ12RMPIcWs4EcJuU3w2KP0aI1Z/JBOOqKbAm25ANQeeaYdhTcKekhPOBF4mHa3tB3UXLNnYmbgdiy1EtIso74+Ex10GT5RXyrjpeAthaM0kFqHnmV/obexR9MNTl+RlMDgWEqzljjR9rbIQ4vUpaCCputf8jB/Bi+/Wrw5L6Jzr8vOxynfv9YgnJihXoKQ2ksgab3VJOd/pgH2RvrjSAP7z6N4ytN4VGHFSHqjtKyy2oSwvDyofHi4PxanVkYQkcHCyPpd05J0D+nJ2OFdDB4Tmgiz7RXFu26J/yb4BbddGqPlJvw0fk/1HdsZTp4LUpYdW1jr6r+hS+bxISt6YZxyVr99CImu3Sx+OK/VLHsD66G1j57aY+F9gSf4qw5aw1Kk2KM/5CVoUDC2KRjt5bHLZYyTLsZFdTOCvwOKDgdHsm7sPIPE+Cp8y9lEKpNXiIT8xvqGLPahzpnFZkEhz6iYti9M6Ba0g4HfTkCjgz/1qiHi+IGOxVNt880krPJFoqf+HUJvXHVGxeluAaf+580Wq4KJBd2kj8wZLQY7OodEd4xy4Px0yVF1chOCs5tnTDRxPFxr+6vfQ+/o0TwPKisB50PejowSYKmiuu6zoamyh3/z28Vc0N901MGkHF3bu361AdKvsE68d59BR4Sj6tM6LHqn5UsEvbZvB8BVmMDRlvj69/C/38k41FnrX3mjFfdBAvLqgDkiB67JEOc7awPvBvwGQFAbIV2LkESazwKBzZqW Kx8iA6yR 4SA1aS+MAtuHXmtmwaR1VQUjx3510+UvF7a//rRXLynSiWXcKhTj1ODN+BZBpidj4KoBxnkYywKEloWawOZA9yxlwnqKLVYFghtOE+VD1Ji9xwRwCflKVcRrAo0sOka6szPsBJ3coXIDaou35q9DRFkFf6c6aAxwj2aPfXCXYhxD+JvOzeVg4y4Ezxg+ZUdJDk9fklMzovoa32YXPHDykR1JixcU9TvyR7yPNkNowo86PoDs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Leon Romanovsky --------------------------------------------------------------------------- Based on blk and DMA patches which will be sent during coming merge window. --------------------------------------------------------------------------- This series extends the VFIO PCI subsystem to support exporting MMIO regions from PCI device BARs as dma-buf objects, enabling safe sharing of non-struct page memory with controlled lifetime management. This allows RDMA and other subsystems to import dma-buf FDs and build them into memory regions for PCI P2P operations. The series supports a use case for SPDK where a NVMe device will be owned by SPDK through VFIO but interacting with a RDMA device. The RDMA device may directly access the NVMe CMB or directly manipulate the NVMe device's doorbell using PCI P2P. However, as a general mechanism, it can support many other scenarios with VFIO. This dmabuf approach can be usable by iommufd as well for generic and safe P2P mappings. In addition to the SPDK use-case mentioned above, the capability added in this patch series can also be useful when a buffer (located in device memory such as VRAM) needs to be shared between any two dGPU devices or instances (assuming one of them is bound to VFIO PCI) as long as they are P2P DMA compatible. The implementation provides a revocable attachment mechanism using dma-buf move operations. MMIO regions are normally pinned as BARs don't change physical addresses, but access is revoked when the VFIO device is closed or a PCI reset is issued. This ensures kernel self-defense against potentially hostile userspace. The series includes significant refactoring of the PCI P2PDMA subsystem to separate core P2P functionality from memory allocation features, making it more modular and suitable for VFIO use cases that don't need struct page support. ----------------------------------------------------------------------- This is based on https://lore.kernel.org/all/20250307052248.405803-1-vivek.kasireddy@intel.com/ but heavily rewritten to be based on DMA physical API. ----------------------------------------------------------------------- The WIP branch can be found here: https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/log/?h=dmabuf-vfio Thanks Leon Romanovsky (8): PCI/P2PDMA: Remove redundant bus_offset from map state PCI/P2PDMA: Introduce p2pdma_provider structure for cleaner abstraction PCI/P2PDMA: Simplify bus address mapping API PCI/P2PDMA: Refactor to separate core P2P functionality from memory allocation PCI/P2PDMA: Export pci_p2pdma_map_type() function types: move phys_vec definition to common header vfio/pci: Enable peer-to-peer DMA transactions by default vfio/pci: Add dma-buf export support for MMIO regions Vivek Kasireddy (2): vfio: Export vfio device get and put registration helpers vfio/pci: Share the core device pointer while invoking feature functions block/blk-mq-dma.c | 7 +- drivers/iommu/dma-iommu.c | 4 +- drivers/pci/p2pdma.c | 144 +++++++++---- drivers/vfio/pci/Kconfig | 20 ++ drivers/vfio/pci/Makefile | 2 + drivers/vfio/pci/vfio_pci_config.c | 22 +- drivers/vfio/pci/vfio_pci_core.c | 59 ++++-- drivers/vfio/pci/vfio_pci_dmabuf.c | 321 +++++++++++++++++++++++++++++ drivers/vfio/pci/vfio_pci_priv.h | 23 +++ drivers/vfio/vfio_main.c | 2 + include/linux/dma-buf.h | 1 + include/linux/pci-p2pdma.h | 114 +++++----- include/linux/types.h | 5 + include/linux/vfio.h | 2 + include/linux/vfio_pci_core.h | 4 + include/uapi/linux/vfio.h | 19 ++ kernel/dma/direct.c | 4 +- mm/hmm.c | 2 +- 18 files changed, 631 insertions(+), 124 deletions(-) create mode 100644 drivers/vfio/pci/vfio_pci_dmabuf.c -- 2.50.1