From: Jason Gunthorpe <jgg@ziepe.ca>
To: "Aneesh Kumar K.V (Arm)" <aneesh.kumar@kernel.org>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
linux-coco@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
kvmarm@lists.linux.dev, Catalin Marinas <catalin.marinas@arm.com>,
Marc Zyngier <maz@kernel.org>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Robin Murphy <robin.murphy@arm.com>,
Steven Price <steven.price@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Thomas Gleixner <tglx@kernel.org>, Will Deacon <will@kernel.org>
Subject: Re: [PATCH v4 2/3] swiotlb: dma: its: Enforce host page-size alignment for shared buffers
Date: Mon, 27 Apr 2026 10:49:03 -0300 [thread overview]
Message-ID: <20260427134903.GA740385@ziepe.ca> (raw)
In-Reply-To: <20260427063108.909019-3-aneesh.kumar@kernel.org>
On Mon, Apr 27, 2026 at 12:01:07PM +0530, Aneesh Kumar K.V (Arm) wrote:
> When running private-memory guests, the guest kernel must apply additional
> constraints when allocating buffers that are shared with the hypervisor.
This patch has way too much stuff in it.
I think your patch structure should be changed around
1) Patch to add mem_decrypt_granule_size(), and explain it as
the alignment & size of what can be passed to
set_memory_encrypted/decrypted()
2) Add support for mem_decrypt_granule_size() to ARM
Then patches going caller by caller of set_memory_decrypted() to make
them follow the new rule:
3) its
4) swiotlb
3) dma_alloc_coherent
etc.
don't forget about the new dma buf heaps too:
drivers/dma-buf/heaps/system_heap.c: ret = set_memory_decrypted(addr, nr_pages);
It is worth calling out in the cover letter that all the ARM CCA
relevant places are fixed but drivers/hv/ is left for future.
> @@ -33,18 +32,30 @@ int arm64_mem_crypt_ops_register(const struct arm64_mem_crypt_ops *ops)
>
> int set_memory_encrypted(unsigned long addr, int numpages)
> {
> - if (likely(!crypt_ops) || WARN_ON(!PAGE_ALIGNED(addr)))
> + if (likely(!crypt_ops))
> return 0;
>
> + if (WARN_ON(!IS_ALIGNED(addr, mem_decrypt_granule_size())))
> + return -EINVAL;
> +
> + if (WARN_ON(!IS_ALIGNED(numpages << PAGE_SHIFT, mem_decrypt_granule_size())))
> + return -EINVAL;
> +
> return crypt_ops->encrypt(addr, numpages);
> }
> EXPORT_SYMBOL_GPL(set_memory_encrypted);
>
> int set_memory_decrypted(unsigned long addr, int numpages)
> {
> - if (likely(!crypt_ops) || WARN_ON(!PAGE_ALIGNED(addr)))
> + if (likely(!crypt_ops))
> return 0;
>
> + if (WARN_ON(!IS_ALIGNED(addr, mem_decrypt_granule_size())))
> + return -EINVAL;
> +
> + if (WARN_ON(!IS_ALIGNED(numpages << PAGE_SHIFT, mem_decrypt_granule_size())))
> + return -EINVAL;
> +
> return crypt_ops->decrypt(addr, numpages);
> }
> EXPORT_SYMBOL_GPL(set_memory_decrypted);
This should go in the ARM patch adding mem_decrypt_granule_size() to CCA
> diff --git a/include/linux/mem_encrypt.h b/include/linux/mem_encrypt.h
> index 07584c5e36fb..1e01c9ac697f 100644
> --- a/include/linux/mem_encrypt.h
> +++ b/include/linux/mem_encrypt.h
> @@ -11,6 +11,8 @@
> #define __MEM_ENCRYPT_H__
>
> #ifndef __ASSEMBLY__
> +#include <linux/align.h>
> +#include <vdso/page.h>
>
> #ifdef CONFIG_ARCH_HAS_MEM_ENCRYPT
>
> @@ -54,6 +56,18 @@
> #define dma_addr_canonical(x) (x)
> #endif
>
> +#ifndef mem_decrypt_granule_size
> +static inline size_t mem_decrypt_granule_size(void)
> +{
> + return PAGE_SIZE;
> +}
> +#endif
> +
> +static inline size_t mem_decrypt_align(size_t size)
> +{
> + return ALIGN(size, mem_decrypt_granule_size());
> +}
> +
> #endif /* __ASSEMBLY__ */
>
> #endif /* __MEM_ENCRYPT_H__ */
I know it seems a bit small, but put this in its own patch and explain
how it works. I'd also like to see a kdoc here, and add a kdoc to
set_memory_decrypted() that links back so people have a better chance
to know about this.
Jason
next prev parent reply other threads:[~2026-04-27 13:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 6:31 [PATCH v4 0/3] Enforce host page-size alignment for shared buffers Aneesh Kumar K.V (Arm)
2026-04-27 6:31 ` [PATCH v4 1/3] dma-direct: swiotlb: handle swiotlb alloc/free outside __dma_direct_alloc_pages Aneesh Kumar K.V (Arm)
2026-04-27 6:31 ` [PATCH v4 2/3] swiotlb: dma: its: Enforce host page-size alignment for shared buffers Aneesh Kumar K.V (Arm)
2026-04-27 9:27 ` Marc Zyngier
2026-04-27 13:38 ` Jason Gunthorpe
2026-04-28 12:20 ` Aneesh Kumar K.V
2026-04-28 13:31 ` Marc Zyngier
2026-04-27 13:49 ` Jason Gunthorpe [this message]
2026-04-28 12:22 ` Aneesh Kumar K.V
2026-04-27 6:31 ` [PATCH v4 3/3] coco: guest: arm64: Query host IPA-change alignment via RHI Aneesh Kumar K.V (Arm)
2026-04-27 10:33 ` Marc Zyngier
2026-04-28 12:49 ` Aneesh Kumar K.V
2026-04-28 13:49 ` Marc Zyngier
2026-04-28 15:22 ` Suzuki K Poulose
2026-04-29 9:01 ` Aneesh Kumar K.V
2026-05-06 14:23 ` Aneesh Kumar K.V
2026-04-28 13:56 ` Will Deacon
2026-04-29 9:03 ` Aneesh Kumar K.V
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=20260427134903.GA740385@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=aneesh.kumar@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=iommu@lists.linux.dev \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maz@kernel.org \
--cc=robin.murphy@arm.com \
--cc=steven.price@arm.com \
--cc=suzuki.poulose@arm.com \
--cc=tglx@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.