On Mon, Feb 9, 2026 at 7:38 AM Jiri Pirko jiri@resnulli.us wrote:
From: Jiri Pirko jiri@nvidia.com
Currently the flags, which are unused, are validated for all heaps. Since the follow-up patch introduces a flag valid for only one of the heaps, allow to specify the valid flags per-heap.
I'm not really in this space anymore, so take my feedback with a grain of salt.
While the heap allocate flags argument is unused, it was intended to be used for generic allocation flags that would apply to all or at least a wide majority of heaps.
It was definitely not added to allow for per-heap or heap specific flags (as this patch tries to utilize it). That was the mess we had with ION driver that we were trying to avoid.
The intent of dma-buf heaps is to try to abstract all the different device memory constraints so there only needs to be a [usage] -> [heap] mapping, and otherwise userland can be generalized so that it doesn't need to be re-written to work with different devices/memory types. Adding heap-specific allocation flags prevents that generalization.
So instead of adding heap specific flags, the general advice has been to add a separate heap name for the flag property.
Now, there has been many discussions around "protected buffers" (which doesn't seem to map exactly to this confidental computing primitive, but sounds like it might be related) , which have bounced between being a allocation flag or a device specific heap without much resolution. I appreciate in this patch seires you've pushed your concept down into a DMA_ATTR_, as I do feel the kernel should have a deeper sense of protected buffers (or any general propery like this) as a concept if it is going to be a generic allocation flag, instead of it being a somewhat thin creation of the outer heap-driver layer.
But, it seems like the use case here is still far too narrow for a top level allocation flag.
So I'd advocate against introducing heap-specific flags like this.
thanks -john
On Mon, Feb 09, 2026 at 12:08:03PM -0800, John Stultz wrote:
On Mon, Feb 9, 2026 at 7:38 AM Jiri Pirko jiri@resnulli.us wrote:
From: Jiri Pirko jiri@nvidia.com
Currently the flags, which are unused, are validated for all heaps. Since the follow-up patch introduces a flag valid for only one of the heaps, allow to specify the valid flags per-heap.
I'm not really in this space anymore, so take my feedback with a grain of salt.
While the heap allocate flags argument is unused, it was intended to be used for generic allocation flags that would apply to all or at least a wide majority of heaps.
It was definitely not added to allow for per-heap or heap specific flags (as this patch tries to utilize it). That was the mess we had with ION driver that we were trying to avoid.
I don't know alot about DMA heaps..
On a CC VM system the shared/private property is universal and applies to every physical address. Not every address can dynamically change between shared and private, but every address does have a shared/private state.
By default userspace process generally run exclusively in private memory and there are very few ways for userspace to even access shared memory.
From a heaps perspective the API would be very strange, and perhaps even security dangerous, if it is returning shared memory to userspace without userspace knowing this is happening.
I'd advocate that the right design is for userspace to positively signal via this flag that it wants/accepts shared memory and without the flag shared memory should never be returned.
Even if the underyling heap only has shared memory in it (eg it is mmio or something).
Otherwise making it implicit, perhaps based on heap name, sounds very tricky for userspace to actually use fully securely.
Again, I don't know alot about heaps, but perhaps the missing part here is that on a CC system all existing heaps, other than the one using normal system pages, should be disabled for now. They can come back once they are audited as to their shared/private state and respect the new flag.
Another view is to ignore this affirmative handshake and just make it implicit on something like the heap name and hope userspace lucks into something that works for it, and doesn't accidently place, or become tricked into placing, sensitive information into shared heap memory.
Again I know nothing about heaps, but this is a fuller picture of the security sensitivity and what to think about with heaps and CC VM systems.
Now, there has been many discussions around "protected buffers" (which doesn't seem to map exactly to this confidental computing primitive, but sounds like it might be related)
I'm not sure what protected buffers are, but this CC VM shared/private (or encrypted/decrypted) is a core kernel property that applies to every physical address in the CC VM.
I assume protected buffers are something more platform specific and hidden?
But, it seems like the use case here is still far too narrow for a top level allocation flag.
CC certainly is a narrow use case, but within CC I don't think it is narrow at all..
Jason
linaro-mm-sig@lists.linaro.org