From patchwork Wed May 25 10:31:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolin Wang X-Patchwork-Id: 12860950 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F2043C433F5 for ; Wed, 25 May 2022 10:33:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:Cc:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=Y1/HTUVE6ultu8fUnR2oZbxMp9cMheaRKryDD4OLmhY=; b=ja7tdMPop15XH1 pWVkWIpskJAxGwbF6v4M1rgzy6Ff1PYDIqgQjisLE1fT+td1vMSfJvx7vDEYZ/d2uzdeSBJVUBe4N gR7uc9kdUjQkAZxXnasB2DCYjdRNsOOJ7dtw6QpewfBRpdK2H+5tmvmqInP1egcaN6kHLCtMRnBCc nzMSGOD5jspfH3ALVWJQOm7hd3tXEZk60xkJcgu61BiCExZYjtAtKtkLcxQi09cEfC3G3atTnFN3K 3uumtvQqU1b5VTwE/hUeUCgo3a8MJahacOvk1MnNZAyPjAuqTfBBjHy3PxIwjzY+HxxQKI3vSnmwz 7atlNUYGC8zwxxCKzl0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntoId-00Aian-0H; Wed, 25 May 2022 10:31:31 +0000 Received: from out30-57.freemail.mail.aliyun.com ([115.124.30.57]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntoIZ-00AiYv-Jf for linux-arm-kernel@lists.infradead.org; Wed, 25 May 2022 10:31:29 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R641e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04394;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0VEN9UHQ_1653474679; Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0VEN9UHQ_1653474679) by smtp.aliyun-inc.com(127.0.0.1); Wed, 25 May 2022 18:31:20 +0800 From: Baolin Wang To: catalin.marinas@arm.com, will@kernel.org Cc: mike.kravetz@oracle.com, songmuchun@bytedance.com, anshuman.khandual@arm.com, baolin.wang@linux.alibaba.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH] arm64/hugetlb: Simplify the huge_ptep_set_access_flags() Date: Wed, 25 May 2022 18:31:09 +0800 Message-Id: X-Mailer: git-send-email 1.8.3.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220525_033127_847600_A7E95F66 X-CRM114-Status: GOOD ( 14.00 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org After commit bc5dfb4fd7bd ("arm64/hugetlb: Implement arm64 specific huge_ptep_get()"), the arm64 specific huge_ptep_get() will always consider the subpages' dirty and young state for CONT-PTE/PMD hugetlb, so there is no need to check them again when setting the access flags for CONT-PTE/PMD hugetlb in huge_ptep_set_access_flags(). Meanwhile this also fixes an issue when users want to make the CONT-PTE/PMD hugetlb's pte entry old, which will be failed to make the pte entry old since the original code will always consider the subpages' young state if the subpages' young state is set. For example, we will make the CONT-PTE/PMD hugetlb pte entry old in DAMON to monitoring the accesses, but we'll failed to monitoring the actual accesses of the CONT-PTE/PMD hugetlb page, due to we can not make its pte old. Thus remove the code considering the subpages' dirty and young state in huge_ptep_set_access_flags() to fix this issue and simplify the function. Signed-off-by: Baolin Wang --- arch/arm64/mm/hugetlbpage.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index e2a5ec9..5c703aa 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -448,7 +448,6 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma, size_t pgsize = 0; unsigned long pfn = pte_pfn(pte), dpfn; pgprot_t hugeprot; - pte_t orig_pte; if (!pte_cont(pte)) return ptep_set_access_flags(vma, addr, ptep, pte, dirty); @@ -459,14 +458,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma, if (!__cont_access_flags_changed(ptep, pte, ncontig)) return 0; - orig_pte = get_clear_contig(vma->vm_mm, addr, ptep, pgsize, ncontig); - - /* Make sure we don't lose the dirty or young state */ - if (pte_dirty(orig_pte)) - pte = pte_mkdirty(pte); - - if (pte_young(orig_pte)) - pte = pte_mkyoung(pte); + clear_flush(vma->vm_mm, addr, ptep, pgsize, ncontig); hugeprot = pte_pgprot(pte); for (i = 0; i < ncontig; i++, ptep++, addr += pgsize, pfn += dpfn)