From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 50ACDC54735 for ; Tue, 27 Aug 2024 10:12:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=zmdkPUeABIwfQSgvw5nw3elGHIvsls3+0hjUdAzucQ0=; b=2wb7BwbFW2H+sA6jtgmLiOYeFw u8FRRmwsOqe8lg3xwQ1/dE563bF16kyIQC9F18m1+Pa0j89mn3VPEedTFU9gHv9U3nHAhsbUUJNtC SNOcnKmha4p6toarAD3Y/y92qN+3ZkitfvbpLSfM43fKDZNa5phWg/OMHndYb5sRKhgNJE5l7rMmg f9mEoBLwzrRU5IApE8FFVXS/U+dOvBxRkI1PfxoZzxPMZ1MODOynHTRDF1KTCIDPGj8hms2Yg0Nhj iUADzJGxszAN/wkb7dV1eFEgSZXQx9nX+6aRfQDzVm/dD6jgkgroMF5+EF44FpDnzXGT1HwW15rZ1 XQJV3z7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sitBb-0000000Aku3-1wpd; Tue, 27 Aug 2024 10:12:27 +0000 Received: from nyc.source.kernel.org ([147.75.193.91]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sitAm-0000000AkfN-274H for linux-arm-kernel@lists.infradead.org; Tue, 27 Aug 2024 10:11:37 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 16C83A41776; Tue, 27 Aug 2024 10:11:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14034C8B7AA; Tue, 27 Aug 2024 10:11:31 +0000 (UTC) Date: Tue, 27 Aug 2024 13:11:42 +0300 From: Catalin Marinas To: Baruch Siach Cc: Christoph Hellwig , Marek Szyprowski , Robin Murphy , Will Deacon , iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Petr =?utf-8?B?VGVzYcWZw61r?= , Ramon Fried , Elad Nachman Subject: Re: [PATCH] arm64: mm: fix DMA zone when dma-ranges is missing Message-ID: References: <731d204f5f556ad61bbaf004b1d984f83c90b4f5.1724748249.git.baruch@tkos.co.il> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <731d204f5f556ad61bbaf004b1d984f83c90b4f5.1724748249.git.baruch@tkos.co.il> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240827_031136_707913_EF0EA18B X-CRM114-Status: GOOD ( 19.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Aug 27, 2024 at 11:44:09AM +0300, 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 > Tested-by: Marek Szyprowski > Signed-off-by: Baruch Siach > --- > 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); > + > return min(zone_limit, memblock_end_of_DRAM() - 1) + 1; > } Thanks both Baruch and Marek for digging into this and finding a solution. Reviewed-by: Catalin Marinas