The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* Re: [RFC PATCH v3 3/5] dma-mapping: Decrypt memory on remap
       [not found]   ` <yq5atstdanx8.fsf@kernel.org>
@ 2026-05-07 17:18     ` Catalin Marinas
  2026-05-08  4:03       ` Aneesh Kumar K.V
  0 siblings, 1 reply; 4+ messages in thread
From: Catalin Marinas @ 2026-05-07 17:18 UTC (permalink / raw)
  To: Aneesh Kumar K.V
  Cc: Mostafa Saleh, iommu, linux-kernel, robin.murphy, m.szyprowski,
	will, maz, suzuki.poulose, jiri, jgg

On Tue, Apr 14, 2026 at 03:01:15PM +0530, Aneesh Kumar K.V wrote:
> Mostafa Saleh <smostafa@google.com> writes:
> > In case memory needs to be remapped on systems with
> > force_dma_unencrypted(), where this memory is not allocated
> > from a restricted-dma pool, this was currently ignored, while only
> > setting the decrypted pgprot in the remapped alias.
> >
> > The memory still needs to be decrypted in that case.
> 
> For ARM CCA, we cannot mark a vmap address as decrypted. I don’t expect
> non-coherent DMA devices to be used in an ARM CCA configuration, but we
> may need a way to document this in the code.

I think you clarified what you meant later. The vmap here is just fine,
we pass pgprot_decrypted(). The key is the dma_set_decrypted() on the
page address before being remapped.

On arm64 we probably don't care but if we want to enforce it for all
architectures, dma_direct_alloc() could return NULL if
force_dma_unencrypted() && remap (maybe together with a WARN_ON_ONCE).
However, the proposed patch is small enough to cover this case as well.

-- 
Catalin

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH v3 4/5] dma-mapping: Encapsulate memory state during allocation
       [not found]     ` <aeJVh5VbkzxHDBEK@google.com>
@ 2026-05-07 17:36       ` Catalin Marinas
  2026-05-11 10:48         ` Mostafa Saleh
  0 siblings, 1 reply; 4+ messages in thread
From: Catalin Marinas @ 2026-05-07 17:36 UTC (permalink / raw)
  To: Mostafa Saleh
  Cc: Jason Gunthorpe, iommu, linux-kernel, robin.murphy, m.szyprowski,
	will, maz, suzuki.poulose, jiri, aneesh.kumar

On Fri, Apr 17, 2026 at 03:45:11PM +0000, Mostafa Saleh wrote:
> On Fri, Apr 10, 2026 at 03:05:04PM -0300, Jason Gunthorpe wrote:
> > On Wed, Apr 08, 2026 at 07:47:41PM +0000, Mostafa Saleh wrote:
> > > Introduce a new dma-direct internal type dma_page which is
> > > "struct page" and a bit indicate whether the memory has been decrypted
> > > or not.
> > > This is useful to pass such information encapsulated through
> > > allocation functions, which is currently set from swiotlb_alloc().
> > > 
> > > No functional changes.
> > > 
> > > Signed-off-by: Mostafa Saleh <smostafa@google.com>
> > > ---
> > >  kernel/dma/direct.c | 58 +++++++++++++++++++++++++++++++++++----------
> > >  1 file changed, 46 insertions(+), 12 deletions(-)
> > > 
> > > diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
> > > index de63e0449700..204bc566480c 100644
> > > --- a/kernel/dma/direct.c
> > > +++ b/kernel/dma/direct.c
> > > @@ -16,6 +16,33 @@
> > >  #include <linux/pci-p2pdma.h>
> > >  #include "direct.h"
> > >  
> > > +/*
> > > + * Represent DMA allocation and 1 bit flag for it's state
> > > + */
> > 
> > I'd explain this wrappers a pointer and uses the low PAGE_SHIFT bits
> > for flags..
> > 
> > > +struct dma_page {
> > > +	unsigned long val;
> > 
> > unintptr_t ?
> 
> I thought about that, but I don’t see unintptr_t anywhere in the
> kernel, it seems similar cases use “unsigned long” as in xarray.h

Jason meant uintptr_t. However, we have a similar pattern with struct
encoded_page as an incomplete type and encode_page() adds the bits
directly to the pointer. I'd use something similar as there's precedent
already.

-- 
Catalin

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH v3 3/5] dma-mapping: Decrypt memory on remap
  2026-05-07 17:18     ` [RFC PATCH v3 3/5] dma-mapping: Decrypt memory on remap Catalin Marinas
@ 2026-05-08  4:03       ` Aneesh Kumar K.V
  0 siblings, 0 replies; 4+ messages in thread
From: Aneesh Kumar K.V @ 2026-05-08  4:03 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: Mostafa Saleh, iommu, linux-kernel, robin.murphy, m.szyprowski,
	will, maz, suzuki.poulose, jiri, jgg

Catalin Marinas <catalin.marinas@arm.com> writes:

> On Tue, Apr 14, 2026 at 03:01:15PM +0530, Aneesh Kumar K.V wrote:
>> Mostafa Saleh <smostafa@google.com> writes:
>> > In case memory needs to be remapped on systems with
>> > force_dma_unencrypted(), where this memory is not allocated
>> > from a restricted-dma pool, this was currently ignored, while only
>> > setting the decrypted pgprot in the remapped alias.
>> >
>> > The memory still needs to be decrypted in that case.
>> 
>> For ARM CCA, we cannot mark a vmap address as decrypted. I don’t expect
>> non-coherent DMA devices to be used in an ARM CCA configuration, but we
>> may need a way to document this in the code.
>
> I think you clarified what you meant later. The vmap here is just fine,
> we pass pgprot_decrypted(). The key is the dma_set_decrypted() on the
> page address before being remapped.
>
> On arm64 we probably don't care but if we want to enforce it for all
> architectures, dma_direct_alloc() could return NULL if
> force_dma_unencrypted() && remap (maybe together with a WARN_ON_ONCE).
> However, the proposed patch is small enough to cover this case as well.
>

I have posted a new series clarifying the commit message and adding further
changes here https://lore.kernel.org/all/20260427055509.898190-1-aneesh.kumar@kernel.org

-aneesh

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH v3 4/5] dma-mapping: Encapsulate memory state during allocation
  2026-05-07 17:36       ` [RFC PATCH v3 4/5] dma-mapping: Encapsulate memory state during allocation Catalin Marinas
@ 2026-05-11 10:48         ` Mostafa Saleh
  0 siblings, 0 replies; 4+ messages in thread
From: Mostafa Saleh @ 2026-05-11 10:48 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: Jason Gunthorpe, iommu, linux-kernel, robin.murphy, m.szyprowski,
	will, maz, suzuki.poulose, jiri, aneesh.kumar

On Thu, May 07, 2026 at 06:36:27PM +0100, Catalin Marinas wrote:
> On Fri, Apr 17, 2026 at 03:45:11PM +0000, Mostafa Saleh wrote:
> > On Fri, Apr 10, 2026 at 03:05:04PM -0300, Jason Gunthorpe wrote:
> > > On Wed, Apr 08, 2026 at 07:47:41PM +0000, Mostafa Saleh wrote:
> > > > Introduce a new dma-direct internal type dma_page which is
> > > > "struct page" and a bit indicate whether the memory has been decrypted
> > > > or not.
> > > > This is useful to pass such information encapsulated through
> > > > allocation functions, which is currently set from swiotlb_alloc().
> > > > 
> > > > No functional changes.
> > > > 
> > > > Signed-off-by: Mostafa Saleh <smostafa@google.com>
> > > > ---
> > > >  kernel/dma/direct.c | 58 +++++++++++++++++++++++++++++++++++----------
> > > >  1 file changed, 46 insertions(+), 12 deletions(-)
> > > > 
> > > > diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
> > > > index de63e0449700..204bc566480c 100644
> > > > --- a/kernel/dma/direct.c
> > > > +++ b/kernel/dma/direct.c
> > > > @@ -16,6 +16,33 @@
> > > >  #include <linux/pci-p2pdma.h>
> > > >  #include "direct.h"
> > > >  
> > > > +/*
> > > > + * Represent DMA allocation and 1 bit flag for it's state
> > > > + */
> > > 
> > > I'd explain this wrappers a pointer and uses the low PAGE_SHIFT bits
> > > for flags..
> > > 
> > > > +struct dma_page {
> > > > +	unsigned long val;
> > > 
> > > unintptr_t ?
> > 
> > I thought about that, but I don’t see unintptr_t anywhere in the
> > kernel, it seems similar cases use “unsigned long” as in xarray.h
> 
> Jason meant uintptr_t. However, we have a similar pattern with struct
> encoded_page as an incomplete type and encode_page() adds the bits
> directly to the pointer. I'd use something similar as there's precedent
> already.

I see, makes sense, I will do that.

Thanks,
Mostafa

> 
> -- 
> Catalin

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-11 10:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260408194750.2280873-1-smostafa@google.com>
     [not found] ` <20260408194750.2280873-4-smostafa@google.com>
     [not found]   ` <yq5atstdanx8.fsf@kernel.org>
2026-05-07 17:18     ` [RFC PATCH v3 3/5] dma-mapping: Decrypt memory on remap Catalin Marinas
2026-05-08  4:03       ` Aneesh Kumar K.V
     [not found] ` <20260408194750.2280873-5-smostafa@google.com>
     [not found]   ` <20260410180504.GE2551565@ziepe.ca>
     [not found]     ` <aeJVh5VbkzxHDBEK@google.com>
2026-05-07 17:36       ` [RFC PATCH v3 4/5] dma-mapping: Encapsulate memory state during allocation Catalin Marinas
2026-05-11 10:48         ` Mostafa Saleh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox