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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06499C433EF for ; Wed, 15 Dec 2021 09:24:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241149AbhLOJYP (ORCPT ); Wed, 15 Dec 2021 04:24:15 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:44926 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236355AbhLOJYP (ORCPT ); Wed, 15 Dec 2021 04:24:15 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id F3573B81EA7 for ; Wed, 15 Dec 2021 09:24:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7D608C34605; Wed, 15 Dec 2021 09:24:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1639560252; bh=rYjnaWSzpqIp48Q0lLbOr6CKp/MW2rZdnrmbiakJPyw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=krmuTg3Z1Is3v3jSurAWWkX8DuzYpjmbabZwDv2Rd0nWO3fA0bp/W781FYxMoXsNM W66QcfH/qRXURS8m0++Q3XtTZjZPjKmElYM7evxJ4/DbC7yR9Liu3K49RZvcfQKdlu D+9auBsgu5zhK9KucJw+Q6Vn9IIdiDSAqEHLWyabkukrlh8itxyLTMY7hb1jDgvwaH nqUmFPkbbO47AJaGGzBJRNC4o8gE4+v7b7DcNG2qF9xnX8YFed0jHfoRYnTwmJdQuS uc5ddIYfiHVzEWqtMNIRayIhGKsP5MdsuRV1seUZELLcvdI0NVPvvplOWHF0eOWWoa 5QEi15ZtI+mVQ== Date: Wed, 15 Dec 2021 11:24:01 +0200 From: Mike Rapoport To: Peng Fan Cc: Ard Biesheuvel , "Peng Fan (OSS)" , Catalin Marinas , Will Deacon , Andrew Morton , David Hildenbrand , Anshuman Khandual , Geert Uytterhoeven , Linux ARM , Linux Kernel Mailing List , dl-linux-imx Subject: Re: [PATCH 2/2] arm64: mm: support bootparam max_addr Message-ID: References: <20211215064559.2843555-1-peng.fan@oss.nxp.com> <20211215064559.2843555-2-peng.fan@oss.nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 15, 2021 at 07:59:45AM +0000, Peng Fan wrote: > > Subject: Re: [PATCH 2/2] arm64: mm: support bootparam max_addr > > > > On Wed, 15 Dec 2021 at 07:56, Peng Fan (OSS) > > wrote: > > > > > > From: Peng Fan > > > > > > There is a "mem=[x]" boot parameter, but when there is a whole > > > reserved by secure TEE, the continuous DRAM area is split with two > > memblocks. > > > > > > For example, DRAM area [0x40000000, 0xffffffff], when TEE uses > > > [0x50000000, 0x51000000), the memblock will be split into [0x40000000, > > > 0x50000000) and [0x51000000, 0xffffffff]. > > > > > > If pass "mem=1024MB", the actually max addr will be 0x81000000. > > > However if need the max addr be 0x80000000, mem=1008MB should be > > used. > > > > > > There also might be multiple other holes that no visible to Linux, > > > when we wanna to limit the max addr usable by Linux, using > > > "max_addr=[X]" is much easier than "mem=[X]" > > > > > > Signed-off-by: Peng Fan > > > > mem= is a hack already, please don't add another one. Limiting the memory > > like this is far too tricky, given that the kernel itself and the initrd could end up > > in memory that is excluded, and we have to go and fix things up if that > > happens. > > We wanna to use the reserved memory with request_mem_region, but with > commit 86588296acbfb1 ("fdt: Properly handle "no-map" field in the memory region ") > > request_mem_region will fail, because the reserved memory are now as > kernel memory. request_mem_region() is for MMIO. Why do you want to use it for RAM? > So we use "mem=X" to work around the issue, but "mem=X" is not user friendly > compared with "max_addr=" when there are multiple holes used by others. > > Thanks, > Peng. > > > > > > > > --- > > > arch/arm64/mm/init.c | 21 +++++++++++++++++++++ > > > 1 file changed, 21 insertions(+) > > > > > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index > > > db63cc885771..3364b5e7a7fe 100644 > > > --- a/arch/arm64/mm/init.c > > > +++ b/arch/arm64/mm/init.c > > > @@ -173,6 +173,7 @@ int pfn_is_map_memory(unsigned long pfn) > > > EXPORT_SYMBOL(pfn_is_map_memory); > > > > > > static phys_addr_t memory_limit __ro_after_init = PHYS_ADDR_MAX; > > > +static phys_addr_t max_addr __ro_after_init = PHYS_ADDR_MAX; > > > > > > /* > > > * Limit the memory size that was specified via FDT. > > > @@ -189,6 +190,18 @@ static int __init early_mem(char *p) } > > > early_param("mem", early_mem); > > > > > > +static int __init set_max_addr(char *p) { > > > + if (!p) > > > + return 1; > > > + > > > + max_addr = memparse(p, &p) & PAGE_MASK; > > > + pr_notice("Memory max addr set to 0x%llx\n", max_addr); > > > + > > > + return 0; > > > +} > > > +early_param("max_addr", set_max_addr); > > > + > > > void __init arm64_memblock_init(void) { > > > s64 linear_region_size = PAGE_END - > > > _PAGE_OFFSET(vabits_actual); @@ -253,6 +266,9 @@ void __init > > arm64_memblock_init(void) > > > memblock_add(__pa_symbol(_text), (u64)(_end - > > _text)); > > > } > > > > > > + if (max_addr != PHYS_ADDR_MAX) > > > + memblock_cap_memory_range(0, max_addr); > > > + > > > if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) > > { > > > /* > > > * Add back the memory we just removed if it results > > > in the @@ -427,4 +443,9 @@ void dump_mem_limit(void) > > > } else { > > > pr_emerg("Memory Limit: none\n"); > > > } > > > + > > > + if (max_addr != PHYS_ADDR_MAX) > > > + pr_emerg("Max addr: 0x%llx\n", max_addr); > > > + else > > > + pr_emerg("Max addr: none\n"); > > > } > > > -- > > > 2.25.1 > > > > > > > > > _______________________________________________ > > > linux-arm-kernel mailing list > > > linux-arm-kernel@lists.infradead.org > > > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists > > > .infradead.org%2Fmailman%2Flistinfo%2Flinux-arm-kernel&data=04% > > 7C0 > > > > > 1%7Cpeng.fan%40nxp.com%7C3ad0ef697ad64542556208d9bf9d1e1f%7C68 > > 6ea1d3bc > > > > > 2b4c6fa92cd99c5c301635%7C0%7C0%7C637751503805222488%7CUnknow > > n%7CTWFpbG > > > > > Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6 > > Mn0% > > > > > 3D%7C3000&sdata=iKVO4PUPnaRr%2B5gHcXxaaRxBt%2BK%2Fjytg8eQ > > dCqgqh5o% > > > 3D&reserved=0 -- Sincerely yours, Mike.