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.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 88BFEC0044D for ; Mon, 16 Mar 2020 11:18:03 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3CEC720719 for ; Mon, 16 Mar 2020 11:18:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PuviygU2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3CEC720719 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id BFDB26B0003; Mon, 16 Mar 2020 07:18:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BAE306B0005; Mon, 16 Mar 2020 07:18:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9CC96B0007; Mon, 16 Mar 2020 07:18:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0032.hostedemail.com [216.40.44.32]) by kanga.kvack.org (Postfix) with ESMTP id 8CEC06B0003 for ; Mon, 16 Mar 2020 07:18:02 -0400 (EDT) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 6D06B3A87 for ; Mon, 16 Mar 2020 11:18:02 +0000 (UTC) X-FDA: 76600976004.06.coach19_4626b89113160 X-HE-Tag: coach19_4626b89113160 X-Filterd-Recvd-Size: 5224 Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by imf47.hostedemail.com (Postfix) with ESMTP for ; Mon, 16 Mar 2020 11:18:01 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id x11so15939588wrv.5 for ; Mon, 16 Mar 2020 04:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tkzased074+2YtAr5hFJ/daEFNhyLZu+M7n1STZCoBQ=; b=PuviygU2AAmP2GYX+19eXOd4AbKmQEvTvBAqVTKc7w9rRAFSTEm0NG5JfeGXiZlN47 CamCokt1G4OvKPqDvDl3RrUCmiJQgLKim3xrQkFaayVEh4iIWCY14ZRWscp6Uc8gYH/B 5WuEvcJgYeGcoItq30X3xr98ryw51RZztMC4GWmZX4/hnuBFAG4rIxCq3Q+CuEDJtblB vyZJ9K51xs267yZZwCBeCXyq7TOvH/yEfKMtDr8j9VZJMVnvAGttyNQbvXsbb5+t4Lg9 4lrTcZRMwrfRcrNOmtDT6d844jb4g8Xobe5FBexitdnjw4gbnJrbYm3hhR2UKsEgYRZD VpGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tkzased074+2YtAr5hFJ/daEFNhyLZu+M7n1STZCoBQ=; b=tppy11LHrW8hp0E5c8xbpw6jvPZXYfyrjIieQ2cjFT5WKuMQ3b1sqw/nrdkGQ+PDR0 KKmWDLjtr9X8vxz6wZTSns0NL76R31ie8V97CR2Zr0yel3WJchOcCkI47Ixl3au/0dmK THTuBjOe6zo1cau5FKle+7/eKFHNeVd9xDhBo8Zf1Kd3rYWaeGG4Ptb3b4yGULKRMwMn s5gdg33d5WoVORiRIfk3laaQ83CLwdORF4RHbReuMqeqO9PDtSynd1etib0+TY9EO4j2 mSmWmq2meQVok2n1ci6mz7juyVFX/IfLYMhRlVQ+5Qfg7erynhiwlt+FRSZSkO9fP5lu 0Fuw== X-Gm-Message-State: ANhLgQ3ZqATZ8iwpsmXngDSFlbMFL8FeWY8QPIOCvFJKHhyNCtj6TRW+ NKcoJ44MK98mjdhXwOyCfRSnMmoZIvUxVvN7hP0= X-Google-Smtp-Source: ADFU+vtLcva0bE/nXI4bTW8PFsxRpyI9ov7T+F6+EGCZKFCf0U1B9Nd91Nf05H+MgIUj46mpauaunKTh4F/HQrzJakE= X-Received: by 2002:adf:cc85:: with SMTP id p5mr35015005wrj.196.1584357480753; Mon, 16 Mar 2020 04:18:00 -0700 (PDT) MIME-Version: 1.0 References: <20200316102150.16487-1-bhe@redhat.com> In-Reply-To: <20200316102150.16487-1-bhe@redhat.com> From: Pankaj Gupta Date: Mon, 16 Mar 2020 12:17:49 +0100 Message-ID: Subject: Re: [PATCH v4 1/2] mm/sparse.c: Use kvmalloc/kvfree to alloc/free memmap for the classic sparse To: Baoquan He Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhocko@suse.com, Andrew Morton , David Hildenbrand , willy@infradead.org, richard.weiyang@gmail.com, Vlastimil Babka Content-Type: text/plain; charset="UTF-8" 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: > This change makes populate_section_memmap()/depopulate_section_memmap > much simpler. > > Suggested-by: Michal Hocko > Signed-off-by: Baoquan He > Reviewed-by: David Hildenbrand > Acked-by: Michal Hocko > --- > v3->v4: > Split the old v3 into two patches, to carve out the using 'nid' > as preferred node to allocate memmap into a separate patch. This > is suggested by Michal, and the carving out is put in patch 2. > > v2->v3: > Remove __GFP_NOWARN and use array_size when calling kvmalloc_node() > per Matthew's comments. > http://lkml.kernel.org/r/20200312141749.GL27711@MiWiFi-R3L-srv > > mm/sparse.c | 27 +++------------------------ > 1 file changed, 3 insertions(+), 24 deletions(-) > > diff --git a/mm/sparse.c b/mm/sparse.c > index e747a238a860..d01d09cc7d99 100644 > --- a/mm/sparse.c > +++ b/mm/sparse.c > @@ -719,35 +719,14 @@ static int fill_subsection_map(unsigned long pfn, unsigned long nr_pages) > struct page * __meminit populate_section_memmap(unsigned long pfn, > unsigned long nr_pages, int nid, struct vmem_altmap *altmap) > { > - struct page *page, *ret; > - unsigned long memmap_size = sizeof(struct page) * PAGES_PER_SECTION; > - > - page = alloc_pages(GFP_KERNEL|__GFP_NOWARN, get_order(memmap_size)); > - if (page) > - goto got_map_page; > - > - ret = vmalloc(memmap_size); > - if (ret) > - goto got_map_ptr; > - > - return NULL; > -got_map_page: > - ret = (struct page *)pfn_to_kaddr(page_to_pfn(page)); > -got_map_ptr: > - > - return ret; > + return kvmalloc(array_size(sizeof(struct page), > + PAGES_PER_SECTION), GFP_KERNEL); > } > > static void depopulate_section_memmap(unsigned long pfn, unsigned long nr_pages, > struct vmem_altmap *altmap) > { > - struct page *memmap = pfn_to_page(pfn); > - > - if (is_vmalloc_addr(memmap)) > - vfree(memmap); > - else > - free_pages((unsigned long)memmap, > - get_order(sizeof(struct page) * PAGES_PER_SECTION)); > + kvfree(pfn_to_page(pfn)); > } > > static void free_map_bootmem(struct page *memmap) > -- > 2.17.2 With David's indentation suggestion: Reviewed-by: Pankaj Gupta > >