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=-6.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 53ED9C433E0 for ; Mon, 1 Feb 2021 14:06:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C87EB64EA4 for ; Mon, 1 Feb 2021 14:06:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C87EB64EA4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 264496B007B; Mon, 1 Feb 2021 09:06:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 215586B0080; Mon, 1 Feb 2021 09:06:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 104FF6B0081; Mon, 1 Feb 2021 09:06:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0006.hostedemail.com [216.40.44.6]) by kanga.kvack.org (Postfix) with ESMTP id F047F6B007B for ; Mon, 1 Feb 2021 09:06:46 -0500 (EST) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id B7893181AC9CC for ; Mon, 1 Feb 2021 14:06:46 +0000 (UTC) X-FDA: 77769874812.01.turn49_5610994275c2 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin01.hostedemail.com (Postfix) with ESMTP id 7AAD61004649A for ; Mon, 1 Feb 2021 14:06:19 +0000 (UTC) X-HE-Tag: turn49_5610994275c2 X-Filterd-Recvd-Size: 5279 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Mon, 1 Feb 2021 14:06:18 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 9ED6764EA1; Mon, 1 Feb 2021 14:06:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1612188377; bh=tQ4WmAzlyE4k3CyxrsslSldFLnH7v9mWZ6r3RsrN92o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=UL5SEVGET2SxXOjmGMFgkjoD6BYDZRygtnBjTNJu8V+/pemWyIGsJvG9bgE7KLyje Lj0fREqDV8/aSZzmEAC740HLoqXoVG8YqsDmdtGjgNYIh4bifIIX4bgm9L2Vgn6Qf/ skfj+H8rithoJoc6YyhJjD5NsHlPBaL1DNXlpEOI3++atJAMJ/RAF4wjCfZWEiyizL b3v4OtZj7m63wkIDoMx+H025TmfyvnDFwsqtqVWV8MWE793bhKAI75OWUW/xLAwoFI +7e+KAO1E4+vH6oUMtql/UMjfj+ECQfyOhDT3uXO8MgZzW6B1/vWG//Ibrwenv7RS0 RycHCDmybViNw== Date: Mon, 1 Feb 2021 16:06:05 +0200 From: Mike Rapoport To: Linus Torvalds Cc: Andrew Morton , Andrea Arcangeli , Baoquan He , Borislav Petkov , Chris Wilson , David Hildenbrand , "H. Peter Anvin" , Ingo Molnar , =?utf-8?Q?=C5=81ukasz?= Majczak , Mel Gorman , Michal Hocko , Mike Rapoport , Qian Cai , "Sarvela, Tomi P" , Thomas Gleixner , Vlastimil Babka , Linux Kernel Mailing List , Linux-MM , stable , the arch/x86 maintainers Subject: Re: [PATCH v4 1/2] x86/setup: always add the beginning of RAM as memblock.memory Message-ID: <20210201140605.GG242749@kernel.org> References: <20210130221035.4169-1-rppt@kernel.org> <20210130221035.4169-2-rppt@kernel.org> <20210131080356.GE242749@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sun, Jan 31, 2021 at 01:49:27PM -0800, Linus Torvalds wrote: > On Sun, Jan 31, 2021 at 12:04 AM Mike Rapoport wrote: > > > > > > > > That's *particularly* true when the very line above it did a > > > "memblock_reserve()" of the exact same range that the memblock_add() > > > "adds". > > > > The most correct thing to do would have been to > > > > memblock_add(0, end_of_first_memory_bank); > > > > Somewhere at e820__memblock_setup(). > > You miss my complaint. > > Why does the memblock code care about this magical "memblock_add()", > when we just told it that the SAME REGION is reserved by doing a > "memblock_reserve()"? > > IOW, I'm not interested in "the correct thing to do would have been > [another memblock_add()]". I'm saying that the memblock code itself is > being confused, and no additional thing should have been required at > all, because we already *did* that memblock_reserve(). > > See? There is nothing magical about memblock_add(). Memblock presumes that arch code uses memblock_add() to register populated physical memory ranges and memblock_reserve() to protect memory ranges that should not be touched. These ranges do not necessarily overlap, so there maybe reserved ranges that do not have the corresponding registered memory. This lets architectures to say "here are the memory banks I have" and "this memory is in use" (or even "this memory _might_ be in use" ) independently of each other. The downside is that if there is a reserved range there is no way to tell whether it is backed by populated memory. We could change this semantics and enforce the overlap, e.g. by implicitly adding all the reserved ranges to the registered memory. I've already tried that and I've found out that there are systems that rely on memblock's ability to track reserved and available ranges independently. For example, arm systems I've mentioned in the previous mail always have a reserved chunk at 0xfe000000 in their DTS, but they may have only 2G of memory actually populated. Now, on x86 there is a gap between e820 and memblock since 2.6 times. As of now, only E820_TYPE_RAM is added to memblock as memory, some of the E820_*_RESERVED are reserved and on top there are reservations of the memory that's known to be used by BIOS or kernel. I'm trying to close this gap with small steps and with changes that I believe will not break too many things at once so it'll become unmanageable. > Honestly, I'm not seeing it being a good thing to move further towards > memblock code as the primary model for memory initialization, when the > memblock code is so confused. I'm not sure I follow you here. If I'm not mistaken, memblock is used as the primary model for memmap and page allocator initialization for almost a decade now... > Linus -- Sincerely yours, Mike.