From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: Robin Murphy <robin.murphy@arm.com>,
iommu@lists.linux.dev, linux-kernel@vger.kernel.org
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
Steven Price <steven.price@arm.com>,
Suzuki K Poulose <Suzuki.Poulose@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Jiri Pirko <jiri@resnulli.us>, Jason Gunthorpe <jgg@ziepe.ca>,
Mostafa Saleh <smostafa@google.com>,
Petr Tesarik <ptesarik@suse.com>,
Alexey Kardashevskiy <aik@amd.com>,
Dan Williams <dan.j.williams@intel.com>,
Xu Yilun <yilun.xu@linux.intel.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Russell King <linux@armlinux.org.uk>,
Huacai Chen <chenhuacai@kernel.org>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
x86@kernel.org
Subject: Re: [PATCH v5 3/6] dma: swiotlb: Centralize minimal pool sizing
Date: Tue, 22 Sep 2026 12:26:47 +0530 [thread overview]
Message-ID: <yq5apky53hao.fsf@kernel.org> (raw)
In-Reply-To: <21180ec6-b9ad-43fd-9e52-51df644e1b93@arm.com>
Robin Murphy <robin.murphy@arm.com> writes:
> On 21/09/2026 7:36 am, Aneesh Kumar K.V (Arm) wrote:
>> A default SWIOTLB pool used only for unaligned kmalloc bouncing can be
[ ... 54 lines skipped ... ]
>>
>> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
>> index 8f86deb25be2..f368a73f4ed0 100644
>> --- a/kernel/dma/swiotlb.c
>> +++ b/kernel/dma/swiotlb.c
>> @@ -483,9 +483,18 @@ static bool __init swiotlb_kmalloc_needs_bounce(void)
>> static void __init
>> swiotlb_adjust_pool_size(enum swiotlb_pool_policy policy)
>> {
>> + if (swiotlb_default_size_changed())
>> + return;
>> +
>
> This appears to be entirely redundant, as ultimately the point of this
> function is to call swiotlb_adjust_size() (if it does anything at all),
> and the first thing that does is this same exact check. We hardly need
> to micro-optimise short-circuiting a handful of arithmetic in a one-off
> setup path, and it's convoluted enough as it is, so please try to avoid
> redundancy that makes it even more confusing to follow.
>
OK, I'll drop this.
>
>> switch (policy) {
>> - case SWIOTLB_POOL_MINIMAL:
>> + case SWIOTLB_POOL_MINIMAL: {
>> + unsigned long size;
>> +
>> + /* Use 1MB per 1GB of RAM for kmalloc() bouncing. */
>> + size = DIV_ROUND_UP(memblock_phys_mem_size(), 1024);
>> + swiotlb_adjust_size(min(swiotlb_size_or_default(), size));
>> break;
>
> Similarly I think it would be clearer if we had a common
> swiotlb_adjust_size() call at the end of the function, and then either
> calculate a size or return early in each switch case as appropriate.
>
> Furthermore, swiotlb_size_or_default() is awful IMO - and in fact after
> this series we could perhaps clean it up entirely by making the size
> implicit in swiotlb_init_late() - not to mention misleadingly redundant.
> I'd say just open-code "default_nslabs << IO_TLB_SHIFT" like elsewhere
> in the file, but in fact it may as well just be IO_TLB_DEFAULT_SIZE
> (think about it...)
>
How about we rename swiotlb_size_or_default to
unsigned long swiotlb_default_pool_size(void)
{
return default_nslabs << IO_TLB_SHIFT;
}
We still need a helper because arch/arm/xen/mm.c also uses it. I also
updated swiotlb_adjust_pool_size() as suggested.
static void __init
swiotlb_adjust_pool_size(enum swiotlb_pool_policy policy)
{
unsigned long size;
switch (policy) {
case SWIOTLB_POOL_MINIMAL:
/* Use 1MB per 1GB of RAM for kmalloc() bouncing. */
size = DIV_ROUND_UP(memblock_phys_mem_size(), 1024);
size = min(swiotlb_size_or_default(), size);
break;
case SWIOTLB_POOL_CC_GUEST:
size = swiotlb_adjusted_size();
break;
case SWIOTLB_POOL_NONE:
WARN(true, "Cannot adjust SWIOTLB size without a pool\n");
return;
case SWIOTLB_POOL_DEFAULT:
default:
return;
}
swiotlb_adjust_size(size);
}
-aneesh
WARNING: multiple messages have this Message-ID (diff)
From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: Robin Murphy <robin.murphy@arm.com>,
iommu@lists.linux.dev, linux-kernel@vger.kernel.org
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
Steven Price <steven.price@arm.com>,
Suzuki K Poulose <Suzuki.Poulose@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Jiri Pirko <jiri@resnulli.us>, Jason Gunthorpe <jgg@ziepe.ca>,
Mostafa Saleh <smostafa@google.com>,
Petr Tesarik <ptesarik@suse.com>,
Alexey Kardashevskiy <aik@amd.com>,
Dan Williams <dan.j.williams@intel.com>,
Xu Yilun <yilun.xu@linux.intel.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Russell King <linux@armlinux.org.uk>,
Huacai Chen <chenhuacai@kernel.org>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
x86@kernel.org
Subject: Re: [PATCH v5 3/6] dma: swiotlb: Centralize minimal pool sizing
Date: Tue, 22 Sep 2026 12:26:47 +0530 [thread overview]
Message-ID: <yq5apky53hao.fsf@kernel.org> (raw)
In-Reply-To: <21180ec6-b9ad-43fd-9e52-51df644e1b93@arm.com>
Robin Murphy <robin.murphy@arm.com> writes:
> On 21/09/2026 7:36 am, Aneesh Kumar K.V (Arm) wrote:
>> A default SWIOTLB pool used only for unaligned kmalloc bouncing can be
[ ... 54 lines skipped ... ]
>>
>> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
>> index 8f86deb25be2..f368a73f4ed0 100644
>> --- a/kernel/dma/swiotlb.c
>> +++ b/kernel/dma/swiotlb.c
>> @@ -483,9 +483,18 @@ static bool __init swiotlb_kmalloc_needs_bounce(void)
>> static void __init
>> swiotlb_adjust_pool_size(enum swiotlb_pool_policy policy)
>> {
>> + if (swiotlb_default_size_changed())
>> + return;
>> +
>
> This appears to be entirely redundant, as ultimately the point of this
> function is to call swiotlb_adjust_size() (if it does anything at all),
> and the first thing that does is this same exact check. We hardly need
> to micro-optimise short-circuiting a handful of arithmetic in a one-off
> setup path, and it's convoluted enough as it is, so please try to avoid
> redundancy that makes it even more confusing to follow.
>
OK, I'll drop this.
>
>> switch (policy) {
>> - case SWIOTLB_POOL_MINIMAL:
>> + case SWIOTLB_POOL_MINIMAL: {
>> + unsigned long size;
>> +
>> + /* Use 1MB per 1GB of RAM for kmalloc() bouncing. */
>> + size = DIV_ROUND_UP(memblock_phys_mem_size(), 1024);
>> + swiotlb_adjust_size(min(swiotlb_size_or_default(), size));
>> break;
>
> Similarly I think it would be clearer if we had a common
> swiotlb_adjust_size() call at the end of the function, and then either
> calculate a size or return early in each switch case as appropriate.
>
> Furthermore, swiotlb_size_or_default() is awful IMO - and in fact after
> this series we could perhaps clean it up entirely by making the size
> implicit in swiotlb_init_late() - not to mention misleadingly redundant.
> I'd say just open-code "default_nslabs << IO_TLB_SHIFT" like elsewhere
> in the file, but in fact it may as well just be IO_TLB_DEFAULT_SIZE
> (think about it...)
>
How about we rename swiotlb_size_or_default to
unsigned long swiotlb_default_pool_size(void)
{
return default_nslabs << IO_TLB_SHIFT;
}
We still need a helper because arch/arm/xen/mm.c also uses it. I also
updated swiotlb_adjust_pool_size() as suggested.
static void __init
swiotlb_adjust_pool_size(enum swiotlb_pool_policy policy)
{
unsigned long size;
switch (policy) {
case SWIOTLB_POOL_MINIMAL:
/* Use 1MB per 1GB of RAM for kmalloc() bouncing. */
size = DIV_ROUND_UP(memblock_phys_mem_size(), 1024);
size = min(swiotlb_size_or_default(), size);
break;
case SWIOTLB_POOL_CC_GUEST:
size = swiotlb_adjusted_size();
break;
case SWIOTLB_POOL_NONE:
WARN(true, "Cannot adjust SWIOTLB size without a pool\n");
return;
case SWIOTLB_POOL_DEFAULT:
default:
return;
}
swiotlb_adjust_size(size);
}
-aneesh
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2026-09-22 6:57 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 6:36 [PATCH v5 0/6] dma: swiotlb: Centralize default pool policy and sizing Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` [PATCH v5 1/6] dma: swiotlb: Centralize default pool policy selection Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:56 ` sashiko-bot
2026-09-21 15:25 ` Robin Murphy
2026-09-21 15:25 ` Robin Murphy
2026-09-22 5:32 ` Aneesh Kumar K.V
2026-09-22 5:32 ` Aneesh Kumar K.V
2026-09-21 6:36 ` [PATCH v5 2/6] dma: swiotlb: Track whether the pool size was explicitly set Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:44 ` sashiko-bot
2026-09-21 12:50 ` Catalin Marinas
2026-09-21 12:50 ` Catalin Marinas
2026-09-21 15:45 ` Robin Murphy
2026-09-21 15:45 ` Robin Murphy
2026-09-22 5:42 ` Aneesh Kumar K.V
2026-09-22 5:42 ` Aneesh Kumar K.V
2026-09-21 6:36 ` [PATCH v5 3/6] dma: swiotlb: Centralize minimal pool sizing Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:45 ` sashiko-bot
2026-09-21 12:52 ` Catalin Marinas
2026-09-21 12:52 ` Catalin Marinas
2026-09-21 16:49 ` Robin Murphy
2026-09-21 16:49 ` Robin Murphy
2026-09-22 6:56 ` Aneesh Kumar K.V [this message]
2026-09-22 6:56 ` Aneesh Kumar K.V
2026-09-21 6:36 ` [PATCH v5 4/6] dma: swiotlb: Centralize memory-encryption " Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:52 ` sashiko-bot
2026-09-22 7:02 ` Aneesh Kumar K.V
2026-09-23 12:47 ` Robin Murphy
2026-09-23 12:47 ` Robin Murphy
2026-09-23 14:28 ` Aneesh Kumar K.V
2026-09-23 14:28 ` Aneesh Kumar K.V
2026-09-21 6:36 ` [PATCH v5 5/6] dma: swiotlb: Add an overridable architecture pool opt-out Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:51 ` sashiko-bot
2026-09-22 7:04 ` Aneesh Kumar K.V
2026-09-23 13:04 ` Robin Murphy
2026-09-23 13:04 ` Robin Murphy
2026-09-23 14:18 ` Aneesh Kumar K.V
2026-09-23 14:18 ` Aneesh Kumar K.V
2026-09-21 6:36 ` [PATCH v5 6/6] dma: swiotlb: Remove SWIOTLB_ANY Aneesh Kumar K.V (Arm)
2026-09-21 6:36 ` Aneesh Kumar K.V (Arm)
2026-09-21 6:48 ` sashiko-bot
2026-09-23 13:12 ` Robin Murphy
2026-09-23 13:12 ` Robin Murphy
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=yq5apky53hao.fsf@kernel.org \
--to=aneesh.kumar@kernel.org \
--cc=Suzuki.Poulose@arm.com \
--cc=agordeev@linux.ibm.com \
--cc=aik@amd.com \
--cc=aou@eecs.berkeley.edu \
--cc=borntraeger@linux.ibm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=chleroy@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=jiaxun.yang@flygoat.com \
--cc=jiri@resnulli.us \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=m.szyprowski@samsung.com \
--cc=maddy@linux.ibm.com \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=ptesarik@suse.com \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.com \
--cc=steven.price@arm.com \
--cc=svens@linux.ibm.com \
--cc=tglx@kernel.org \
--cc=tsbogend@alpha.franken.de \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=yilun.xu@linux.intel.com \
/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.