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 33792C433F5 for ; Tue, 10 May 2022 00:00:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87BA06B0072; Mon, 9 May 2022 20:00:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 82BEB6B0073; Mon, 9 May 2022 20:00:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6F14E6B0074; Mon, 9 May 2022 20:00:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 5FB9A6B0072 for ; Mon, 9 May 2022 20:00:25 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 217463123E for ; Tue, 10 May 2022 00:00:25 +0000 (UTC) X-FDA: 79447876410.25.A4943EA Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by imf18.hostedemail.com (Postfix) with ESMTP id C81671C008F for ; Tue, 10 May 2022 00:00:14 +0000 (UTC) Received: by mail-qk1-f169.google.com with SMTP id a76so12124824qkg.12 for ; Mon, 09 May 2022 17:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=ibOO/2Z3Vfs+oa3W3i28/woPMJReYnyxPcCH3V9xpEs=; b=PGfogSyjud6Z/U+Tnrdng5NQRymWDhri1yqLua9o4+JZufae9l6ep9anQcuAj8ByCv ZsX/aOvhWbGYWUF+Bj3MBJ2msZnx+ET8C6Kyc+S86kHjbIFIe7Si9yGFhBS6FYp2tlHW /ZapA9UARbWLy3tk7vfLJXhOQWm6siTg6w5ENgXK/PjNf3GDai7nHKb8fJCQNRoL/XWS VK20n7EI6+pO51sf3XgSLCWvltawUpDhtOdxJ7uhyD8Y4GBZur4NerQGwYz/ytgGnBl+ HNgd8xsJaENNLapyB3q6rhwLncr6+4YvNVGWXGbjPyIoWgrlnxXGKTisaw/m59GsZkZb 1MgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=ibOO/2Z3Vfs+oa3W3i28/woPMJReYnyxPcCH3V9xpEs=; b=79zukJFmkFA9OlFfdwzmiIwmL4tclni0EFfva4nwhP54okcEwFJwRIFMHpRLr7L3zy /sIAt56zH/2hvxvPHWr2p0/fP493JAnsqeqiDLL+GokOMTX0uWHOPuqvW88dEclK7emo 0qJi6LiI+SL5iyL09xbc8yumEw6/tN0dtPiqnl34jQ31O+8+C1OCL9YQ/P2vBmnQL47N sUq1FFop/ndxilm7Hclmt//o8U7cxdxmVYuzQgS1RJl9xiqADjih195lu4BLSVkzZCdo eeb5DKTP+zCb+0Rjp65ZwXHwuWEfh/jxzyO6qLmCnH7h3OUZXVfdIUC/MFzvgLnr8aUx 4bYQ== X-Gm-Message-State: AOAM5334+FGGe5wSQz+LiBVFRzQSTP44BTeIdKAN4uIPCNH8fiDVNh+v r8JLs6qzcWzWuSnIESzzZX2tAnUuMDdau76bu04= X-Google-Smtp-Source: ABdhPJzdn+4+t7APmbnzAxJHw3SKUWsUacTcc8OdvDUUn8eY5KP+3SdObklD1Ou8fxdmEe6hb6KRmj8FSZAJjcpEpjQ= X-Received: by 2002:a05:620a:24cd:b0:6a0:414c:a648 with SMTP id m13-20020a05620a24cd00b006a0414ca648mr13467916qkn.465.1652140823731; Mon, 09 May 2022 17:00:23 -0700 (PDT) MIME-Version: 1.0 References: <20220509074330.4822-1-jaewon31.kim@samsung.com> In-Reply-To: <20220509074330.4822-1-jaewon31.kim@samsung.com> From: Jaewon Kim Date: Tue, 10 May 2022 09:00:12 +0900 Message-ID: Subject: Re: [RFC PATCH] page_ext: create page extension for all memblock memory regions To: Jaewon Kim , Joonsoo Kim , Vlastimil Babka Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: za1hqu5inatbdibgotu6yp4rchwg9kqg X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C81671C008F X-Rspam-User: Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PGfogSyj; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf18.hostedemail.com: domain of jaewon31.kim@gmail.com designates 209.85.222.169 as permitted sender) smtp.mailfrom=jaewon31.kim@gmail.com X-HE-Tag: 1652140814-738817 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: let me add Joonsoo Kim 2022=EB=85=84 5=EC=9B=94 9=EC=9D=BC (=EC=9B=94) =EC=98=A4=ED=9B=84 4:39, Ja= ewon Kim =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > > The page extension can be prepared for each section. But if the first > page is not valid, the page extension for the section was not > initialized though there were many other valid pages within the section. > > To support the page extension for all sections, refer to memblock memory > regions. If the page is valid use the nid from pfn_to_nid, otherwise use > the previous nid. > > Also this pagech changed log to include total sections and a section > size. > > i.e. > allocated 100663296 bytes of page_ext for 64 sections (1 section : 0x8000= 000) > > Signed-off-by: Jaewon Kim > --- > mm/page_ext.c | 42 ++++++++++++++++++++++-------------------- > 1 file changed, 22 insertions(+), 20 deletions(-) > > diff --git a/mm/page_ext.c b/mm/page_ext.c > index 2e66d934d63f..506d58b36a1d 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -381,41 +381,43 @@ static int __meminit page_ext_callback(struct notif= ier_block *self, > void __init page_ext_init(void) > { > unsigned long pfn; > - int nid; > + int nid =3D 0; > + struct memblock_region *rgn; > + int nr_section =3D 0; > + unsigned long next_section_pfn =3D 0; > > if (!invoke_need_callbacks()) > return; > > - for_each_node_state(nid, N_MEMORY) { > + /* > + * iterate each memblock memory region and do not skip a section = having > + * !pfn_valid(pfn) > + */ > + for_each_mem_region(rgn) { > unsigned long start_pfn, end_pfn; > > - start_pfn =3D node_start_pfn(nid); > - end_pfn =3D node_end_pfn(nid); > - /* > - * start_pfn and end_pfn may not be aligned to SECTION an= d the > - * page->flags of out of node pages are not initialized. = So we > - * scan [start_pfn, the biggest section's pfn < end_pfn) = here. > - */ > + start_pfn =3D (unsigned long)(rgn->base >> PAGE_SHIFT); > + end_pfn =3D start_pfn + (unsigned long)(rgn->size >> PAGE= _SHIFT); > + > + if (start_pfn < next_section_pfn) > + start_pfn =3D next_section_pfn; > + > for (pfn =3D start_pfn; pfn < end_pfn; > pfn =3D ALIGN(pfn + 1, PAGES_PER_SECTION)) { > > - if (!pfn_valid(pfn)) > - continue; > - /* > - * Nodes's pfns can be overlapping. > - * We know some arch can have a nodes layout such= as > - * -------------pfn--------------> > - * N0 | N1 | N2 | N0 | N1 | N2|.... > - */ > - if (pfn_to_nid(pfn) !=3D nid) > - continue; > + if (pfn_valid(pfn)) > + nid =3D pfn_to_nid(pfn); > + nr_section++; > if (init_section_page_ext(pfn, nid)) > goto oom; > cond_resched(); > } > + next_section_pfn =3D pfn; > } > + > hotplug_memory_notifier(page_ext_callback, 0); > - pr_info("allocated %ld bytes of page_ext\n", total_usage); > + pr_info("allocated %ld bytes of page_ext for %d sections (1 secti= on : 0x%x)\n", > + total_usage, nr_section, (1 << SECTION_SIZE_BITS)); > invoke_init_callbacks(); > return; > > -- > 2.17.1 >