From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: Mostafa Saleh <smostafa@google.com>
Cc: iommu@lists.linux.dev, linux-kernel@vger.kernel.org,
robin.murphy@arm.com, m.szyprowski@samsung.com, will@kernel.org,
maz@kernel.org, suzuki.poulose@arm.com, catalin.marinas@arm.com,
jiri@resnulli.us, jgg@ziepe.ca
Subject: Re: [RFC PATCH v3 1/5] swiotlb: Return state of memory from swiotlb_alloc()
Date: Thu, 16 Apr 2026 14:23:08 +0530 [thread overview]
Message-ID: <yq5aeckf9thn.fsf@kernel.org> (raw)
In-Reply-To: <ad_4WtW5uEZlDdLU@google.com>
Mostafa Saleh <smostafa@google.com> writes:
> On Tue, Apr 14, 2026 at 02:55:33PM +0530, Aneesh Kumar K.V wrote:
>> Mostafa Saleh <smostafa@google.com> writes:
>>
>> > Make swiotlb_alloc() return the state of the allocated memory, at
>> > the moment all the pools are decrypted but that would change soon.
>> > In the next patches dma-direct will use the returned state to
>> > determine whether to decrypt the memory and use the proper memory
>> > decryption/encryption related functions.
>> >
>> > Also, add swiotlb_is_decrypted(), that will be used before calling
>> > swiotlb_free() to check whether the memory needs to be encrypted
>> > by the caller.
>> >
>> > Signed-off-by: Mostafa Saleh <smostafa@google.com>
>> > ---
>> > include/linux/swiotlb.h | 25 +++++++++++++++++++++++--
>> > kernel/dma/direct.c | 2 +-
>> > kernel/dma/swiotlb.c | 23 ++++++++++++++++++++++-
>> > 3 files changed, 46 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
>> > index 3dae0f592063..24be65494ce8 100644
>> > --- a/include/linux/swiotlb.h
>> > +++ b/include/linux/swiotlb.h
>> > @@ -63,6 +63,7 @@ extern void __init swiotlb_update_mem_attributes(void);
>> > * @area_nslabs: Number of slots in each area.
>> > * @areas: Array of memory area descriptors.
>> > * @slots: Array of slot descriptors.
>> > + * @decrypted: Whether the pool was decrypted or left in default state.
>> > * @node: Member of the IO TLB memory pool list.
>> > * @rcu: RCU head for swiotlb_dyn_free().
>> > * @transient: %true if transient memory pool.
>> > @@ -77,6 +78,7 @@ struct io_tlb_pool {
>> > unsigned int area_nslabs;
>> > struct io_tlb_area *areas;
>> > struct io_tlb_slot *slots;
>> > + bool decrypted;
>> > #ifdef CONFIG_SWIOTLB_DYNAMIC
>> > struct list_head node;
>> > struct rcu_head rcu;
>> > @@ -281,16 +283,31 @@ static inline void swiotlb_sync_single_for_cpu(struct device *dev,
>> >
>>
>> Should this be a property of struct io_tlb_mem ?
>
> I envisioned that this would be mainly used by restricted-dma so in
> that case it doesn’t seem to matter.
> But generally, I guess it would depend on the discovery mechanism of
> this memory property and I can imagine a memory allocator that has
> multiple pools with different attributes. So propably it's better to
> be per pool.
>
If we are going to make this generic, we may not be able to look at only
restricted-dma. Instead, we will have to consider other SWIOTLB code
paths as well, such as swiotlb_map(), swiotlb_alloc_pool() etc. For
example, in swiotlb_dyn_alloc(), how do we determine whether to use
decrypted or encrypted memory? I am thinking we want to use struct
io_tlb_mem.decrypted field to determine that
struct io_tlb_mem *mem =
container_of(work, struct io_tlb_mem, dyn_alloc);
pool = swiotlb_alloc_pool(NULL, IO_TLB_MIN_SLABS, default_nslabs,
default_nareas, mem->phys_limit, mem->decrypted,
GFP_KERNEL);
Also, for things like swiotlb_tbl_map_single(), we might want to …
struct io_tlb_mem *mem = dev->dma_io_tlb_mem;
/* if phys addr attribute is encrypted but the device is forcing an encrypted dma addr */
if (!(attrs & DMA_ATTR_CC_DECRYPTED) && force_dma_unencrypted(dev))
require_decrypted = true;
if (require_decrypted != mem->decrypted)
return (phys_addr_t)DMA_MAPPING_ERROR;
-aneesh
next prev parent reply other threads:[~2026-04-16 8:53 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-08 19:47 [RFC PATCH v3 0/5] dma-mapping: Fixes for memory encryption Mostafa Saleh
2026-04-08 19:47 ` [RFC PATCH v3 1/5] swiotlb: Return state of memory from swiotlb_alloc() Mostafa Saleh
2026-04-14 9:25 ` Aneesh Kumar K.V
2026-04-15 20:43 ` Mostafa Saleh
2026-04-16 8:53 ` Aneesh Kumar K.V [this message]
2026-04-08 19:47 ` [RFC PATCH v3 2/5] dma-mapping: Move encryption in __dma_direct_free_pages() Mostafa Saleh
2026-04-10 17:45 ` Jason Gunthorpe
2026-04-15 20:49 ` Mostafa Saleh
2026-04-16 0:11 ` Jason Gunthorpe
2026-04-08 19:47 ` [RFC PATCH v3 3/5] dma-mapping: Decrypt memory on remap Mostafa Saleh
2026-04-14 9:31 ` Aneesh Kumar K.V
2026-04-14 12:22 ` Jason Gunthorpe
2026-04-14 13:13 ` Aneesh Kumar K.V
2026-04-14 13:53 ` Jason Gunthorpe
2026-04-08 19:47 ` [RFC PATCH v3 4/5] dma-mapping: Encapsulate memory state during allocation Mostafa Saleh
2026-04-10 18:05 ` Jason Gunthorpe
2026-04-15 9:38 ` Aneesh Kumar K.V
2026-04-08 19:47 ` [RFC PATCH v3 5/5] dma-mapping: Fix memory decryption issues Mostafa Saleh
2026-04-13 7:19 ` Aneesh Kumar K.V
2026-04-13 12:42 ` Jason Gunthorpe
2026-04-15 12:43 ` Aneesh Kumar K.V
2026-04-15 13:53 ` Jason Gunthorpe
2026-04-14 9:37 ` Aneesh Kumar K.V
2026-04-10 17:43 ` [RFC PATCH v3 0/5] dma-mapping: Fixes for memory encryption Jason Gunthorpe
2026-04-15 20:25 ` Mostafa Saleh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=yq5aeckf9thn.fsf@kernel.org \
--to=aneesh.kumar@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=jiri@resnulli.us \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maz@kernel.org \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.com \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox