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=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 5FDADC433DB for ; Thu, 11 Feb 2021 16:24:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CD15964E95 for ; Thu, 11 Feb 2021 16:24:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CD15964E95 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=soleen.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 182116B0111; Thu, 11 Feb 2021 11:24:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 10C746B0112; Thu, 11 Feb 2021 11:24:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEBC26B0113; Thu, 11 Feb 2021 11:24:38 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0175.hostedemail.com [216.40.44.175]) by kanga.kvack.org (Postfix) with ESMTP id D0E196B0111 for ; Thu, 11 Feb 2021 11:24:38 -0500 (EST) Received: from smtpin09.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id A00E31EE6 for ; Thu, 11 Feb 2021 16:24:38 +0000 (UTC) X-FDA: 77806510236.09.spot94_59007d42761a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin09.hostedemail.com (Postfix) with ESMTP id 87D6C180AD817 for ; Thu, 11 Feb 2021 16:24:38 +0000 (UTC) X-HE-Tag: spot94_59007d42761a X-Filterd-Recvd-Size: 8560 Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) by imf11.hostedemail.com (Postfix) with ESMTP for ; Thu, 11 Feb 2021 16:24:38 +0000 (UTC) Received: by mail-qv1-f41.google.com with SMTP id v19so2812306qvl.7 for ; Thu, 11 Feb 2021 08:24:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Ufntx25tuWpjxsF06Bkywh8J0szWGmEjnxPrz0f+TBc=; b=TvNCbT66pFSe3p8Xkp76H8muh5jL/l2PbIgtvVK1gHwcltperHmaEqgwn6oQhHUaIk U67Ath/wNcOYztGbVhWraX+NWPiLCW3D8+DR9fevz8UHFVVQauuelyjuJDm9oqRhz89M LPwi5DXGzxciP6YCVzo2+bwM5OtovbF/7e8otVoXzmOdy7VoSYQlCsm+RvOwR7iIUV6F odIoqynwSW702ZYrda1g3szn/ztBT/FGFzag6NhXJPnFiii29kG3GX1kpJ0RomhzWqmb Cci+0C4EZ8tzIkxxcZ13iqYvUEdKrI95d/qN6kF85TmExaQ+RhC4HW9n08MLir09/7VA bryQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ufntx25tuWpjxsF06Bkywh8J0szWGmEjnxPrz0f+TBc=; b=Q1I4c01Ex+0IrMp0imJ5Fz0mlIQpiuHoM0WU0mtDyZuRC5M2H0Prr4Q/tH8aX5aG/V DbHMx8XgC3cyAqpgpKZtnKnmfe+46bkLxO8eOzspPokH4Z+EzQZcewyukrDKNmICGS4+ aYgi/hSyCqrac5tEL1v/9TLdx1D/OUrRBNloLyEHdDoumwTET2cNI7IFXbaGN9XqQh4F c5pKOSQ164QLzgTI9ZKgIF7izVTxWx2g3/7r+xtjz7kQXPT+LZXcdz+5wc22eGAQlK56 41MkuG90R6ZdQFQfeLf5wpCB0AIeXRtLg3+PKyBsJtAG1PdsBWryuITDsdBYGsHNO9Gu 0aBA== X-Gm-Message-State: AOAM533sN/KLaQlWOPqEtksLyeXQTa3g/IVZ2ks18hZC8ZqwYg+qMVAD Ik1d7L+HXCOjU3Nj1QTEVVHVlA== X-Google-Smtp-Source: ABdhPJwJJeVBsCfzNY+B9NzcUIyqoVOG4NYWe1VSfprHJtmGisgKtUjVY3jmgNij3Hu+A9h3Ru4+vA== X-Received: by 2002:a0c:b998:: with SMTP id v24mr8318876qvf.4.1613060677409; Thu, 11 Feb 2021 08:24:37 -0800 (PST) Received: from localhost.localdomain (c-73-69-118-222.hsd1.nh.comcast.net. [73.69.118.222]) by smtp.gmail.com with ESMTPSA id i23sm3831778qtq.42.2021.02.11.08.24.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 08:24:36 -0800 (PST) From: Pavel Tatashin To: pasha.tatashin@soleen.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, vbabka@suse.cz, mhocko@suse.com, david@redhat.com, osalvador@suse.de, dan.j.williams@intel.com, sashal@kernel.org, tyhicks@linux.microsoft.com, iamjoonsoo.kim@lge.com, mike.kravetz@oracle.com, rostedt@goodmis.org, mingo@redhat.com, jgg@ziepe.ca, peterz@infradead.org, mgorman@suse.de, willy@infradead.org, rientjes@google.com, jhubbard@nvidia.com, linux-doc@vger.kernel.org, ira.weiny@intel.com, linux-kselftest@vger.kernel.org, jmorris@namei.org Subject: [PATCH v10 05/14] mm cma: rename PF_MEMALLOC_NOCMA to PF_MEMALLOC_PIN Date: Thu, 11 Feb 2021 11:24:18 -0500 Message-Id: <20210211162427.618913-6-pasha.tatashin@soleen.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210211162427.618913-1-pasha.tatashin@soleen.com> References: <20210211162427.618913-1-pasha.tatashin@soleen.com> MIME-Version: 1.0 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: PF_MEMALLOC_NOCMA is used ot guarantee that the allocator will not return pages that might belong to CMA region. This is currently used for long term gup to make sure that such pins are not going to be done on any CMA pages. When PF_MEMALLOC_NOCMA has been introduced we haven't realized that it is focusing on CMA pages too much and that there is larger class of pages th= at need the same treatment. MOVABLE zone cannot contain any long term pins a= s well so it makes sense to reuse and redefine this flag for that usecase a= s well. Rename the flag to PF_MEMALLOC_PIN which defines an allocation context which can only get pages suitable for long-term pins. Also re-name: memalloc_nocma_save()/memalloc_nocma_restore to memalloc_pin_save()/memalloc_pin_restore() and make the new functions common. Signed-off-by: Pavel Tatashin Reviewed-by: John Hubbard Acked-by: Michal Hocko --- include/linux/sched.h | 2 +- include/linux/sched/mm.h | 21 +++++---------------- mm/gup.c | 4 ++-- mm/hugetlb.c | 4 ++-- mm/page_alloc.c | 4 ++-- 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 96837243931a..62c639d67fe3 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1576,7 +1576,7 @@ extern struct pid *cad_pid; #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ #define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddl= e with cpus_mask */ #define PF_MCE_EARLY 0x08000000 /* Early kill for mce process poli= cy */ -#define PF_MEMALLOC_NOCMA 0x10000000 /* All allocation request will have= _GFP_MOVABLE cleared */ +#define PF_MEMALLOC_PIN 0x10000000 /* Allocation context constrained to= zones which allow long term pinning. */ #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as fr= eezable */ #define PF_SUSPEND_TASK 0x80000000 /* This thread called freeze_pr= ocesses() and should not be frozen */ =20 diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h index 1ae08b8462a4..5f4dd3274734 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -270,29 +270,18 @@ static inline void memalloc_noreclaim_restore(unsig= ned int flags) current->flags =3D (current->flags & ~PF_MEMALLOC) | flags; } =20 -#ifdef CONFIG_CMA -static inline unsigned int memalloc_nocma_save(void) +static inline unsigned int memalloc_pin_save(void) { - unsigned int flags =3D current->flags & PF_MEMALLOC_NOCMA; + unsigned int flags =3D current->flags & PF_MEMALLOC_PIN; =20 - current->flags |=3D PF_MEMALLOC_NOCMA; + current->flags |=3D PF_MEMALLOC_PIN; return flags; } =20 -static inline void memalloc_nocma_restore(unsigned int flags) +static inline void memalloc_pin_restore(unsigned int flags) { - current->flags =3D (current->flags & ~PF_MEMALLOC_NOCMA) | flags; + current->flags =3D (current->flags & ~PF_MEMALLOC_PIN) | flags; } -#else -static inline unsigned int memalloc_nocma_save(void) -{ - return 0; -} - -static inline void memalloc_nocma_restore(unsigned int flags) -{ -} -#endif =20 #ifdef CONFIG_MEMCG DECLARE_PER_CPU(struct mem_cgroup *, int_active_memcg); diff --git a/mm/gup.c b/mm/gup.c index b1f6d56182b3..489bc02fc008 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1661,7 +1661,7 @@ static long __gup_longterm_locked(struct mm_struct = *mm, long rc; =20 if (gup_flags & FOLL_LONGTERM) - flags =3D memalloc_nocma_save(); + flags =3D memalloc_pin_save(); =20 rc =3D __get_user_pages_locked(mm, start, nr_pages, pages, vmas, NULL, gup_flags); @@ -1670,7 +1670,7 @@ static long __gup_longterm_locked(struct mm_struct = *mm, if (rc > 0) rc =3D check_and_migrate_cma_pages(mm, start, rc, pages, vmas, gup_flags); - memalloc_nocma_restore(flags); + memalloc_pin_restore(flags); } return rc; } diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 0b7079dd0d35..1d909879c1b4 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1044,10 +1044,10 @@ static void enqueue_huge_page(struct hstate *h, s= truct page *page) static struct page *dequeue_huge_page_node_exact(struct hstate *h, int n= id) { struct page *page; - bool nocma =3D !!(current->flags & PF_MEMALLOC_NOCMA); + bool pin =3D !!(current->flags & PF_MEMALLOC_PIN); =20 list_for_each_entry(page, &h->hugepage_freelists[nid], lru) { - if (nocma && is_migrate_cma_page(page)) + if (pin && is_migrate_cma_page(page)) continue; =20 if (PageHWPoison(page)) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0b55c9c95364..c843dd64a74a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3814,8 +3814,8 @@ static inline unsigned int current_alloc_flags(gfp_= t gfp_mask, #ifdef CONFIG_CMA unsigned int pflags =3D current->flags; =20 - if (!(pflags & PF_MEMALLOC_NOCMA) && - gfp_migratetype(gfp_mask) =3D=3D MIGRATE_MOVABLE) + if (!(pflags & PF_MEMALLOC_PIN) && + gfp_migratetype(gfp_mask) =3D=3D MIGRATE_MOVABLE) alloc_flags |=3D ALLOC_CMA; =20 #endif --=20 2.25.1