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=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 977E7C433B4 for ; Sat, 24 Apr 2021 00:16:18 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1DDE861422 for ; Sat, 24 Apr 2021 00:16:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1DDE861422 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 726A66B0036; Fri, 23 Apr 2021 20:16:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6D6EE6B006C; Fri, 23 Apr 2021 20:16:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 550F26B006E; Fri, 23 Apr 2021 20:16:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0088.hostedemail.com [216.40.44.88]) by kanga.kvack.org (Postfix) with ESMTP id 33FCE6B0036 for ; Fri, 23 Apr 2021 20:16:17 -0400 (EDT) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id E41E818035451 for ; Sat, 24 Apr 2021 00:16:16 +0000 (UTC) X-FDA: 78065343552.30.4DE3DF9 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by imf30.hostedemail.com (Postfix) with ESMTP id D05A6E00011D for ; Sat, 24 Apr 2021 00:15:59 +0000 (UTC) Received: by mail-ed1-f49.google.com with SMTP id z5so22740095edr.11 for ; Fri, 23 Apr 2021 17:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=l/uh3+B4XuoxsCrq3rYabHaGGWXFYs+Y4T04wxnm3Nw=; b=vEfpZojtg8fw3cfDceRI4HjqvLyoMCV8Hxpf2pqKYy7CnCYbXxn4v/SRJ+JV+1YNF+ bkT2tlZs2nX2GIshFrpgzDt0j8VfiXs09v4BPbZHRXGTC11MRqbgF9zkjHHky6PeOnhz AlvWZcYv541dGxjX6+d1MBG740xhcSEW0lYz3wCsiyndxz0ZPchHdnsW1n4biz4B+o9N ZRu2b/rIs/UEc1YNxxrBGvmJTza3o3RHB4IPDtQXpEXkNwGO+6rIdWpZt03kGqeY4zwZ DWQs5a/ovq9nPpG98DYVYvBa05SzVYfaBklE+1eeYICPRk0k4qiVEyM9Nrlf/7Ldhc/7 Blvg== 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=l/uh3+B4XuoxsCrq3rYabHaGGWXFYs+Y4T04wxnm3Nw=; b=df3zc8RsgAdlGWA4eCEqV6Xb++a4hDFLNjuoeTfkKP6aNhg6nZo3FVohyxuPcCZM6w jbBcab3LgQKGK7/NkmZaujlHCyEtN34fQDWa4cfcDfloG1tmHD6COKp/cEwWOdFHbP6F VyY4/AWCF0HnQlDFNqS5GVjExSsN5Tv1AA+DcQEnBbB0UkCp9niUxJKAw1DJ+vgC2/2H N4A4RTa9ORWckGhAs64/qbz32+tQUI3E0vN0rY6UWHu38psbSa44qVVeupC+yT88BXho avSvXm6J9z7pHVBtF47sU3nGT9Q7fyFcb6ku3YlsQ36sb1CmOlzjIlgtXTfuavxjABfY S/lw== X-Gm-Message-State: AOAM533Jj1A1zMeLzc5Xfssq1iSHssBcDpGy5ysKQuPfiTmOxLSUV5MZ 14mpOtJPkZsQ+9fpJ42bV75pZ+Lzol6M4wD+AJQerw== X-Google-Smtp-Source: ABdhPJyr+nWFUeRB/31XPMGbxG182hpB631BFplB/xl3H7HTZZvEhyoCUuto/u3J+7UzagRMIbKR05/dmKhjNRBbxAY= X-Received: by 2002:a50:e607:: with SMTP id y7mr7558321edm.18.1619223375444; Fri, 23 Apr 2021 17:16:15 -0700 (PDT) MIME-Version: 1.0 References: <20210325230938.30752-1-joao.m.martins@oracle.com> <20210325230938.30752-3-joao.m.martins@oracle.com> In-Reply-To: <20210325230938.30752-3-joao.m.martins@oracle.com> From: Dan Williams Date: Fri, 23 Apr 2021 17:16:09 -0700 Message-ID: Subject: Re: [PATCH v1 02/11] mm/page_alloc: split prep_compound_page into head and tail subparts To: Joao Martins Cc: Linux MM , Ira Weiny , linux-nvdimm , Matthew Wilcox , Jason Gunthorpe , Jane Chu , Muchun Song , Mike Kravetz , Andrew Morton Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: D05A6E00011D X-Stat-Signature: 97iz5ssbhmmeri6gae4u8ktopiz1anj3 Received-SPF: none (intel.com>: No applicable sender policy available) receiver=imf30; identity=mailfrom; envelope-from=""; helo=mail-ed1-f49.google.com; client-ip=209.85.208.49 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1619223359-688421 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 Thu, Mar 25, 2021 at 4:10 PM Joao Martins wrote: > > Split the utility function prep_compound_page() into head and tail > counterparts, and use them accordingly. To make this patch stand alone better lets add another sentence: "This is in preparation for sharing the storage for / deduplicating compound page metadata." Other than that, looks good to me. > > Signed-off-by: Joao Martins > --- > mm/page_alloc.c | 32 +++++++++++++++++++++----------- > 1 file changed, 21 insertions(+), 11 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index c53fe4fa10bf..43dd98446b0b 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -692,24 +692,34 @@ void free_compound_page(struct page *page) > __free_pages_ok(page, compound_order(page), FPI_NONE); > } > > +static void prep_compound_head(struct page *page, unsigned int order) > +{ > + set_compound_page_dtor(page, COMPOUND_PAGE_DTOR); > + set_compound_order(page, order); > + atomic_set(compound_mapcount_ptr(page), -1); > + if (hpage_pincount_available(page)) > + atomic_set(compound_pincount_ptr(page), 0); > +} > + > +static void prep_compound_tail(struct page *head, int tail_idx) > +{ > + struct page *p = head + tail_idx; > + > + set_page_count(p, 0); > + p->mapping = TAIL_MAPPING; > + set_compound_head(p, head); > +} > + > void prep_compound_page(struct page *page, unsigned int order) > { > int i; > int nr_pages = 1 << order; > > __SetPageHead(page); > - for (i = 1; i < nr_pages; i++) { > - struct page *p = page + i; > - set_page_count(p, 0); > - p->mapping = TAIL_MAPPING; > - set_compound_head(p, page); > - } > + for (i = 1; i < nr_pages; i++) > + prep_compound_tail(page, i); > > - set_compound_page_dtor(page, COMPOUND_PAGE_DTOR); > - set_compound_order(page, order); > - atomic_set(compound_mapcount_ptr(page), -1); > - if (hpage_pincount_available(page)) > - atomic_set(compound_pincount_ptr(page), 0); > + prep_compound_head(page, order); > } > > #ifdef CONFIG_DEBUG_PAGEALLOC > -- > 2.17.1 >