From: Baruch Siach <baruch@tkos.co.il>
To: Robin Murphy <robin.murphy@arm.com>
Cc: "Christoph Hellwig" <hch@lst.de>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>,
iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
"Petr Tesařík" <petr@tesarici.cz>,
"Ramon Fried" <ramon@neureality.ai>,
"Elad Nachman" <enachman@marvell.com>
Subject: Re: [PATCH] arm64: mm: fix DMA zone when dma-ranges is missing
Date: Wed, 28 Aug 2024 07:14:56 +0300 [thread overview]
Message-ID: <87ed69uvun.fsf@tarshish> (raw)
In-Reply-To: <53679dda-178c-435b-81c5-42d139911cef@arm.com> (Robin Murphy's message of "Tue, 27 Aug 2024 11:22:28 +0100")
Hi Robin,
On Tue, Aug 27 2024, Robin Murphy wrote:
> On 2024-08-27 9:44 am, Baruch Siach wrote:
>> Some platforms, like Rockchip RK3568 based Odroid M1, do not provide DMA
>> limits information in device-tree dma-ranges property. Still some device
>> drivers set DMA limit that relies on DMA zone at low 4GB memory area.
>> Until commit ba0fb44aed47 ("dma-mapping: replace zone_dma_bits by
>> zone_dma_limit"), zone_sizes_init() restricted DMA zone to low 32-bit
>> when there is RAM there.
>> Restore DMA zone 32-bit limit for platforms that have RAM in this area.
>> Fixes: ba0fb44aed47 ("dma-mapping: replace zone_dma_bits by zone_dma_limit")
>> Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>> ---
>> This should go via the dma-mapping tree that contains the fixed commit.
>> ---
>> arch/arm64/mm/init.c | 3 +++
>> 1 file changed, 3 insertions(+)
>> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
>> index bfb10969cbf0..7fcd0aaa9bb6 100644
>> --- a/arch/arm64/mm/init.c
>> +++ b/arch/arm64/mm/init.c
>> @@ -116,6 +116,9 @@ static void __init arch_reserve_crashkernel(void)
>> static phys_addr_t __init max_zone_phys(phys_addr_t zone_limit)
>> {
>> + if (memblock_start_of_DRAM() < U32_MAX)
>> + zone_limit = min(zone_limit, U32_MAX);
>
> This seems like a bit of a bodge, since it now means we either get the old or
> the new behaviour depending on where DRAM is, so if, say, RAM starts at 3GB
> but all devices have a 3GB DMA offset, we still can't have a properly-sized
> DMA zone.
I'm not following your example here. What is "3GB DMA offset"? Is it
relative to 0? Relative to start of RAM?
> Really it comes down to this change:
>
> - zone_dma_bits = min3(32U, dt_zone_dma_bits, acpi_zone_dma_bits);
> + zone_dma_limit = min(dt_zone_dma_limit, acpi_zone_dma_limit);
>
> where although the "32" represented the assumption of RAM starting at 0, it
> also implicitly removed the handling of the case where no DMA ranges are
> specified. Per the commit message, it's that which we want to account for, not
> the placement of RAM.
>
> I think the more correct version should be:
>
> if (zone_limit == PHYS_ADDR_MAX)
> zone_limit = U32_MAX;
I like your proposal. The condition of no dma-ranges data is explicit.
I'll post v2 later today.
Thanks,
baruch
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
prev parent reply other threads:[~2024-08-28 4:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-27 8:44 [PATCH] arm64: mm: fix DMA zone when dma-ranges is missing Baruch Siach
2024-08-27 10:11 ` Catalin Marinas
2024-08-27 10:22 ` Robin Murphy
2024-08-28 4:14 ` Baruch Siach [this message]
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=87ed69uvun.fsf@tarshish \
--to=baruch@tkos.co.il \
--cc=catalin.marinas@arm.com \
--cc=enachman@marvell.com \
--cc=hch@lst.de \
--cc=iommu@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=m.szyprowski@samsung.com \
--cc=petr@tesarici.cz \
--cc=ramon@neureality.ai \
--cc=robin.murphy@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;
as well as URLs for NNTP newsgroup(s).