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=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 13EE7C43461 for ; Tue, 8 Sep 2020 20:20:04 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id B78C020936 for ; Tue, 8 Sep 2020 20:20:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="rp3xthQ7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B78C020936 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 598326B0078; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 546AB6B007B; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4338E6B007D; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0216.hostedemail.com [216.40.44.216]) by kanga.kvack.org (Postfix) with ESMTP id 2B4BD6B0078 for ; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D9CE7181AEF10 for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) X-FDA: 77241010644.06.debt52_38165e3270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id A99DD100BA381 for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) X-HE-Tag: debt52_38165e3270d7 X-Filterd-Recvd-Size: 3730 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=qfwFE8JZF/ndkNobTqTg1e4Cd81Vp7P88oLtxC5rLfk=; b=rp3xthQ7df7hpuHXfU8xJc/9q+ ke6IlQULa0XRIbP9KTw9/RLQlS5Yylfuz+GzSKioIzyGudbNWSDKxZFv2j08tI5bzkh+fhn4PGerU NbRvI9yPkCuQ4CtHP5p+0cIbAaa9cPWrktMtrbP0uSRlL1msd7R0LESYhLm+FwzK2X1HL2A50XBQt iAjNvxzMR8KI+z8rvrhN+pC6D8v3SZ+K+nDOqKivr48jK3ye88jc3kks5z1e+KG5E+n4szTQ2a2/d v0tvvzDAfTgUPL01SLK3N0xDpjpdgX7aKeRKR/fDA8eMSN3dPm0ZAHUoRmZcL1xyv0sDtvECC6H6+ q2YOkAAA==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjia-0006nA-Av; Tue, 08 Sep 2020 19:55:52 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 08/11] mm/rmap: Fix assumptions of THP size Date: Tue, 8 Sep 2020 20:55:35 +0100 Message-Id: <20200908195539.25896-9-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: A99DD100BA381 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 Content-Transfer-Encoding: quoted-printable 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: Ask the page what size it is instead of assuming it's PMD size. Do this for anon pages as well as file pages for when someone decides to support that. Leave the assumption alone for pages which are PMD mapped; we don't currently grow THPs beyond PMD size, so we don't need to change this code yet. Signed-off-by: Matthew Wilcox (Oracle) --- mm/rmap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index 83cc459edc40..10f93129648c 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1205,7 +1205,7 @@ void page_add_file_rmap(struct page *page, bool com= pound) VM_BUG_ON_PAGE(compound && !PageTransHuge(page), page); lock_page_memcg(page); if (compound && PageTransHuge(page)) { - for (i =3D 0, nr =3D 0; i < HPAGE_PMD_NR; i++) { + for (i =3D 0, nr =3D 0; i < thp_nr_pages(page); i++) { if (atomic_inc_and_test(&page[i]._mapcount)) nr++; } @@ -1246,7 +1246,7 @@ static void page_remove_file_rmap(struct page *page= , bool compound) =20 /* page still mapped by someone else? */ if (compound && PageTransHuge(page)) { - for (i =3D 0, nr =3D 0; i < HPAGE_PMD_NR; i++) { + for (i =3D 0, nr =3D 0; i < thp_nr_pages(page); i++) { if (atomic_add_negative(-1, &page[i]._mapcount)) nr++; } @@ -1293,7 +1293,7 @@ static void page_remove_anon_compound_rmap(struct p= age *page) * Subpages can be mapped with PTEs too. Check how many of * them are still mapped. */ - for (i =3D 0, nr =3D 0; i < HPAGE_PMD_NR; i++) { + for (i =3D 0, nr =3D 0; i < thp_nr_pages(page); i++) { if (atomic_add_negative(-1, &page[i]._mapcount)) nr++; } @@ -1303,10 +1303,10 @@ static void page_remove_anon_compound_rmap(struct= page *page) * page of the compound page is unmapped, but at least one * small page is still mapped. */ - if (nr && nr < HPAGE_PMD_NR) + if (nr && nr < thp_nr_pages(page)) deferred_split_huge_page(page); } else { - nr =3D HPAGE_PMD_NR; + nr =3D thp_nr_pages(page); } =20 if (unlikely(PageMlocked(page))) --=20 2.28.0