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 X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81684C63777 for ; Wed, 18 Nov 2020 17:39:38 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 074D9248D3 for ; Wed, 18 Nov 2020 17:39:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="N3dWbTyZ"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="lM2rvn/2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 074D9248D3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Cs8JfG4Xz1V34ZCnXMj2UUjJgQ5ywlCXka2sQ8J0j5Q=; b=N3dWbTyZLG/MLxSsuqCZBq2Yr lqJVPY2Yax1KHVj2PCH6XA3HN6ttn9cBUaobzDIKNjzlM9nm6GwnH57xKD5VpaPpG7qr3GcRZ3n6o R/LTH3NPzeUeNJ/7Am1CHAeTUUOKHXOPgZUqgifmg2tPiQJmw+QZNXUY8/DqJC0TAnqWGnRhunkYf 1XqloyIfL3QEnbp1MxjsSFO+d/56d2uSVbO8me3pmpR7OPvxSAmGnfgCZEWLjrSSurjP99Z6zM0U7 AHIrjIpBKwoBvpHSOjrAXxwYRZoZNSn2r+NKzpdtZjlfl+sh4ye+LKcxa1bFZYvYZjCKhySv7cKd8 FtDstqkfQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfRQ9-0004c3-Um; Wed, 18 Nov 2020 17:39:05 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfRQ7-0004bg-14 for linux-arm-kernel@lists.infradead.org; Wed, 18 Nov 2020 17:39:04 +0000 Received: from kernel.org (unknown [77.125.7.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8F97E248CE; Wed, 18 Nov 2020 17:38:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605721141; bh=ect8hrurvHpqV7LsIdFQA4NZMDGMnFxigrdnNDKCjfQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lM2rvn/2KA3q0c3yoB1RQpJ2Pi/bhIapgVQIJs4hSbc/RHw2YZ2WuqsSnI/FLJlxq 1rSENn6dcpe3NO1uO6q9LhD10fQj3HsfowIY7mjCmvOd1IIIiciEm1qyVMrqC6vJGs 4z1h6/eBUubqF2v4W/i1B9kvAWRdvEgdZqTeHTLU= Date: Wed, 18 Nov 2020 19:38:54 +0200 From: Mike Rapoport To: Barry Song Subject: Re: [PATCH] arm64: mm: add support for memmap kernel parameters Message-ID: <20201118173854.GA8537@kernel.org> References: <20201118063314.22940-1-song.bao.hua@hisilicon.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201118063314.22940-1-song.bao.hua@hisilicon.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201118_123903_263799_681407E9 X-CRM114-Status: GOOD ( 28.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: anshuman.khandual@arm.com, catalin.marinas@arm.com, linux-kernel@vger.kernel.org, linuxarm@huawei.com, akpm@linux-foundation.org, will@kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Barry, On Wed, Nov 18, 2020 at 07:33:14PM +1300, Barry Song wrote: > memmap should be an useful kernel parameter which has been supported by > x86, mips and xtensa. Why is this parameter should be useful for ARM64? My understanding is that it is required only to work around really broken bootloaders, isn't it? > This patch adds support for ARM64. At this stage, > the below two modes are supported only: > memmap=nn[KMG]@ss[KMG] > Force usage of a specific region of memory > > memmap=nn[KMG]$ss[KMG] > Region of memory to be reserved is from ss to ss+nn > > If users set memmap=exactmap before memmap=nn[KMG]@ss[KMG], they will > get the exact memory specified by memmap=nn[KMG]@ss[KMG]. For example, > on one machine with 4GB memory, "memmap=exactmap memmap=1G@1G" will > make kernel use the memory from 1GB to 2GB only. > > Signed-off-by: Barry Song > --- > arch/arm64/mm/init.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 59 insertions(+) > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 095540667f0f..f1c6bfdbc953 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -235,6 +235,65 @@ static int __init early_mem(char *p) > } > early_param("mem", early_mem); > > +static int need_remove_real_memblock __initdata; > + > +static void __init parse_memmap_one(char *p) > +{ > + char *oldp; > + unsigned long start_at, mem_size; > + > + if (!p) > + return; > + > + if (!strncmp(p, "exactmap", 8)) { > + need_remove_real_memblock = 1; > + return; > + } > + > + oldp = p; > + mem_size = memparse(p, &p); > + if (p == oldp) > + return; > + > + switch (*p) { > + case '@': > + start_at = memparse(p + 1, &p); > + /* > + * use the exactmap defined by nn[KMG]@ss[KMG], remove > + * memblock populated by DT etc. > + */ > + if (need_remove_real_memblock) { > + need_remove_real_memblock = 0; > + memblock_remove(0, ULLONG_MAX); > + } > + memblock_add(start_at, mem_size); > + break; > + case '$': > + start_at = memparse(p + 1, &p); > + memblock_reserve(start_at, mem_size); > + break; > + default: > + pr_warn("Unrecognized memmap syntax: %s\n", p); > + break; > + } > +} > + > +static int __init parse_memmap_opt(char *str) > +{ > + while (str) { > + char *k = strchr(str, ','); > + > + if (k) > + *k++ = 0; > + > + parse_memmap_one(str); > + str = k; > + } > + > + return 0; > +} > +early_param("memmap", parse_memmap_opt); > + > static int __init early_init_dt_scan_usablemem(unsigned long node, > const char *uname, int depth, void *data) > { > -- > 2.25.1 > -- Sincerely yours, Mike. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel