Hi all,
There were various suggestions in the September 2025 thread "[TECH
TOPIC] vfio, iommufd: Enabling user space drivers to vend more
granular access to client processes" [0], and LPC discussions, around
improving the situation for multi-process userspace driver designs.
This RFC series implements some of these ideas.
Background: Multi-process USDs
==============================
The userspace driver scenario discussed in that thread involves a
primary process driving a PCIe function through VFIO/iommufd, which
manages the function-wide ownership/lifecycle. The function is
designed to provide multiple distinct programming interfaces (for
example, several independent MMIO register frames in one function),
and the primary process delegates control of these interfaces to
multiple independent client processes (which do the actual work).
This scenario clearly relies on a HW design that provides appropriate
isolation between the programming interfaces.
The two key needs are:
1. Mechanisms to safely delegate a subset of the device MMIO
resources to a client process without over-sharing wider access
(or influence over whole-device activities, such as reset).
2. Mechanisms to allow a client process to do its own iommufd
management w.r.t. its address space, in a way that's isolated
from DMA relating to other clients.
mmap() of VFIO DMABUFs
======================
First, this RFC addresses #1, implementing the proposals in [0] to add
mmap() support to the existing VFIO DMABUF exporter.
This enables a userspace driver to define DMABUF ranges corresponding
to sub-ranges of a BAR, and grant a given client (via a shared fd)
the capability to access (only) those sub-ranges. The VFIO device fds
would be kept private to the primary process. All the client can do
with that fd is map (or iomap via iommufd) that specific subset of
resources, and the impact of bugs/malice is contained.
(We'll follow up on #2 separately, as a related-but-distinct problem.
PASIDs are one way to achieve per-client isolation of DMA; another
could be sharing of a single IOVA space via 'constrained' iommufds.)
Revocation/reclaim
==================
That's useful as-is, but then the lifetime of access granted to a
client needs to be managed well. For example, a protocol between the
primary process and the client can indicate when the client is done,
and when it's safe to reuse the resources elsewhere.
Resources could be released cooperatively, but it's much more robust
to enable the driver to make the resources guaranteed-inaccessible
when it chooses, so that it can re-assign them to other uses in
future.
So, second, I've suggested a PoC/example mechanism for reclaiming
ranges shared with clients: a new DMABUF ioctl, DMA_BUF_IOCTL_REVOKE,
is routed to a DMABUF exporter callback. The VFIO DMABUF exporter's
implementation permanently revokes a DMABUF (notifying importers, and
zapping PTEs for any mappings). This makes the DMABUF defunct and any
client (or third party the client has shared the buffer onto!) cannot
be used to access the BAR ranges, whether via DMABUF import or mmap().
A primary driver process would do this operation when the client's
tenure ends to reclaim "loaned-out" MMIO interfaces, at which point
the interfaces could be safely re-used.
This ioctl is one of several possible approaches to achieve buffer
revocation, but I wanted to demonstrate something here as it's an
important part of the buffer lifecycle in this driver scenario. An
alternative implementation could be some VFIO-specific operation to
search for a DMABUF (by address?) and kill it, but if the server keeps
hold of the DMABUF fd that's already a clean way to locate it later.
BAR mapping access attributes
=============================
Third, inspired by Alex [Mastro] and Jason's comments in [0], and
Mahmoud's work in [1] with the goal of controlling CPU access
attributes for VFIO BAR mappings (e.g. WC) I noticed that once we can
mmap() VFIO DMABUFs representing BAR sub-spans, it's straightforward
to decorate them with access attributes for the VMA.
I've proposed reserving a field in struct
vfio_device_feature_dma_buf's flags to specify an attribute for its
ranges. Although that keeps the (UAPI) struct unchanged, it means all
ranges in a DMABUF share the same attribute. I feel a single
attribute-to-mmap() relation is logical/reasonable. An application
can also create multiple DMABUFs to describe any BAR layout and mix of
attributes.
Tests
=====
I've included an [RFC ONLY] userspace test program which I am _not_
proposing to merge, but am sharing for context. It illustrates &
tests various map/revoke cases, but doesn't use the existing VFIO
selftests and relies on a (tweaked) QEMU EDU function. I'm working on
integrating the scenarios into the existing VFIO selftests.
This code has been tested in mapping DMABUFs of single/multiple
ranges, aliasing mmap()s, aliasing ranges across DMABUFs, vm_pgoff >
0, revocation, shutdown/cleanup scenarios, and hugepage mappings seem
to work correctly. I've lightly tested WC mappings also (by observing
resulting PTEs as having the correct attributes...).
(The first two commits are a couple of tiny bugfixes which I can send
separately, should reviewers prefer.)
This series is based on v6.19 but I expect to rebase, at least onto
Leon's recent work [2] ("vfio: Wait for dma-buf invalidation to
complete").
What are people's thoughts? I'll respin to de-RFC and capture
comments, if we think this approach is appropriate.
Thanks,
Matt
References:
[0]: https://lore.kernel.org/linux-iommu/20250918214425.2677057-1-amastro@fb.com/
[1]: https://lore.kernel.org/all/20250804104012.87915-1-mngyadam@amazon.de/
[2]: https://lore.kernel.org/linux-iommu/20260205-nocturnal-poetic-chamois-f566a…
Matt Evans (7):
vfio/pci: Ensure VFIO barmap is set up before creating a DMABUF
vfio/pci: Clean up DMABUFs before disabling function
vfio/pci: Support mmap() of a DMABUF
dma-buf: uapi: Mechanism to revoke DMABUFs via ioctl()
vfio/pci: Permanently revoke a DMABUF on request
vfio/pci: Add mmap() attributes to DMABUF feature
[RFC ONLY] selftests: vfio: Add standalone vfio_dmabuf_mmap_test
drivers/dma-buf/dma-buf.c | 5 +
drivers/vfio/pci/vfio_pci_core.c | 4 +-
drivers/vfio/pci/vfio_pci_dmabuf.c | 300 ++++++-
include/linux/dma-buf.h | 22 +
include/uapi/linux/dma-buf.h | 1 +
include/uapi/linux/vfio.h | 12 +-
tools/testing/selftests/vfio/Makefile | 1 +
.../vfio/standalone/vfio_dmabuf_mmap_test.c | 822 ++++++++++++++++++
8 files changed, 1153 insertions(+), 14 deletions(-)
create mode 100644 tools/testing/selftests/vfio/standalone/vfio_dmabuf_mmap_test.c
--
2.47.3
An earlier series[1] from Maxime introduced dmem to the cma allocator in
an attempt to use it generally for dma-buf. Restart from there and apply
the charge in the narrower context of the CMA dma-buf heap instead.
In line with introducing cgroup to the system heap[2], this behavior is
enabled based on dma_heap.mem_accounting, disabled by default.
dmem is chosen for CMA heaps as it allows limits to be set for each
region backing each heap. The charge is only put in the dma-buf heap for
now as it guaranties it can be accounted against a userspace process
that requested the allocation.
[1] https://lore.kernel.org/all/20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.…
[2] https://lore.kernel.org/all/20260116-dmabuf-heap-system-memcg-v3-0-ecc6b62c…
Signed-off-by: Eric Chanudet <echanude(a)redhat.com>
---
Changes in v2:
- Rebase on Maxime's introduction of dmem to the cma allocator:
https://lore.kernel.org/all/20250310-dmem-cgroups-v1-0-2984c1bc9312@kernel.…
- Remove the dmem region registration from the cma dma-buf heap
- Remove the misplaced logic for the default region.
- Link to v1: https://lore.kernel.org/r/20260130-dmabuf-heap-cma-dmem-v1-1-3647ea993e99@r…
---
Eric Chanudet (1):
dma-buf: heaps: cma: charge each cma heap's dmem
Maxime Ripard (2):
cma: Register dmem region for each cma region
cma: Provide accessor to cma dmem region
drivers/dma-buf/heaps/cma_heap.c | 15 ++++++++++++++-
include/linux/cma.h | 9 +++++++++
mm/cma.c | 20 +++++++++++++++++++-
mm/cma.h | 3 +++
4 files changed, 45 insertions(+), 2 deletions(-)
---
base-commit: 948e195dfaa56e48eabda591f97630502ff7e27e
change-id: 20260128-dmabuf-heap-cma-dmem-f4120a2df4a8
Best regards,
--
Eric Chanudet <echanude(a)redhat.com>
Hi,
The recent introduction of heaps in the optee driver [1] made possible
the creation of heaps as modules.
It's generally a good idea if possible, including for the already
existing system and CMA heaps.
The system one is pretty trivial, the CMA one is a bit more involved,
especially since we have a call from kernel/dma/contiguous.c to the CMA
heap code. This was solved by turning the logic around and making the
CMA heap call into the contiguous DMA code.
Let me know what you think,
Maxime
1: https://lore.kernel.org/dri-devel/20250911135007.1275833-4-jens.wiklander@l…
Signed-off-by: Maxime Ripard <mripard(a)kernel.org>
---
Maxime Ripard (7):
dma: contiguous: Turn heap registration logic around
mm: cma: Export cma_alloc and cma_release
mm: cma: Export cma_get_name
mm: cma: Export dma_contiguous_default_area
dma-buf: heaps: Export mem_accounting parameter
dma-buf: heaps: cma: Turn the heap into a module
dma-buf: heaps: system: Turn the heap into a module
drivers/dma-buf/dma-heap.c | 1 +
drivers/dma-buf/heaps/Kconfig | 4 ++--
drivers/dma-buf/heaps/cma_heap.c | 21 +++++----------------
drivers/dma-buf/heaps/system_heap.c | 5 +++++
include/linux/dma-map-ops.h | 5 +++++
kernel/dma/contiguous.c | 27 +++++++++++++++++++++++++--
mm/cma.c | 3 +++
7 files changed, 46 insertions(+), 20 deletions(-)
---
base-commit: 499a718536dc0e1c1d1b6211847207d58acd9916
change-id: 20260225-dma-buf-heaps-as-modules-1034b3ec9f2a
Best regards,
--
Maxime Ripard <mripard(a)kernel.org>
From: Jiri Pirko <jiri(a)nvidia.com>
Confidential computing (CoCo) VMs/guests, such as AMD SEV and Intel TDX,
run with encrypted/protected memory which creates a challenge
for devices that do not support DMA to it (no TDISP support).
For kernel-only DMA operations, swiotlb bounce buffering provides a
transparent solution by copying data through decrypted memory.
However, the only way to get this memory into userspace is via the DMA
API's dma_alloc_pages()/dma_mmap_pages() type interfaces which limits
the use of the memory to a single DMA device, and is incompatible with
pin_user_pages().
These limitations are particularly problematic for the RDMA subsystem
which makes heavy use of pin_user_pages() and expects flexible memory
usage between many different DMA devices.
This patch series enables userspace to explicitly request decrypted
(shared) memory allocations from the dma-buf system heap.
Userspace can mmap this memory and pass the dma-buf fd to other
existing importers such as RDMA or DRM devices to access the
memory. The DMA API is improved to allow the dma heap exporter to DMA
map the shared memory to each importing device.
---
v1->v2:
patch1:
- rebased on top of recent dma-mapping-fixes
patch2:
- fixed build errors on s390 by including mem_encrypt.h
- converted system heap flag implementation to a separate heap
Based on dma-mapping-fixes HEAD d5b5e8149af0f5efed58653cbebf1cb3258ce49a
Jiri Pirko (2):
dma-mapping: introduce DMA_ATTR_CC_DECRYPTED for pre-decrypted memory
dma-buf: heaps: system: add system_cc_decrypted heap for explicitly
decrypted memory
drivers/dma-buf/heaps/system_heap.c | 103 ++++++++++++++++++++++++++--
include/linux/dma-heap.h | 1 +
include/linux/dma-mapping.h | 6 ++
include/trace/events/dma.h | 3 +-
include/uapi/linux/dma-heap.h | 3 +-
kernel/dma/direct.h | 14 +++-
6 files changed, 119 insertions(+), 11 deletions(-)
--
2.51.1
OPTIMISTIC HACKER GAIUS is a professional crypto recovery service specializing in lost Bitcoin recovery, scammed USDT recovery, and digital asset tracing. The company uses advanced blockchain analysis and investigative techniques to track and recover stolen or inaccessible cryptocurrency. Known for clear communication and ethical practices, OPTIMISTIC HACKER GAIUS provides realistic assessments and reliable support for individuals and businesses affected by crypto-related losses.
Mail-Box: support @ optimistichackargaius. c om
WhatsApp: +44 737 674 0569
Website: optimistichackargaius. co m
在 2021/11/22 3:08, Shunsuke Mie 写道:
> This patch series add a dma-buf support for rxe driver.
>
> A dma-buf based memory registering has beed introduced to use the memory
> region that lack of associated page structures (e.g. device memory and CMA
> managed memory) [1]. However, to use the dma-buf based memory, each rdma
> device drivers require add some implementation. The rxe driver has not
> support yet.
>
> [1] https://www.spinics.net/lists/linux-rdma/msg98592.html
>
> To enable to use the dma-buf memory in rxe rdma device, add some changes
> and implementation in this patch series.
>
> This series consists of two patches. The first patch changes the IB core
> to support for rdma drivers that has not dma device. The secound patch adds
> the dma-buf support to rxe driver.
>
Hi, Shunsuke Mie
I was revisiting your 2021 proposal around dma-buf integration with RDMA
and the related discussions at the time.
As you know, dma-buf usage in RDMA-related workflows has gained more
traction recently, and we are seeing increasing interest in
heterogeneous memory and cross-device buffer sharing. Given the changes
in the ecosystem since then, I’m wondering whether you think the
original direction might be worth reconsidering.
Do you have any interest in continuing that line of work, or updating
the design based on today’s context? If not, I’d still appreciate your
perspective on what you see as the main blockers from the previous
discussions, and whether you think the landscape has changed enough to
justify another attempt.
Depending on the direction, we may consider exploring dma-buf support in
rxe or at the core level, but I’d prefer to first understand your view
before moving forward.
Zhu Yanjun
> Related user space RDMA library changes are provided as a separate patch.
>
> v4:
> * Fix warnings, unused variable and casting
> v3: https://www.spinics.net/lists/linux-rdma/msg106776.html
> * Rebase to the latest linux-rdma 'for-next' branch (5.15.0-rc6+)
> * Fix to use dma-buf-map helpers
> v2: https://www.spinics.net/lists/linux-rdma/msg105928.html
> * Rebase to the latest linux-rdma 'for-next' branch (5.15.0-rc1+)
> * Instead of using a dummy dma_device to attach dma-buf, just store
> dma-buf to use software RDMA driver
> * Use dma-buf vmap() interface
> * Check to pass tests of rdma-core
> v1: https://www.spinics.net/lists/linux-rdma/msg105376.html
> * The initial patch set
> * Use ib_device as dma_device.
> * Use dma-buf dynamic attach interface
> * Add dma-buf support to rxe device
>
> Shunsuke Mie (2):
> RDMA/umem: Change for rdma devices has not dma device
> RDMA/rxe: Add dma-buf support
>
> drivers/infiniband/core/umem_dmabuf.c | 20 ++++-
> drivers/infiniband/sw/rxe/rxe_loc.h | 2 +
> drivers/infiniband/sw/rxe/rxe_mr.c | 113 ++++++++++++++++++++++++++
> drivers/infiniband/sw/rxe/rxe_verbs.c | 34 ++++++++
> include/rdma/ib_umem.h | 1 +
> 5 files changed, 166 insertions(+), 4 deletions(-)
>
Hello everyone, I wish to give my own review about iFORCE HACKER RECOVERY. I hope this message reaches the right audience. As an entrepreneur, I was eager to invest in cryptocurrency after learning about its potential to significantly increase my income. I came across someone online who promised exceptionally high returns, and because he seemed knowledgeable, I was easily convinced. After investing a substantial amount, I soon discovered that I was unable to withdraw my funds. It was all a scam. This left me in debt and caused severe damage to my business. Fortunately, I came across a pop-up about cryptocurrency recovery and cybersecurity experts. I reached out to iFORCE HACKER RECOVERY, a cybersecurity and cryptocurrency recovery company, and they successfully helped me recover my lost funds. I am incredibly grateful for their services and highly recommend them to anyone in need of cryptocurrency recovery assistance.
Website; ht tps: //iforcehackers. co m/
Email; iforcehk @ consultant. c om
Call/Text-whatsapp; +1 (240) 8033 (706)
In 2026, cryptocurrency theft, scams, and accidental loss remain among the most common forms of digital financial harm. Phishing pages that clone Ledger or MetaMask interfaces, AI deepfake “support” calls, fake staking/yield platforms displaying fabricated profits, romance-to-crypto investment traps, wallet-draining malware, and unauthorized seed-phrase compromises continue to drain billions from users worldwide. When the funds disappear, the natural instinct is to search for “crypto recovery service” — only to discover that most results are secondary scams designed to exploit victims a second time.
So should you hire a crypto recovery service? The expert consensus is clear: only if the service is genuinely legitimate, technically competent, transparent, and realistic. Hiring the wrong one almost always costs you more money and gives you zero chance of recovery. Hiring the right one significantly improves your realistic odds when funds are still traceable.
When Hiring a Recovery Service Makes Sense
Expert insight: Recovery is most viable in these scenarios:
Funds recently sent to a scammer (within hours to a few days) The sooner you act, the less time scammers have to launder through mixers, cross-chain bridges, privacy protocols, or non-KYC off-ramps.
Funds landed on a KYC/AML-compliant centralized exchange Regulated platforms (especially those operating in or serving U.S./EU jurisdictions) can freeze assets or cooperate with documented victims when presented with strong evidence.
You have strong, complete evidence Multiple transaction IDs (TXIDs), sending/receiving addresses, scam messages/screenshots, deposit records, timelines, and communication logs dramatically increase traceability.
Wallet access issue (not outright theft) Forgotten passwords, damaged hardware, or malware-compromised wallets can often be restored using secure, non-destructive professional methods.
If your case matches one or more of these, hiring a reputable recovery service is often the smartest and most effective step you can take.
When Hiring a Recovery Service Is Unlikely to Help
Expert insight: Be realistic about low-success scenarios:
Funds already laundered through multiple mixers/privacy coins and off-ramped to fiat
Very small amounts (below most services’ minimum viable case threshold)
No preserved evidence (missing TXIDs, screenshots, or communication logs)
Loss occurred months or years ago with no traceable endpoints remaining
In these situations, even the best legitimate service may conclude recovery is not feasible. Ethical experts will tell you this upfront — scammers will promise success anyway.
How to Identify a Legitimate Recovery Service in 2026
The single most important decision is choosing the right provider. Here are the non-negotiable markers of legitimacy:
Free, no-obligation initial case evaluation
Never requests private keys, seed phrases, wallet access, or login credentials
No large upfront fees before detailed feasibility review
Uses only professional website + secure email (no Telegram/WhatsApp/DMs/forums as primary contact)
Provides realistic success projections (no “100% guaranteed” or “instant recovery” claims)
Delivers regular encrypted progress updates
Focuses on blockchain forensics, exchange coordination, and documentation — not “magic hacks”
Autopsy Mainnet Recovery (AMR) consistently meets every one of these criteria and is widely regarded as one of the most reputable and effective legitimate recovery services operating in 2026.
Expert Insights from Autopsy Mainnet Recovery (AMR)
Autopsy Mainnet Recovery (AMR), accessible only through their verified official platform at pucnonline.com, is frequently cited by scam victims and industry observers as a top-tier choice for several key reasons:
Elite forensic capability — Advanced multi-chain tracing that maps funds even through complex laundering paths
Endpoint intelligence — Strong focus on identifying when stolen assets reach compliant centralized exchanges
Scam-specific expertise — Deep knowledge of 2026-era fraud vectors: phishing, fake yield platforms, deepfake impersonations, romance-to-crypto fraud
Victim-first transparency — Free evaluations, detailed reports, no sensitive data requests, regular updates, realistic expectations
Secure & ethical process — Official channels only ( https://autospyrec.site
and info(a)autopsymainnetsolutions.com
), strict confidentiality, post-recovery security guidance
Autopsy Mainnet Recovery (AMR)’s experts emphasize that speed + evidence + legitimate professional help is the formula that produces the highest realistic success rates.
Final Expert Recommendation
Should you hire a crypto recovery service? Yes — if you choose a legitimate one and act quickly. Hiring a reputable provider like Autopsy Mainnet Recovery (AMR) significantly improves your chances when funds remain traceable, while also protecting you from secondary scams that would only deepen your losses.
If you’ve lost crypto assets:
Preserve every piece of evidence immediately
Secure remaining holdings in a new hardware wallet
File official reports (IC3.gov, ReportFraud.ftc.gov, etc.)
Contact only verified official channels for a free evaluation
Visit https://www.autopsymainnetsolutions.com
or email info(a)autopsymainnetsolutions.com
today for a confidential consultation. Never pay upfront fees without a detailed review. Never share sensitive wallet information. Never trust unsolicited offers.
Recovery is difficult and never guaranteed, but the right legitimate service gives you the strongest realistic opportunity to reclaim what was stolen in today’s challenging environment. Stay vigilant, verify everything, and protect your digital future.