From patchwork Tue May 30 08:07:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Fengwei X-Patchwork-Id: 100651 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2017016vqr; Tue, 30 May 2023 01:17:24 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4WPNPEtSpxoKS7xiB6CCuYtP8pdwoUhfnXlCUvEv3N+BHkqp9Moj9kO/E3STb4fGX7Xr2s X-Received: by 2002:a17:903:2352:b0:1a2:a904:c42e with SMTP id c18-20020a170903235200b001a2a904c42emr1958203plh.24.1685434643977; Tue, 30 May 2023 01:17:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685434643; cv=none; d=google.com; s=arc-20160816; b=XiidSucVLWcm6/G8FFe4TYivVZCdqWVJz2nCN/nqUkbiNDGZMrTMIv9q08v65GjCcr fT9zNRqu4JIj2ND9GbOPvikDYiRHRgIb71s79d4bGIOlc6asnbHIs6znq5pkvisZ9V3I Fh8M3LoDajve1mRLESu3kSXJqj1/VcUUqcOoDWo8Wr71D8gIvRcIC29AGbuPMG7yuSOy Ozo5NVE2t3nv2QgGI8SvuJAaSP4ByfSUutBb/+d+Oz+khqXSgxTt/if2HjqrSuAOycwI 4U5rK/cg4HA+XndyA/90NjdO2RMSUe+e1hQkWR3q5OG8rohrSEriQ+it5vngrFZfMYWy AyEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QcmAtoapKK7yru7JzizE776svgCIjig/xw1n/cwyuXY=; b=gUgVZIj71hTwaCisRt/f+XVLKXP2PTsPloOsAJbMmNfof1ZmTXhuMmrFxJD06bIo6i xfwFNfnlDbl0dZ2QhagXgB2Iw46yJogAzg4VMgsBrtjY/uJs+cLTmVqizVPt9j2rlPAg wySO7QgQ/kozHKm3nyTmdK5pdsBaN5H1gPcsgotntsIuZA8QjB0ZcIaBytxTuas1HaBI 1HrdzlO6VpmjmKYdHMI3cltD7+L7UThj/xE6RC/CDdZ4Onx+3hsoFi1j2kXOlwU8kHe0 xjFXI4rtwDE23C8GqStd2tW1AXrwIfm2blDaYx/eH0Byl64wKeuXqChtDZ8rhlvm85ao BIFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ng9wZFYy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q17-20020a170902dad100b001b0603829afsi813117plx.405.2023.05.30.01.17.09; Tue, 30 May 2023 01:17:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ng9wZFYy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230105AbjE3IGn (ORCPT + 99 others); Tue, 30 May 2023 04:06:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229977AbjE3IGb (ORCPT ); Tue, 30 May 2023 04:06:31 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A991118; Tue, 30 May 2023 01:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685433979; x=1716969979; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OGmxL+UqnOoB6DUSYUyFxvx/lt+FRL5wf9KNfFiPBCY=; b=ng9wZFYynhWGKyhXbvZ8W/P5iR1hoO/6ZKbiZ8paLvOcP0prkQBT2Bii rYdRFbSVvVFgtjCjQdGvnRHoHcStbvYubxxJKRD4G2AIhsRSlIHoBJGod VElCzvwg6bJy6vFyJHy4E9QgM0RcVhwTsb/sOQ1QpNTqzMZhYXubQDcJm 2qMEq31CD9QtN793Yt64HAtRZwsUWVx4M+06/bd26ixnhB6gS0EHMCijf BVNnSW7G/mZ7OIQ/asqB4UajzbbH7+myCLAYB5cZAIiJV2UGkmqkVWIvO ARvspQATOe9dyQVBq8oY3MOD8FvoKaFS/+Tvizu1u51b3NzmkEsmTBH38 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="418332094" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="418332094" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2023 01:06:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="739426336" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="739426336" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by orsmga001.jf.intel.com with ESMTP; 30 May 2023 01:06:16 -0700 From: Yin Fengwei To: willy@infradead.org, ryan.roberts@arm.com, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: fengwei.yin@intel.com Subject: [PATCH 1/4] filemap: avoid interfere with xas.xa_index Date: Tue, 30 May 2023 16:07:28 +0800 Message-Id: <20230530080731.1462122-2-fengwei.yin@intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230530080731.1462122-1-fengwei.yin@intel.com> References: <20230530080731.1462122-1-fengwei.yin@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767306316821849653?= X-GMAIL-MSGID: =?utf-8?q?1767306316821849653?= Ryan noticed 1% performance regression for kernel build with the ranged file map with ext4 file system. It was later identified wrong xas.xa_index update in filemap_map_pages() when folio is not large folio. Matthew suggested to use XArray API instead of touch xas.xa_index directly at [1]. [1] https://lore.kernel.org/linux-mm/ZBho6Q6Xq%2FYqRmBT@casper.infradead.org/ Signed-off-by: Yin Fengwei Suggested-by: Matthew Wilcox --- mm/filemap.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/mm/filemap.c b/mm/filemap.c index 40be33b5ee46..fdb3e0a339b3 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3416,10 +3416,10 @@ static bool filemap_map_pmd(struct vm_fault *vmf, struct folio *folio, return false; } -static struct folio *next_uptodate_page(struct folio *folio, - struct address_space *mapping, - struct xa_state *xas, pgoff_t end_pgoff) +static struct folio *next_uptodate_folio(struct xa_state *xas, + struct address_space *mapping, pgoff_t end_pgoff) { + struct folio *folio = xas_next_entry(xas, end_pgoff); unsigned long max_idx; do { @@ -3457,22 +3457,6 @@ static struct folio *next_uptodate_page(struct folio *folio, return NULL; } -static inline struct folio *first_map_page(struct address_space *mapping, - struct xa_state *xas, - pgoff_t end_pgoff) -{ - return next_uptodate_page(xas_find(xas, end_pgoff), - mapping, xas, end_pgoff); -} - -static inline struct folio *next_map_page(struct address_space *mapping, - struct xa_state *xas, - pgoff_t end_pgoff) -{ - return next_uptodate_page(xas_next_entry(xas, end_pgoff), - mapping, xas, end_pgoff); -} - /* * Map page range [start_page, start_page + nr_pages) of folio. * start_page is gotten from start by folio_page(folio, start) @@ -3543,12 +3527,11 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, unsigned long addr; XA_STATE(xas, &mapping->i_pages, start_pgoff); struct folio *folio; - unsigned int mmap_miss = READ_ONCE(file->f_ra.mmap_miss); vm_fault_t ret = 0; int nr_pages = 0; rcu_read_lock(); - folio = first_map_page(mapping, &xas, end_pgoff); + folio = next_uptodate_folio(&xas, mapping, end_pgoff); if (!folio) goto out; @@ -3570,15 +3553,14 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, ret |= filemap_map_folio_range(vmf, folio, xas.xa_index - folio->index, addr, nr_pages); - xas.xa_index += nr_pages; folio_unlock(folio); folio_put(folio); - } while ((folio = next_map_page(mapping, &xas, end_pgoff)) != NULL); + folio = next_uptodate_folio(&xas, mapping, end_pgoff); + } while (folio); pte_unmap_unlock(vmf->pte, vmf->ptl); out: rcu_read_unlock(); - WRITE_ONCE(file->f_ra.mmap_miss, mmap_miss); return ret; } EXPORT_SYMBOL(filemap_map_pages); From patchwork Tue May 30 08:07:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Fengwei X-Patchwork-Id: 100665 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2028247vqr; Tue, 30 May 2023 01:43:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7utXidBojR1YyBfKjYOiX2Jh7HODgOQXeO6yo4xDbhrNrAEYCodrUpL2gl9XoGjGwVsewH X-Received: by 2002:a17:90a:ebcb:b0:255:8a33:858c with SMTP id cf11-20020a17090aebcb00b002558a33858cmr1827861pjb.23.1685436219178; Tue, 30 May 2023 01:43:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685436219; cv=none; d=google.com; s=arc-20160816; b=WecPziIjLnt7PKhEu6l64XP5UHlK0DriivP3nnkFkKlH1bqgB28EcxJlHUm3Njtz52 Bfw/b6+/I0z/87/NfgzXQEx7h1ioQNiIvVs4KejHKKBSLuCfjVFJa/YPBcSps/9mqc4p wsr4mMkkFIXCgNiN/FmRPvCS9x4TC6s9Niyn7GF95g/KmJ4TsMvHtoeNI68N5jjjcsaF ceQYJEz5D2AWwRsy3hORJInhvqs16f6jQ5tWWTLjAstQqSmj9rMKKRBKB3QPX4ipBzX6 KTrvR3NgzlduhFjKn27agmzeSjTJLJ8XmQe58eVvPPl1juWcn5kSbnM2v63Y0FjuK3uT S3TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=jBPCVDHZuQ2wYY4bZMS/Jy+G2//+D+pxOEKs2w0BXQg=; b=n7TDNpqeHpfyQ64JX6J3QiJXcZQSdp8ZXkUUIvlXPvrpqcMAYoCBIomOUOgK/xlPfU HmAuso03NyNmFYLnB+d29DdKSZUul1IbKh3tuPVHZJu+wl6refh+8nhsocjYnxsMEre6 GNtoVWRtMd0rCSQ8F/fn+qjmFvbaZ9b/yx7xzOOYkXcJ8q1rnemaZdetmmjTgKAXisRw 8+EDwC7hlNLHuUilN1yK4+QGm9fQlan9QWTMB0I0H82Cj5FP2WaUL0m640Da45ZYPGsl YV6HzCSK2K8BttB3ISThpTXUoD36iBNxSySsxzQSlu/sdkmODIradDQJV0Xk8w8dIjr+ fT3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=J8yG1yGd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e15-20020a17090ab38f00b0024799a3324dsi3725264pjr.162.2023.05.30.01.43.25; Tue, 30 May 2023 01:43:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=J8yG1yGd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230162AbjE3IHR (ORCPT + 99 others); Tue, 30 May 2023 04:07:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57470 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230047AbjE3IGv (ORCPT ); Tue, 30 May 2023 04:06:51 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15DE3E45; Tue, 30 May 2023 01:06:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685433993; x=1716969993; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JECnRzWsjoveNrvZKVFqMJv39FXO8gY9Cjv6t+BF/f4=; b=J8yG1yGdFAvuqe/XMreBBHjOZabgraIDKMCmT5mqNPDiaWFYXf8Hnx71 t0oMh61eU8Om+RHHcg5tC0HWAwQI+SBDNBxPS84OmN75WnMkBEO9GAMLe yM16AvbNDUtEGMtrFxoWTEaG6NsYIJ+6DT3eJjVQ01krDwxEYwUBsv/jc ZFxGxGy821NvJHXIFB2N4WymJzNbVUAyUWrKPhSjpFgKaUTXUt62jRQDa 5gN9nMuIAZhDm9Z82M7vm/AOrfeNUIZPHHbw0WEDzWQix09y4waxqPBqO Wh7qiinhU7A+K/PxpTzao/5qsr1HnFL22Dy3xv1qMpVpZ+k+l2ZYlQXLT Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="418332163" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="418332163" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2023 01:06:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="739426363" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="739426363" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by orsmga001.jf.intel.com with ESMTP; 30 May 2023 01:06:30 -0700 From: Yin Fengwei To: willy@infradead.org, ryan.roberts@arm.com, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: fengwei.yin@intel.com Subject: [PATCH 2/4] rmap: fix typo in folio_add_file_rmap_range() Date: Tue, 30 May 2023 16:07:29 +0800 Message-Id: <20230530080731.1462122-3-fengwei.yin@intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230530080731.1462122-1-fengwei.yin@intel.com> References: <20230530080731.1462122-1-fengwei.yin@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767307968712871466?= X-GMAIL-MSGID: =?utf-8?q?1767307968712871466?= The "first" should be used to compare with COMPOUND_MAPPED instead of "nr". Signed-off-by: Yin Fengwei --- mm/rmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/rmap.c b/mm/rmap.c index ec52d7f264aa..b352c14da16c 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1330,7 +1330,7 @@ void folio_add_file_rmap_range(struct folio *folio, struct page *page, first = atomic_inc_and_test(&page->_mapcount); if (first && folio_test_large(folio)) { first = atomic_inc_return_relaxed(mapped); - first = (nr < COMPOUND_MAPPED); + first = (first < COMPOUND_MAPPED); } if (first) From patchwork Tue May 30 08:07:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Fengwei X-Patchwork-Id: 100657 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2020056vqr; Tue, 30 May 2023 01:24:38 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ770dp90M37SnfT14MLm8//IseWN2EC/XHeDn7Z+nGbn1ZUDhzLAf7JbeJkwlqstjG/85Tl X-Received: by 2002:a17:902:c20d:b0:1ac:8db3:d4e3 with SMTP id 13-20020a170902c20d00b001ac8db3d4e3mr1440350pll.37.1685435077850; Tue, 30 May 2023 01:24:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685435077; cv=none; d=google.com; s=arc-20160816; b=nBH1oQfFkghSYXIUR5h+XtZ9nSN2XUwdH04l6DLd9mOnu358epFQKfQ+AVSRDcqaSf FQUNdGv0zpbJ1sK8fLca2ntLq3J+pDJHIEFj93q+d3h5JbZhNR61sBtdWOsdDFL7aBNs 5hsCXS1FBcoksoC498z98HcCSo6tlmohU1NnGYSTiQZEDsSwsOCj4BCmqnKE0Wix9+D7 7xfbuVhXcIg1QJPI0jDu1H14cd3zAbUVpjC62FJc3j1aZJwjmEgR9bMjERETGW+Axtll V24ojrhhyahtnn6lGfTG1GeeGMEReH02i8pAi/hMhk7q8DXBLkj3y5FWxRqJW2UJffPJ EloQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=PKZNCA+gImQ6X/nKXu5Qkif03K0WFVHkt6kXEgXM2N4=; b=xlct0GUx5rpcqsddkPp0eQuyc+vY7CM5RJpeqCfwjJ9pcFADth8+Rsz1/n3AOHl4n4 NPRi+y/7BjWJ6zIvK7Xut+hnbGep8yKeoobwwny8ReARUeoLD/ZTvwsnMLeVilrhgwiW PW2rr1SZ9f4uEGLYxxR1eroy3aFZVr1pFlosQ13JzjHPjy7U5BZTUCGNGCqVbYFCzIh0 fp5JdahyshU6oEXXS5eRuWhPYOHj/da1n4O2V3C/mWkwNWv01nqyd5OF5rGJLTO7pSGB vCXJeAjx19Mk7ABxr80LdC5Sj75vJbJnwC59pAmOPQ+kz5jbVXt94wUjXBYabzmwVOY+ yWEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ePA0Sj4e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w4-20020a1709027b8400b001a51bb4ad81si10859663pll.44.2023.05.30.01.24.23; Tue, 30 May 2023 01:24:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ePA0Sj4e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230100AbjE3IHe (ORCPT + 99 others); Tue, 30 May 2023 04:07:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230104AbjE3IHL (ORCPT ); Tue, 30 May 2023 04:07:11 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A2D3E5F; Tue, 30 May 2023 01:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685434006; x=1716970006; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3NUJ2cV526DtOmRsdjgiB8BAWkISfmdbH9OrsnpKKCA=; b=ePA0Sj4et55eLFzeuvoOqqtw9lnmEFV7f/t413xNcDEHZiWCYdZlUnQD lvEqYmfdmbho0vUVORm+9jOtpY/B13XvgSmYXgRptxe/7+U3dO10YcOKK QfT701J0TQYILBE9/z63L364amL2YdjGrfbc8s2H2qFOKx/L/MmbyMLqW w5mansNW0WptJ6mRYmvb3GnffIcqf0Dwc7miErg493dZ3bkJpb5HitIOW B7OLD3R0Pi4h3CC0xxvxGz1WRab2S59R9Z4+5pb78PBpd557Vc6i+HrQG iFFxJqRos3LK75H3Dis8UTCGght0r/pVENy/J+DEfU0w7dxoWarhKeTyR A==; X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="335196940" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="335196940" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2023 01:06:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="706326971" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="706326971" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by orsmga002.jf.intel.com with ESMTP; 30 May 2023 01:06:43 -0700 From: Yin Fengwei To: willy@infradead.org, ryan.roberts@arm.com, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: fengwei.yin@intel.com Subject: [PATCH 3/4] mm: mark PTEs referencing the accessed folio young Date: Tue, 30 May 2023 16:07:30 +0800 Message-Id: <20230530080731.1462122-4-fengwei.yin@intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230530080731.1462122-1-fengwei.yin@intel.com> References: <20230530080731.1462122-1-fengwei.yin@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767306772305795496?= X-GMAIL-MSGID: =?utf-8?q?1767306772305795496?= To allow using larger TLB entries, it's better to mark the PTEs of same folio accessed when setup the PTEs. Reported-by: Ryan Roberts Signed-off-by: Yin Fengwei --- mm/memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memory.c b/mm/memory.c index c359fb8643e5..2615ea552613 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4259,7 +4259,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio, struct vm_area_struct *vma = vmf->vma; bool uffd_wp = pte_marker_uffd_wp(vmf->orig_pte); bool write = vmf->flags & FAULT_FLAG_WRITE; - bool prefault = vmf->address != addr; + bool prefault = (addr > vmf->address) || ((addr + nr) < vmf->address); pte_t entry; flush_icache_pages(vma, page, nr); From patchwork Tue May 30 08:07:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Fengwei X-Patchwork-Id: 100654 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2018795vqr; Tue, 30 May 2023 01:21:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5O/7Qs7563aCT7EN3mLfmfZOqvU+WnWON4/4G6DHsifuxDUO/YTp8jhwj+OumSuBw2URlj X-Received: by 2002:a05:6a20:1610:b0:111:90f6:a847 with SMTP id l16-20020a056a20161000b0011190f6a847mr1772921pzj.38.1685434892964; Tue, 30 May 2023 01:21:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685434892; cv=none; d=google.com; s=arc-20160816; b=oTzB9kh/dW9B43+vXhoa38JYKNNDXsdl+Vv/j5hWCUeXLRZtHucZiWXJ9dnjnKao01 ovTqlJH6eG5C5hO6L7J7nEJI9FTB5EnI+lLm2xQvFLw+VwDk6Zx+gM/PYGRbwT5Ip5FC gjOSlyE5NaIJK4g81hSuRPiX8LzKYwU032V7YrVzK1idheYngN67xQ+XZRqkjYUEk/C5 ebZZ671R0fnyMfBK0g6X3Jk7QxachF28x5ihH1q6wwaaSG9Q9QAqJePIzyju6k0VbQOq lT5RWRTHlUg7hWA7meBoWWmfD7Tg2WdCwxrsxsJO7B+QtTAtDaUWoQPIGGhBIk8cJ94Z qbyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YnZxXReVL1I6DCXtGtPRve4mJl7NAfBnjCqu1uEcaFE=; b=pYwI+jIzNwp8Fs2x31YUGY1XY1ghapRcOk0y7W1zMoI5iFQcvJTiCPBmZXiHo3oO0i OJZfzPx6gAQ+vav14ZjQEW6oYJGCiPD0fpLM+t0aK1jecnnx1R3npumaVRyjQcv6yaP6 z1GE0/UNjboIjiPO83sMukNKbuLKxTremAcikqE9LdBfzqd/PO5dkMeQULDh3L1zZ16J 6ljFrVo79t4obm+CwnwKjBp3+BO7QNTUm4tq5z3fNpt+p7rNg+CUhLdPfGFKMDxC3hOq BSkf+qYEcDnUqpmQbYtBkLBe5drwE+hfdCc123VuBN1C7IOBSuotQiM8dinDTBikPImG LmIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GrsIz0w5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n17-20020aa79851000000b0063b5e220edasi1288917pfq.400.2023.05.30.01.21.19; Tue, 30 May 2023 01:21:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GrsIz0w5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230146AbjE3IH6 (ORCPT + 99 others); Tue, 30 May 2023 04:07:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230087AbjE3IH3 (ORCPT ); Tue, 30 May 2023 04:07:29 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CC6E196; Tue, 30 May 2023 01:07:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685434023; x=1716970023; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iLg8+BuQb6cfAwix3TzfWOi+K6oPegJSPNVGDscU724=; b=GrsIz0w5JHLXgZKnKvK2hqHcRv02qPfxF2wM8z+g9GqWmhw5E3FqLUHP Vabw1/vyKCeIEvZyCyNLxj+EIHLytfhyOkY8Zb/TiN5Fk5VKUsg+Rj/yL n+/UjPZQ6ZNrYm104t6Y4Mw0Q7xUrhYutzp928iwST7MFHETzlh1llD6j 4YbjbhLo7sLfEypGH9/1t8oGVL3XdiXMnN2MwZWRngkDF62PqLVfq173G sDyobAf4F7FFd/5WiJVP52dfRSShK5O/1VUg178IfE0okAH/eED36ume6 QPixbGkx5df52EM817hDfMO7nEg7ZJaogsYfDqRXGASJY4+EjTUf+EARg g==; X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="344349314" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="344349314" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2023 01:06:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="880678883" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="880678883" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by orsmga005.jf.intel.com with ESMTP; 30 May 2023 01:06:54 -0700 From: Yin Fengwei To: willy@infradead.org, ryan.roberts@arm.com, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: fengwei.yin@intel.com Subject: [PATCH 4/4] filemap: Check address range in filemap_map_folio_range() Date: Tue, 30 May 2023 16:07:31 +0800 Message-Id: <20230530080731.1462122-5-fengwei.yin@intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230530080731.1462122-1-fengwei.yin@intel.com> References: <20230530080731.1462122-1-fengwei.yin@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767306578268285550?= X-GMAIL-MSGID: =?utf-8?q?1767306578268285550?= With filemap_map_folio_range(), the addr is updated with range also. Address range checking is needed to make sure correct return value (VM_FAULT_NOPAGE) if vmf->address is handled. Signed-off-by: Yin Fengwei --- mm/filemap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mm/filemap.c b/mm/filemap.c index fdb3e0a339b3..0f4baba1cd31 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3488,15 +3488,15 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, if (!pte_none(vmf->pte[count])) goto skip; - if (vmf->address == addr) - ret = VM_FAULT_NOPAGE; - count++; continue; skip: if (count) { set_pte_range(vmf, folio, page, count, addr); folio_ref_add(folio, count); + if ((vmf->address < (addr + count * PAGE_SIZE)) && + (vmf->address >= addr)) + ret = VM_FAULT_NOPAGE; } count++; @@ -3509,6 +3509,9 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, if (count) { set_pte_range(vmf, folio, page, count, addr); folio_ref_add(folio, count); + if ((vmf->address < (addr + count * PAGE_SIZE)) && + (vmf->address >= addr)) + ret = VM_FAULT_NOPAGE; } vmf->pte = old_ptep;