Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp3268303lqp; Tue, 26 Mar 2024 04:51:51 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCURtcXAkyjt5Pz8HcsgP2tq/cRh5qwPvTXU1+iy7RJva6f0Zx3aTLoDNzF/My/xdIfDXdI99tUdreE/Pm0Ou9axzcSH6Zandu04RDUf3g== X-Google-Smtp-Source: AGHT+IHu1DwWuI83ZEuLBsPxwb77GhohSU32XN0YZJ5cwPH1W+Sp/rkoTgom5RCFqCoqalu8ZtpG X-Received: by 2002:a17:906:3499:b0:a47:1417:1dc5 with SMTP id g25-20020a170906349900b00a4714171dc5mr1856898ejb.56.1711453911456; Tue, 26 Mar 2024 04:51:51 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711453911; cv=pass; d=google.com; s=arc-20160816; b=0VGqboQB9tBOtXpCg/7khCABuRqNTKSvyL8CNCoIDwCsPklOkVpRTnYzF8SCqA25yv 9MNmoSURJ78Z8ianyAg0ITAZSM6wJhhRlK4+q//O9zOPAaMZiKs1Wa53asz2vDweZT7V rd6ihWdZwAqmD6ocaaiHRxhzQySuAZB+3GZ5wk0CoZ5WdU39dzoihwZE653yp6IDuFWo sH9+J9SYPH4IAC5nvHYaoJM38XqyUI7dT7Psmq5aNTfWpH6S9Y/t4cg/KLN3AV1PQOf5 pYeuMY79jbSIvviOFUa/BTMpGBDsNCz0gPSXB6RcZF0iKFQCF18szUNHQzedufuFpL9n VEUw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=AwEXLIJvfOIlKePIj3JTyBX7Gpl2aDHZTADkmkUue0Y=; fh=cX6fevSCX4GwlyFKhduzR2rC/JxBw/iyi+zuCYLj1Jk=; b=bEAMzXkMKcHd6lkVZJMIJc4SbdgHD8Ng+IrtlIc/tpzQRmDDkdeJ4P+4rKXktlmIU+ irzwxn9Cs3jrwg13M3ORbxUecC21W1RODMnc2UVL6t5n3zVAhPac99jRWU7L9jYGzLii Av+6TgwngXNxsipkgMUBCtkeizWam+wWCFeya+OYLGKOlClIEJgA/HONZ05rvDTSc8d7 9jomtgzL8ecVyWJ/aTVKcXYH/IX3aK82/1836EL2iVn+fghWwdBiDgmc1vjqMDqcEFFw As7RAa1Ma22V+O6INkBqmHY98PXx98uX2e3dJRJr3kd3NYVxZDK4XYjm/Io3SoXOHQx1 vSag==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.alibaba.com header.s=default header.b=E9YYTQLK; arc=pass (i=1 spf=pass spfdomain=linux.alibaba.com dkim=pass dkdomain=linux.alibaba.com dmarc=pass fromdomain=linux.alibaba.com); spf=pass (google.com: domain of linux-kernel+bounces-118923-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-118923-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.alibaba.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id nb19-20020a1709071c9300b00a4a37082313si1779350ejc.700.2024.03.26.04.51.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Mar 2024 04:51:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-118923-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.alibaba.com header.s=default header.b=E9YYTQLK; arc=pass (i=1 spf=pass spfdomain=linux.alibaba.com dkim=pass dkdomain=linux.alibaba.com dmarc=pass fromdomain=linux.alibaba.com); spf=pass (google.com: domain of linux-kernel+bounces-118923-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-118923-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.alibaba.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 32ABE1F62F4C for ; Tue, 26 Mar 2024 11:51:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D94D76E61D; Tue, 26 Mar 2024 11:51:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="E9YYTQLK" Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54D7D6BFD4 for ; Tue, 26 Mar 2024 11:51:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.98 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711453903; cv=none; b=SiySaDsl2+GwwaCfXUwEvzVkv84ce4Ywu3FyVewbBshzG6S8XIYEeWjbxPD+7nVjcuJOIFmzpQ8//ny4IpNpAi8dlyPmLpaku0AJlFr+ejx0dp7RiUgqtzdZf06TYG3GLC8ORtSsPfLIFqXcwr0gAOluniSNv4eQNicl3ILIoZ0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711453903; c=relaxed/simple; bh=CjMiHHK0L03KyOUlDKPhfGBdV6TJfoZKnXm4Ax2DJis=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=W0bvGR1PieKEtmZK0VGbGk+pVyXGK2bZrfG3SotR5OXMdLJrf5U38NV8m/YPXiZom94yo8QpYe0mQ3iH8VBpkFjvY0jopD9/kPredRlIuNpjc+iQ5BG9dVomTW2/OnuVE0sgwZMO/NvcgQxNUEXV4Uvkso7jf5EGxTeuxVcT6Ik= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=E9YYTQLK; arc=none smtp.client-ip=115.124.30.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1711453898; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=AwEXLIJvfOIlKePIj3JTyBX7Gpl2aDHZTADkmkUue0Y=; b=E9YYTQLKyaN0vUwzUblHt9XalptfA+r8h8ZDqSvFsVOgPv5ILyS38JIYSlnwTVdxjt6sF+Jn2M66RA/Hwy6dInQ2I7aCpAK2aU8pR2kP97BcejJ5iYW+H6Tmshy1f+9bYwbwwFV/F7NgnfiOVpGxkD7mqo43HMTGEY1d4lRYXVM= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=11;SR=0;TI=SMTPD_---0W3LK4ka_1711453896; Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W3LK4ka_1711453896) by smtp.aliyun-inc.com; Tue, 26 Mar 2024 19:51:36 +0800 From: Baolin Wang To: akpm@linux-foundation.org Cc: david@redhat.com, mgorman@techsingularity.net, wangkefeng.wang@huawei.com, jhubbard@nvidia.com, ying.huang@intel.com, 21cnbao@gmail.com, ryan.roberts@arm.com, baolin.wang@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] mm: factor out the numa mapping rebuilding into a new helper Date: Tue, 26 Mar 2024 19:51:24 +0800 Message-Id: <0c9df470bd2a62af8cc707cf01e42c7c744dd927.1711453317.git.baolin.wang@linux.alibaba.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To support large folio's numa balancing, factor out the numa mapping rebuilding into a new helper as a preparation. Signed-off-by: Baolin Wang --- mm/memory.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 62ee4a15092a..c30fb4b95e15 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5054,6 +5054,20 @@ int numa_migrate_prep(struct folio *folio, struct vm_fault *vmf, return mpol_misplaced(folio, vmf, addr); } +static void numa_rebuild_single_mapping(struct vm_fault *vmf, struct vm_area_struct *vma, + bool writable) +{ + pte_t pte, old_pte; + + old_pte = ptep_modify_prot_start(vma, vmf->address, vmf->pte); + pte = pte_modify(old_pte, vma->vm_page_prot); + pte = pte_mkyoung(pte); + if (writable) + pte = pte_mkwrite(pte, vma); + ptep_modify_prot_commit(vma, vmf->address, vmf->pte, old_pte, pte); + update_mmu_cache_range(vmf, vma, vmf->address, vmf->pte, 1); +} + static vm_fault_t do_numa_page(struct vm_fault *vmf) { struct vm_area_struct *vma = vmf->vma; @@ -5159,13 +5173,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf) * Make it present again, depending on how arch implements * non-accessible ptes, some can allow access by kernel mode. */ - old_pte = ptep_modify_prot_start(vma, vmf->address, vmf->pte); - pte = pte_modify(old_pte, vma->vm_page_prot); - pte = pte_mkyoung(pte); - if (writable) - pte = pte_mkwrite(pte, vma); - ptep_modify_prot_commit(vma, vmf->address, vmf->pte, old_pte, pte); - update_mmu_cache_range(vmf, vma, vmf->address, vmf->pte, 1); + numa_rebuild_single_mapping(vmf, vma, writable); pte_unmap_unlock(vmf->pte, vmf->ptl); goto out; } -- 2.39.3