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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41503E784A5 for ; Mon, 2 Oct 2023 08:48:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94B298D000F; Mon, 2 Oct 2023 04:48:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8FAE68D0001; Mon, 2 Oct 2023 04:48:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C3D28D000F; Mon, 2 Oct 2023 04:48:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6A65D8D0001 for ; Mon, 2 Oct 2023 04:48:16 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 3D24D401A7 for ; Mon, 2 Oct 2023 08:48:16 +0000 (UTC) X-FDA: 81299894592.25.B74795C Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf01.hostedemail.com (Postfix) with ESMTP id CDFD24000E for ; Mon, 2 Oct 2023 08:48:13 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Zt1LD1Ub; spf=pass (imf01.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696236494; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VqaXokREkRutFvpcvxrCcHDeKlZWL8Dc4CESpSw4HuU=; b=m14s0xG6wEfeYc5wSUzjrdHRpeodySXEzbsK6ubU1nhDHyrow6/7o/DQQunT6dNCKkxd5V atdWtnL+JKnohIbsI+l66qG7VOrgxfeMAJetEAj94FGmhZRQtdq63m4HVq4j2qwrUKR3AM pUUwBcm6YW7zh8yFQx4Cek2tYszcJXc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696236494; a=rsa-sha256; cv=none; b=CUBMRCIthe0xv2XWZhigCN8iX/6uqGEUUU0xaFE62lUtZ3YBflydzJx8XvnhNSmRof3rM4 miEG3Ur6YIJMImJaSMabKJZEmbDd8B5hKszijT157keZqDxfeANqP+cf3rfOnNx9U4mFh1 7dAb8qWPJU1QexzXVxe1qAcuWEgjQYQ= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Zt1LD1Ub; spf=pass (imf01.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id E2E3ACE0E67; Mon, 2 Oct 2023 08:48:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 702F8C433C8; Mon, 2 Oct 2023 08:48:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696236489; bh=Mbepew5UdVhXx+0duNyVREkgDb2p+7tZH/hGyq1uSvA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Zt1LD1UbmFQSJqxNvMaUKcv/oVjDpo81EnhRL2Hjzbqf1tcPjge8dF6ujgy208Nzb F+1NSJWlsIlm1fdVrMvmLvucwERK6NNoxXSvUX4R7gIdVhCBxrRcNTORZX0rFTXhI9 LDXLtahAIuQbXFck8S2gq5/ojilc7kov9K9bK5O0kXRSaqIME6tR+2y6LKjDsp5hIn DQ/3VmfI8UTocJy4TtQo0XDLa06NGeszqtDgTilYY7SssOeXeV/glxTGr5k8iU8VZ5 d0MmSGTf3RdMb96Ys5oC8Gx5I/AxyhJJFGt77GAuE4GNGBnsEXbOkLXRYPJPf4PFBZ XhyOJtGA2hpeQ== Date: Mon, 2 Oct 2023 11:47:08 +0300 From: Mike Rapoport To: Yajun Deng Cc: akpm@linux-foundation.org, mike.kravetz@oracle.com, muchun.song@linux.dev, willy@infradead.org, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 2/2] mm: Init page count in reserve_bootmem_region when MEMINIT_EARLY Message-ID: <20231002084708.GZ3303@kernel.org> References: <20230928083302.386202-1-yajun.deng@linux.dev> <20230928083302.386202-3-yajun.deng@linux.dev> <20230929083018.GU3303@kernel.org> <20230929100252.GW3303@kernel.org> <15233624-f32e-172e-b2f6-7ca7bffbc96d@linux.dev> <20231001185934.GX3303@kernel.org> <90342474-432a-9fe3-2f11-915a04f0053f@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <90342474-432a-9fe3-2f11-915a04f0053f@linux.dev> X-Stat-Signature: 7sgqjs15an8h9dswqxjiu7dxp1h951w4 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: CDFD24000E X-Rspam-User: X-HE-Tag: 1696236493-451330 X-HE-Meta: U2FsdGVkX18rsyfK1cGU5AW5AJfasAXBS0+RcFTHhxlvEuA73GTJ+xbL9xf3xjEImkr0VgL2SyC6UcZaldqJ3OwIlKZCELH345Hqtlf7amOPpVN7MESq/WurUGxGM4ddwciKt7fvJR2rzlNfdx9ZkskgspfOZe5cE4L5zGSbz1WF1gcck0JjIy0yCALYftllhcoOTmGuafEoR/myFP+/yDiKnfrVIrAcJHg3mKRRhdXGmqILGIxCCZN423YPAH6NCP45kMiSV8AefcI54BrFQLlS+QlV4l/3GhIWpICe/D+XgfCwXGIeOmhc3q5FPpG4nZaJ9cTRxqFoTkOgHfcqlO1AWgt7Awp0Gwk+aJVK/ojL/1qC3nlkVm6kTD04+FraegIhguULy0h+yPxCadecidDi41Fm5PxIG43ma33GzPDxPXdi5gzd+n16LzYQFc/bIOEXdFlgVU5Xq7NEGJP5J1wVAOmm6n/Gikto/se0bhO+XeoIE0ld9iEIZQ4MCsP034QCnNFFCN/xAyxDCAK/cKAflxfK+5X0Je2s1/B/N7y0cXokPqupr4FRySuhFuZs01OcGJeeMLJVvNsgKgkgXBALYBOS6iwYIRvSV223jjHLVjGsVHtrEmh8C1JaFGAcWM43o3HzNmpqOxc9pR+10H1aY7RL0TSc38GZfVaXy3jkvy395DkUYYBg1DM8c5i0ntwTl7TSMBFkc/J9ey+Sz/ybHsImwOKIT6w+BIWzI7iLvxUcSok1QS3ooYT/1+aS7Ma6zNC3O8ZT2GpfNumuUzGyTXHCnrUYToR/pMj9YwEkJgxOqzRT1wOUajw8BpKqCCYUpFnMAlJZ96Yn1kqT1zhxAy0H7MCvKvf8yHOtvwSGrhBTvo3B0EDKsNzjH/mBNtBk/HrQL0YdH30Zk543uqxPaUmw8zRaAmPGzKIyOH8ExwTlbzKxMtnna20w2JwqpR+65lImrr5EmHGGBJQ bO4oqbYP qgwusTo1NaX5nTg0LsPsb6S3XZBglcxP1aPEhFpnPIxM12j8WJGeTwuNkrbxmy723DJYnjBpBFf4e2ajapd/qgrEumUTn70ihDR55XsOLmBe8HC12tnDtfons3yAifOfZRCsWQRkRL/0ZucPclAyEQUiZijxxKoMzE06l3fQx6B0zrEGgSoo43ohdAn8tyy19IHYqaA6r4RB3YwjtZjBkk6XBetk3n4upJ/PvKHNgnQ4fcMgz1QxKYuVB0A== 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 Mon, Oct 02, 2023 at 03:03:56PM +0800, Yajun Deng wrote: > > On 2023/10/2 02:59, Mike Rapoport wrote: > > On Fri, Sep 29, 2023 at 06:27:25PM +0800, Yajun Deng wrote: > > > On 2023/9/29 18:02, Mike Rapoport wrote: > > > > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > > > > > > index 06be8821d833..b868caabe8dc 100644 > > > > > > > --- a/mm/page_alloc.c > > > > > > > +++ b/mm/page_alloc.c > > > > > > > @@ -1285,18 +1285,22 @@ void __free_pages_core(struct page *page, unsigned int order) > > > > > > > unsigned int loop; > > > > > > > /* > > > > > > > - * When initializing the memmap, __init_single_page() sets the refcount > > > > > > > - * of all pages to 1 ("allocated"/"not free"). We have to set the > > > > > > > - * refcount of all involved pages to 0. > > > > > > > + * When initializing the memmap, memmap_init_range sets the refcount > > > > > > > + * of all pages to 1 ("reserved" and "free") in hotplug context. We > > > > > > > + * have to set the refcount of all involved pages to 0. Otherwise, > > > > > > > + * we don't do it, as reserve_bootmem_region only set the refcount on > > > > > > > + * reserve region ("reserved") in early context. > > > > > > > */ > > > > > > Again, why hotplug and early init should be different? > > > > > I will add a comment that describes it will save boot time. > > > > But why do we need initialize struct pages differently at boot time vs > > > > memory hotplug? > > > > Is there a reason memory hotplug cannot have page count set to 0 just like > > > > for pages reserved at boot time? > > > This patch just save boot time in MEMINIT_EARLY. If someone finds out that > > > it can save time in > > > > > > MEMINIT_HOTPLUG, I think it can be done in another patch later. I just > > > keeping it in the same. > > But it's not the same. It becomes slower after your patch and the code that > > frees the pages for MEMINIT_EARLY and MEMINIT_HOTPLUG becomes non-uniform > > for no apparent reason. > > __free_pages_core will also be called by others, such as: > deferred_free_range, do_collection and memblock_free_late. > > We couldn't remove  'if (page_count(page))' even if we set page count to 0 > when MEMINIT_HOTPLUG. That 'if' breaks the invariant that __free_pages_core is always called for pages with initialized page count. Adding it may lead to subtle bugs and random memory corruption so we don't want to add it at the first place. -- Sincerely yours, Mike.