From patchwork Thu Jul 27 18:37:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yun Levi X-Patchwork-Id: 13330554 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB579C41513 for ; Thu, 27 Jul 2023 18:39:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 424D16B0072; Thu, 27 Jul 2023 14:39:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D4B06B0074; Thu, 27 Jul 2023 14:39:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 29E306B0075; Thu, 27 Jul 2023 14:39:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 1BC8F6B0072 for ; Thu, 27 Jul 2023 14:39:12 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EB7FF1C91E4 for ; Thu, 27 Jul 2023 18:39:11 +0000 (UTC) X-FDA: 81058254102.28.642986D Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by imf29.hostedemail.com (Postfix) with ESMTP id CC31412000F for ; Thu, 27 Jul 2023 18:39:09 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aqF4+Teg; spf=pass (imf29.hostedemail.com: domain of ppbuk5246@gmail.com designates 209.85.128.48 as permitted sender) smtp.mailfrom=ppbuk5246@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690483149; a=rsa-sha256; cv=none; b=BnY2IrbPgGiY8UOq4ghgnc87rtQsxBSaiNiUhg+MC+ZdszKg/S+ZjCzHhSUgwITuFRzn4L Dsw22zMc9CqkOsGRuJkAkk/w9N7kWnjYMxQLHsUnO5p7JozXlS4GAQ5G3ECAhKD4IJKsXl 8g7qndb8WndwwrtmPuKa62qUeq0lrwE= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=aqF4+Teg; spf=pass (imf29.hostedemail.com: domain of ppbuk5246@gmail.com designates 209.85.128.48 as permitted sender) smtp.mailfrom=ppbuk5246@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690483149; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=NF0AAzp00VPKSBWIz1veCNt0J3woGem5lOOY6FNXLkY=; b=uFMT0MV+ll3RVRwR86POw0BVOtVtqUgUQl3dKL4jKIfqsaKoDsw77dXJeP6S9GIuDkRUXt IeMfYkRdoY0R+mMpkg272Mu/8bcp1gzS2o2gv0NmsCk1CXADxErq1ToO6OlMZnZayma+Wo H/puPHYdDxk7y2stJZcPjSKi7kzSoyQ= Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-3fd0f000f1cso8806835e9.1 for ; Thu, 27 Jul 2023 11:39:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690483148; x=1691087948; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=NF0AAzp00VPKSBWIz1veCNt0J3woGem5lOOY6FNXLkY=; b=aqF4+TegclUGZOLtF/MB6RYFv+Nx2SbGXYzuENSiYPwAbk6epOs9CvWFIc+u8lPNRJ Xy/WBXKMScoZxNo4XP2hNshAfYRhTNd4OkWGBtLpRwceSafX0NFB1gqZ6ssUcXsc+n7n q35C+VpD3mLJblOjzy8FW+CdBvBnqSxIc9HKk05RsqE3TCrGjeudcYRwq6HtqIVCQO8R ENblDi74Ul7a51M3D+4drzSY6jnQRxs3wRV11YgyLwHG7RVw8j/OzlGqHiAhp/x1VhVN 69K11ePcdX4SxLa0EuCenwA42T23J2917FeEwyqwJg1kq2JJ1gtl4xid/IOKfsBRdfFq uVUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690483148; x=1691087948; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NF0AAzp00VPKSBWIz1veCNt0J3woGem5lOOY6FNXLkY=; b=K7XJDxqYOCt9oVqVvqA08/1/blds8yVMJ73w3VTTg5W6h9xI6Esr6qSxJ1Ec9aj0ew QjYzmiisaqH/+8sJRFskQz8xZhBgRo7jNlj8ZiLqtjIuNCxnsw8cnsObJ5mA0VUcYomL GejlQDLzNIYMDmVDQr1hhhdK/BpWjfUk9dqVgv0kgvIw1SVoPzYZ85la+0w3VAs6Wpod VZ/Mr4wCdZJNd42MC0B0P1VAPul5sq+kmKmoFxnrPOFqNv/ysTvYm0+Fb56rry1rQEh8 Ob+lNzqA5bLKc0jQ37Bwnc7knwE9ZWleUQ36iVynu4JioKjYFYzz7L3fnNJsvWRwaBQe Wu5A== X-Gm-Message-State: ABy/qLZ+F7qOM1KFLR/a808Uv0JSkZ3JDv2GVjZMePMjDXY870d6lcq2 igoARl6uPke+VbxAdQ+3blHf2ZwLR9qFhA== X-Google-Smtp-Source: APBJJlEWoFbRwReSvEmnOzCNHN4d6L+Ko4ImG7PEidfC7KxqZCNGdz9ooufvrkKp/Ql+K2+xOrLpkA== X-Received: by 2002:a05:600c:82c7:b0:3fa:821e:1fb5 with SMTP id eo7-20020a05600c82c700b003fa821e1fb5mr2837725wmb.5.1690483147803; Thu, 27 Jul 2023 11:39:07 -0700 (PDT) Received: from localhost.localdomain (host31-52-141-59.range31-52.btcentralplus.com. [31.52.141.59]) by smtp.gmail.com with ESMTPSA id c8-20020a7bc848000000b003fb40ec9475sm2473228wml.11.2023.07.27.11.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jul 2023 11:39:07 -0700 (PDT) From: Levi Yun To: sj@kernel.org, akpm@linux-foundation.org Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Levi Yun Subject: [PATCH] damon: Use pmdp_get instead of drect dereferencing pmd. Date: Fri, 28 Jul 2023 03:37:45 +0900 Message-Id: <20230727183745.682880-1-ppbuk5246@gmail.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CC31412000F X-Stat-Signature: u6cb9p17ypkxj5se4sfzh38qh4iyhn8m X-Rspam-User: X-HE-Tag: 1690483149-639123 X-HE-Meta: U2FsdGVkX19Cz8l4nfkHujI4xaHfaWQ7RcEhUsQsSgQ+m0k3Jb/jkP8WI/dLKZgWvYLJLjQEuIY5fbO42T5PLCk9+/GKclqw8ZdB+qOqKeMk7pK2WHU4QPXC8hAC/YO3VUkc4Y7QDqr+LZyJm9opfq6/TplKKVw1/ckqAdjagQaOKwAhvUrf2/PiQPTHEaWWjg99xNLNtEEmhIrDnTX1VqdJZ/SbRTxSYqCK4Qt6i+/qTy133JGKcd/wvQ7R4YheWwQm6eOZ689fIFI2Hdh13CFEi8b/P/dU+QsiVrp2nxJ0mzHHbL6RngkwQ9vE3XmEnlnwiHk2PduhSJ6UfpDQw0KWPmpVdhIX/oCkNbW8kvkq/hivmtJ8OXYzGVDIS7gygaHEbsINFPDHBzdppbY4vuTLscRhrwuxe8hknZbfoaFIgxh6OPgg4pseGQ74UYNMeBqgYPnmHAxzGgxBhPpcHijlqttlRvDmsqFhCPA6v1RSKe7DsBySYmx/eFViRyyb153EjnB8OiYoFF+vk9uIPftXMo8W0M/jzpu1PcP2rBunhQ4SL+9QZqmDZOT+iyRaWtePgA3mV/A+zDDjPcR9xHA6z1VKhSl3x6sJkZ1xWxYhDlOqd+PLCH6WYXWP7/Hf2iVvSdE6vJqczZbqRtThkGYLVIDt3a1FAi2dQOfTRWJB1U6SBjAaoDaHrDRPw2nCaxrsXEpFM/GRH5LWkSKoDLTEigqLPF8YECfJnZYTj2DkkPH/kkFUJUGtjYHg1WGWAm4CNWcqtkoDomM4b9lius8n8Ci4Q24K0BKt5cHj58CTt83/7K/kaH+EDUKowlDRHbwrfbwf7P8nsgH+OS59dSmXunXb8LO09VepaSmYIl2MoIFr1j2N3T3eRhPWITTeodBaHxrqYAeIUecdiZbCee1eBCjVgqMjpJ8Di/h83Ndp0vD9tJniZNkrNi6NCFy2EICju+MqU0bw5P6OGju pJKqWn4K jx8uYxEe+B6XP0+Psje7Ljj2TsCLsZH+kVfmJ/ZQKwnI7P6XhzQGA95tuvUtOsZmShEgshk35UmtxsDBFXs4MXrgkS1OnQNwLozIlkO4ZWFuJrCKMcRiqSX0beb+gHTud1ij3kY4iqQstuAQVcPMn4W0i5h+IBKFYGUUEIuZya2K2QHdrTNFjM7ZNTnUPoIzdkKNnxJaUeAD5ehIsQBNSNrWr/uz++bONEZNBcSbtLeRhpKghmbYgwOBFv0OVI/MnPoc0w+1TJbETQl3Txwc3pu9gDqhf7C+qXbERvVxL5bq2QwYZUuhmes3ia9haDZxKPCPRnOjBVlajyXW2Ku3yGcjMPhxCDrVXpL5Jw0CuyVIgm3247fJOhn9duuwmXzawweLU4IY2P68C9bXrp6YQ/uqRbYcmyHkFI+DW5R0aC7SLAk7sKdvrT6Buo//fOO5unXQ4CAssW4PGhOuJfUaWqTWj4jot1BLP8wYM7DnXBFjlnOA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000005, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: As ptep_get, Use the pmdp_get wrapper when we accessing pmdval instead of direct dereferencing pmd. Signed-off-by: Levi Yun --- mm/damon/ops-common.c | 2 +- mm/damon/paddr.c | 2 +- mm/damon/vaddr.c | 22 ++++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index e940802a15a4..ac1c3fa80f98 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -54,7 +54,7 @@ void damon_ptep_mkold(pte_t *pte, struct vm_area_struct *vma, unsigned long addr void damon_pmdp_mkold(pmd_t *pmd, struct vm_area_struct *vma, unsigned long addr) { #ifdef CONFIG_TRANSPARENT_HUGEPAGE - struct folio *folio = damon_get_folio(pmd_pfn(*pmd)); + struct folio *folio = damon_get_folio(pmd_pfn(pmdp_get(pmd))); if (!folio) return; diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index 40801e38fcf0..909db25efb35 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -94,7 +94,7 @@ static bool __damon_pa_young(struct folio *folio, struct vm_area_struct *vma, mmu_notifier_test_young(vma->vm_mm, addr); } else { #ifdef CONFIG_TRANSPARENT_HUGEPAGE - *accessed = pmd_young(*pvmw.pmd) || + *accessed = pmd_young(pmdp_get(pvmw.pmd)) || !folio_test_idle(folio) || mmu_notifier_test_young(vma->vm_mm, addr); #else diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 2fcc9731528a..82f7865719fe 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -301,16 +301,19 @@ static int damon_mkold_pmd_entry(pmd_t *pmd, unsigned long addr, unsigned long next, struct mm_walk *walk) { pte_t *pte; + pmd_t pmde; spinlock_t *ptl; - if (pmd_trans_huge(*pmd)) { + if (pmd_trans_huge(pmdp_get_lockless(pmd))) { ptl = pmd_lock(walk->mm, pmd); - if (!pmd_present(*pmd)) { + pmde = pmdp_get(pmd); + + if (!pmd_present(pmde)) { spin_unlock(ptl); return 0; } - if (pmd_trans_huge(*pmd)) { + if (pmd_trans_huge(pmde)) { damon_pmdp_mkold(pmd, walk->vma, addr); spin_unlock(ptl); return 0; @@ -434,26 +437,29 @@ static int damon_young_pmd_entry(pmd_t *pmd, unsigned long addr, { pte_t *pte; pte_t ptent; + pmd_t pmde; spinlock_t *ptl; struct folio *folio; struct damon_young_walk_private *priv = walk->private; #ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (pmd_trans_huge(*pmd)) { + if (pmd_trans_huge(pmdp_get_lockless(pmd))) { ptl = pmd_lock(walk->mm, pmd); - if (!pmd_present(*pmd)) { + pmde = pmdp_get(pmd); + + if (!pmd_present(pmde)) { spin_unlock(ptl); return 0; } - if (!pmd_trans_huge(*pmd)) { + if (!pmd_trans_huge(pmde)) { spin_unlock(ptl); goto regular_page; } - folio = damon_get_folio(pmd_pfn(*pmd)); + folio = damon_get_folio(pmd_pfn(pmde)); if (!folio) goto huge_out; - if (pmd_young(*pmd) || !folio_test_idle(folio) || + if (pmd_young(pmde) || !folio_test_idle(folio) || mmu_notifier_test_young(walk->mm, addr)) priv->young = true;