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.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, 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 6DBB7C2D0A8 for ; Mon, 28 Sep 2020 17:56:26 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 06DC122204 for ; Mon, 28 Sep 2020 17:56:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=sent.com header.i=@sent.com header.b="Q/ZciFth"; dkim=temperror (0-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="m/+0TnpP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 06DC122204 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=sent.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0F10890001B; Mon, 28 Sep 2020 13:55:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04E7F90001A; Mon, 28 Sep 2020 13:55:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB7C190001C; Mon, 28 Sep 2020 13:55:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0044.hostedemail.com [216.40.44.44]) by kanga.kvack.org (Postfix) with ESMTP id C2D1B90001A for ; Mon, 28 Sep 2020 13:55:30 -0400 (EDT) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 804098249980 for ; Mon, 28 Sep 2020 17:55:30 +0000 (UTC) X-FDA: 77313222420.03.eyes71_301587527183 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin03.hostedemail.com (Postfix) with ESMTP id 3089628A4EA for ; Mon, 28 Sep 2020 17:55:30 +0000 (UTC) X-HE-Tag: eyes71_301587527183 X-Filterd-Recvd-Size: 8110 Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by imf08.hostedemail.com (Postfix) with ESMTP for ; Mon, 28 Sep 2020 17:55:29 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.west.internal (Postfix) with ESMTP id 7A193EAB; Mon, 28 Sep 2020 13:55:27 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 28 Sep 2020 13:55:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sent.com; h=from :to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; s=fm1; bh=nnBLzQcFmKx5h yU3MIHb5MmWVYU/HVsQSzx32OV/OSc=; b=Q/ZciFth/aUmefHcm5EEVJELC9iNH jeR9dbHWioBEqE/AQ1yutvLyEj4hU6hOLz59KedvxWktTRaCGByiMufg69lzGXJR D0QlWAQgPSH15WLLVc1hUf8mi8U/zZw49tSrvyuP3hoyCCkDllofewr1+yfQLxD3 AlNHKtIKemiFFprSRiMEOM3rLwM4la+sQ0ciljZOmBKyNWZCyCBwZf4CR2ZTWxLa 7VJQPkPU2ZrFpPb29mIdUEWQSRV6f9laE4+HqFzONBNcE4b1rBX00sxfy0E82l+1 Ygj3iQfyPr/sWW7uUZAigLaqkR2OGcrdMbbIMl8vcs/IKsgig769j1iPw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:reply-to:subject :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=nnBLzQcFmKx5hyU3MIHb5MmWVYU/HVsQSzx32OV/OSc=; b=m/+0TnpP BeKneCabUUV20m6siEpEtpF9cvZHM+kwxIAEa9SFkwLmPO9NzVOrYOe2BL2FMNNU pKPb+1YUyU4b74FLtTSRzYWDNiHpbIN0ZhSJeCXsrFrN7bD5Nn71e86J4sVvu2cF Y3U0xB/7yEvZvAvD7y4b8/DD8aYAEGEowQIsxI5evefDcvn4gKypf0vgQ9Ckd7E+ rb88xMHh9pDHu2dJ2wf+U9mpcDDqqpGwVRGIsIli10+qd3cop0xRN7T+kgGRBLEr BbY0u4xpMiwQNHKzCnoNO0EK2ztXw5V7OOFOrHqNzUQLYTLS7Qzlll4OMkRuzb3e NDvQ7CoZBYmbig== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrvdeigdeliecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhhrggfgsedtkeertdertddtnecuhfhrohhmpegkihcujggr nhcuoeiiihdrhigrnhesshgvnhhtrdgtohhmqeenucggtffrrghtthgvrhhnpeduhfffve ektdduhfdutdfgtdekkedvhfetuedufedtgffgvdevleehheevjefgtdenucfkphepuddv rdegiedruddtiedrudeigeenucevlhhushhtvghrufhiiigvpeduvdenucfrrghrrghmpe hmrghilhhfrhhomhepiihirdihrghnsehsvghnthdrtghomh X-ME-Proxy: Received: from nvrsysarch6.NVidia.COM (unknown [12.46.106.164]) by mail.messagingengine.com (Postfix) with ESMTPA id 939873064610; Mon, 28 Sep 2020 13:55:26 -0400 (EDT) From: Zi Yan To: linux-mm@kvack.org Cc: "Kirill A . Shutemov" , Roman Gushchin , Rik van Riel , Matthew Wilcox , Shakeel Butt , Yang Shi , Jason Gunthorpe , Mike Kravetz , Michal Hocko , David Hildenbrand , William Kucharski , Andrea Arcangeli , John Hubbard , David Nellans , linux-kernel@vger.kernel.org, Zi Yan Subject: [RFC PATCH v2 24/30] mm: madvise: add page size options to MADV_HUGEPAGE and MADV_NOHUGEPAGE. Date: Mon, 28 Sep 2020 13:54:22 -0400 Message-Id: <20200928175428.4110504-25-zi.yan@sent.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200928175428.4110504-1-zi.yan@sent.com> References: <20200928175428.4110504-1-zi.yan@sent.com> Reply-To: Zi Yan 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: From: Zi Yan It allows user to specify up to what page size kernel will generate THPs to back up the memory range in madvise. Because we now have PMD and PUD THPs, they require different amount of kernel effort to be generated, and we want to prevent user from getting long page fault latency if we always try to allocate PUD THPs first. Signed-off-by: Zi Yan --- include/uapi/asm-generic/mman-common.h | 23 +++++++++++++++++++++++ mm/khugepaged.c | 1 + mm/madvise.c | 17 +++++++++++++++-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/include/uapi/asm-generic/mman-common.h b/include/uapi/asm-ge= neric/mman-common.h index f94f65d429be..8009acb55fca 100644 --- a/include/uapi/asm-generic/mman-common.h +++ b/include/uapi/asm-generic/mman-common.h @@ -6,6 +6,7 @@ Author: Michael S. Tsirkin , Mellanox Technologies = Ltd. Based on: asm-xxx/mman.h */ +#include =20 #define PROT_READ 0x1 /* page can be read */ #define PROT_WRITE 0x2 /* page can be written */ @@ -80,4 +81,26 @@ #define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ PKEY_DISABLE_WRITE) =20 + +/* + * Huge page size encoding when MADV_HUGEPAGE is specified, and a huge p= age + * size other than the default is desired. See hugetlb_encode.h. + */ +#define MADV_HUGEPAGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT +#define MADV_HUGEPAGE_MASK HUGETLB_FLAG_ENCODE_MASK +#define MADV_BEHAVIOR_MASK ((1<vm_flags needs to * take mmap_lock for writing. Others, which simply traverse vmas, need @@ -74,7 +87,7 @@ static long madvise_behavior(struct vm_area_struct *vma= , pgoff_t pgoff; unsigned long new_flags =3D vma->vm_flags; =20 - switch (behavior) { + switch (get_behavior(behavior)) { case MADV_NORMAL: new_flags =3D new_flags & ~VM_RAND_READ & ~VM_SEQ_READ; break; @@ -953,7 +966,7 @@ madvise_vma(struct vm_area_struct *vma, struct vm_are= a_struct **prev, static bool madvise_behavior_valid(int behavior) { - switch (behavior) { + switch (get_behavior(behavior)) { case MADV_DOFORK: case MADV_DONTFORK: case MADV_NORMAL: --=20 2.28.0