On 3/7/26 00:47, Jason Gunthorpe wrote:
On Thu, Jul 02, 2026 at 10:25:16AM +1000, Alexey Kardashevskiy wrote:

not externally available so I'll have to trick the DMA layer into
using SWIOTLB (which is still all shared, right?) as I specifically
want to skip page conversions. Setting low DMA mask won't guarantee
that the DMA layer won't allocate a page outside of SWIOTLB and
convert it. Manually do

Why so particular?

aahhh I missed "pre-". I need a way to get pre-shared pages for my
sev-guest activities.

It sounds to me like you don't, what you are worried about is
optimizing the dma_alloc_coherent flow to avoid fragmentation and all
CC architetures require this optimization.

It is not about fragmentation, it is about unwanted page state changes when few 
pages are shared for a very short time.

When I needed these pages, I could: get a private page, convert, (possibly trigger 
RMP and IO PDE smashing if that 4K is backed with 2M), do the VM<->HV 
communication, convert back to private (and possibly unsmash the page).

Or ask swiotlb for these already shared pages, and skip all of the above.

How would defragmentation help here? It is two or zero conversions.

So I'm strongly against you trying to open code something in your
driver. Use the DMA API as-is. Propose general DMA API improvements to
reduce the fragmentation problem. It is a real problem.

Jason

--
Alexey


Reply via email to