From patchwork Wed May 8 11:18:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 13658580 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 674A8C04FFE for ; Wed, 8 May 2024 11:23:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBBEE6B0140; Wed, 8 May 2024 07:23:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E441C6B0141; Wed, 8 May 2024 07:23:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CE5666B0142; Wed, 8 May 2024 07:23:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id ACB906B0140 for ; Wed, 8 May 2024 07:23:46 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 1420440EA9 for ; Wed, 8 May 2024 11:23:46 +0000 (UTC) X-FDA: 82094993652.20.DE034A8 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by imf08.hostedemail.com (Postfix) with ESMTP id 26AC316000C for ; Wed, 8 May 2024 11:23:43 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=SnCZ+Y1s; spf=pass (imf08.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715167424; 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:in-reply-to:references:references:dkim-signature; bh=hkOJ479CewvDdU5HWPEgLgm2sAjKEVUPHaCHVUUKnDI=; b=qPQsTIyCpFEffcmv7lBIP8ha6J0bOU6bMgKGsYnRZDRNp8JMFCv8Xc5fD7f4+c3mjBKQ3H M2bA0G0JCemMH5/QiJc3VL15RXZ6Gf2CDlV675vwRoRYJazhdCgQhSZH15FXk/CX4x58rc AOda0P8AXruSVQZcymFyPsMrEK1GAsA= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=SnCZ+Y1s; spf=pass (imf08.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715167424; a=rsa-sha256; cv=none; b=WXNTyglUCtEmFR7ECzg10Mx/4gBPnHUcVD9fFetmEqEY9OHbDWbAvLKH926eM2/sZWIGF2 0Q/mHGANOM/RfybHJvJyzBXitz+Kx3NE26wa0sSmVgCv+PWj7FB6wHKwWoq7Z0sIZOuZV3 XlJyfwyR5nKxwvqmIY/U0YrhWIuoxb4= Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-41f9ce16ed8so2632005e9.0 for ; Wed, 08 May 2024 04:23:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1715167423; x=1715772223; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hkOJ479CewvDdU5HWPEgLgm2sAjKEVUPHaCHVUUKnDI=; b=SnCZ+Y1sHY93pqQUVz6WpqFECUyzUn/YvejmFCqa3oQ8ssW6SXa2Ewk959K8xAdYOI 573grAYBftJypB3MwGeIE+a8yuSmdnQk9U+cBbotpQX2GzBCyGS/B/dxPqieRLVQiME8 cgb4U0qwM3r1Td2BWTuU2muQ55dq9Yt43jWOLitEqcli8mIaCJBXO3yz7DGkrdz/tson 6DTPXCujOwiWO+MEtZFdmaND3otTrA3hHGiNDOW5nTaIoA0TpVGzE8niMwRDS1QtCbhK IHKkg2/hA7rjdsIoiLN0Dkswq+/B4rqU1AIVdh9WoGYQObP+AUUoqK/NTTVXeX9kZcLs bZ5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715167423; x=1715772223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hkOJ479CewvDdU5HWPEgLgm2sAjKEVUPHaCHVUUKnDI=; b=f/ewKT5PqiBmdMyZeIoltZeuClJVjtyZ5/9cFC9d4PudldCYHehRZCDhVkx8SzqwYK HRijTC2FPNP8LWfaHrUkxxoC4ryTaRR2j2SSfkrV8TwWC7ggOm12WTGMp5ln8ZZRb6vM JFqre7D8lm2f2cfhXuDQP0DQAfQYtH1ffD2IdOwotqHsrOCtbBZ7vF/2IlI7EGcEMBJU NXxBLRHWZgCfLsIBbHjMwmdBC93gcCb5+Iz3CQWJzxftIuK5R7L4zuYx98dpmzAhG6p3 VSNJKdof/2NIU3zV54FxOQDXBiji/DHO/5xYAXMBeCdfMz6zPYFO+2w9tMnvssgUwB9Q WTaQ== X-Forwarded-Encrypted: i=1; AJvYcCX8CCaBXu+yijWldqOoCIBIsGK4vIf3gj5wQrqbb+2Tc68vjUqDmIhXaPk+eicTblzmxEW+i0WnDVS9X6i/KtHi+Zs= X-Gm-Message-State: AOJu0YxhzGQp9E6GXLO1HHsbh3yL0iQSVcm4DNWJCjG37Yxzx8nE/Msr WXwIuQJ1rfNb/cWEvjzCHDk/IQFLdMeGnXWHPixU2jfXLITGqOE5WWt9f58Txfo= X-Google-Smtp-Source: AGHT+IFALljM8hm4oiWBT04Jw0JLiRkkyPDpkUx9yCVH0D1QlIeoTfNU3Xx59AzAW7ujf7brtTm4rA== X-Received: by 2002:a05:600c:3d93:b0:41a:adc3:f777 with SMTP id 5b1f17b1804b1-41f7130a17bmr26482125e9.16.1715167422759; Wed, 08 May 2024 04:23:42 -0700 (PDT) Received: from localhost.localdomain (amontpellier-656-1-456-62.w92-145.abo.wanadoo.fr. [92.145.124.62]) by smtp.gmail.com with ESMTPSA id o14-20020a05600c4fce00b0041bf685921dsm1992749wmq.0.2024.05.08.04.23.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 May 2024 04:23:41 -0700 (PDT) From: Alexandre Ghiti To: Catalin Marinas , Will Deacon , Ryan Roberts , Mark Rutland , Paul Walmsley , Palmer Dabbelt , Albert Ou , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH v2 5/9] mm: Use common huge_pte_clear() function for riscv/arm64 Date: Wed, 8 May 2024 13:18:25 +0200 Message-Id: <20240508111829.16891-6-alexghiti@rivosinc.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508111829.16891-1-alexghiti@rivosinc.com> References: <20240508111829.16891-1-alexghiti@rivosinc.com> MIME-Version: 1.0 X-Stat-Signature: aq3irhpw5xsf3tie6rm1jmniqb5dhqo4 X-Rspam-User: X-Rspamd-Queue-Id: 26AC316000C X-Rspamd-Server: rspam05 X-HE-Tag: 1715167423-352914 X-HE-Meta: U2FsdGVkX1/X88puKrSGxpFDaGaVqydh59TGycqlWvGM7GKex9pDhcFShxKhsIo13wT+2PXeLmULUnv6KTprqXaqBMwAXClQVK9ixWMWigeF9KjjxzrAGhAP2ACAFK8wyTdI/yWdO/LyLhEcsh+M+fKLsZm1JyoOr/SicHTK2SK1ITgRESHAiJGcvDwnPPEM6p92h4JCnbmrwJE5pLKDNMlBgrZHNF4lkdB9BIsHZQJljgZDTo28+Z2UBkZShBvwr12E/lGUSjIwOzHFMvpyuoRIkxpTYzr8lJwFmptd10mvHNcN+tCyLn50EPp1W4dn9FxOpKpeD2IMNUr7JZNYDTBqGEZr0SBVebMvMl2IYeI14sUxt4MEQyVKqGX1AU/v3xE11PBwUGsAwlAwFF4O+wC8hz0IwNKhKN2f3a8v5HYvoUco3capgQNGC972ZlyHFZT3Mdu9H++V7jInBcd9c9OoFtgTuikqZmpUZotdn1t1AoxSBGozv2UKhVun1Qm+NysKBIJkqSx3EIAeqJpSKJLuckFTnd8I9ok9wN9ScYj+k5h1B9XK3X2VVWysCVMA4Pge+4D/5ubmFXcxX/4g5JXrPF6xn7fkZt1GnLUUfj090TEPTxMu3PwJfsQd2U7R05PjrZ2awKYp3d2LDaxUg2liKU3aswrPIafiRsUKF71p76gyCu2Z3UIjuOAVF4wf+Iiga7JAqUHrb1GPerKfXoe44UTMN4JGrbqjUug/lgpljuafb8jo2u9BVVtXYyTz4CZh0vrU6BOkqnAkIRGONYWIhMnm0Zpg2Vr09zKBuXX6zYvlqJuEk3N+WhV6Pk/YmTyAqp2LYMUQeUJnbdWgYHPxptCn70SrjiMCqJWGibUlT1z+s52+2NPB3n8u99ShPB9P91laIH958x8V4WKuaJ1y04JH+fvZ/h1pACIEkhL1X9uFIgZO/UL+U1Az6UdT2Vek5fH98XYBRPRo9rK O6Wc4ERa kp0owqFyRYgKZ11/HaQJMWj1Za4i1F+HZ2UgY96dx/Rn76fDkHDOh/CPP+P0p7l11F49C/OeeicudS2ZGcai+RPw2z3iOnZNQ8jBs0GqHApmcNzXBucFyG5Rqo1ZcwrjZLhtlJhJjMSJm4mgP7WAWcwkZSrTjJJ1qijJfGsxtz173KJoxCo3a6J5WoYynS08CNPqW6iVBNHQNiveWKunWuciBGzcEeQPO2V2r7SECctrYUv44yesi/WcXkaaczYGk1QXHwG1gmGdSk/fsGysshxySlNsvR4GkgPX2QZ4kv5er3qwAFxNkACfRU3NVRh+6umdVfAo5GTxg3aOMpKD5j4foX/uEr/kY4eJFLqo6c/qkUr9mogSWgrkHzRhqqUU2PXk7zAhpfEdQIUMwxI+t5IDQEtCr+LPP7LgGqxX1K+hY2LF7++PL60wG0j5fSqGhwVfUqOPJnVOPJ34hG2TY5v8Wv/GpCZLO1zj3XqMQFjKEZbWedQBBiU+ekg== 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: List-Subscribe: List-Unsubscribe: Both architectures have the same implementation so move it to generic code. Signed-off-by: Alexandre Ghiti --- arch/arm64/mm/hugetlbpage.c | 12 ------------ arch/riscv/include/asm/pgtable.h | 5 +++-- arch/riscv/mm/hugetlbpage.c | 19 ------------------- mm/contpte.c | 14 ++++++++++++++ 4 files changed, 17 insertions(+), 33 deletions(-) diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index b8353b0a273c..cf44837369be 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -277,18 +277,6 @@ pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags) return entry; } -void huge_pte_clear(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, unsigned long sz) -{ - int i, ncontig; - size_t pgsize; - - ncontig = arch_contpte_get_num_contig(ptep, sz, &pgsize); - - for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) - __pte_clear(mm, addr, ptep); -} - pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 5d1d3a6c7c44..0847a7fb8661 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -644,8 +644,8 @@ static inline void __set_ptes(struct mm_struct *mm, unsigned long addr, #define set_contptes(mm, addr, ptep, pte, nr, pgsize) \ __set_ptes(mm, addr, ptep, pte, nr) -static inline void pte_clear(struct mm_struct *mm, - unsigned long addr, pte_t *ptep) +static inline void __pte_clear(struct mm_struct *mm, + unsigned long addr, pte_t *ptep) { __set_pte_at(mm, ptep, __pte(0)); } @@ -700,6 +700,7 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma, #define set_ptes __set_ptes #define __HAVE_ARCH_PTEP_GET_AND_CLEAR #define ptep_get_and_clear __ptep_get_and_clear +#define pte_clear __pte_clear #define pgprot_nx pgprot_nx static inline pgprot_t pgprot_nx(pgprot_t _prot) diff --git a/arch/riscv/mm/hugetlbpage.c b/arch/riscv/mm/hugetlbpage.c index d8f07aef758b..437b1df059eb 100644 --- a/arch/riscv/mm/hugetlbpage.c +++ b/arch/riscv/mm/hugetlbpage.c @@ -254,25 +254,6 @@ pte_t huge_ptep_clear_flush(struct vm_area_struct *vma, return get_clear_contig_flush(vma->vm_mm, addr, ptep, pte_num); } -void huge_pte_clear(struct mm_struct *mm, - unsigned long addr, - pte_t *ptep, - unsigned long sz) -{ - size_t pgsize; - pte_t pte = ptep_get(ptep); - int i, pte_num; - - if (!pte_napot(pte)) { - pte_clear(mm, addr, ptep); - return; - } - - pte_num = arch_contpte_get_num_contig(ptep, 0, &pgsize); - for (i = 0; i < pte_num; i++, addr += pgsize, ptep++) - pte_clear(mm, addr, ptep); -} - static bool is_napot_size(unsigned long size) { unsigned long order; diff --git a/mm/contpte.c b/mm/contpte.c index 2320ee23478a..22e0de197bd3 100644 --- a/mm/contpte.c +++ b/mm/contpte.c @@ -12,6 +12,7 @@ * - __ptep_get() * - __set_ptes() * - __ptep_get_and_clear() + * - __pte_clear() * - pte_cont() * - arch_contpte_get_num_contig() */ @@ -20,6 +21,7 @@ * This file implements the following contpte aware API: * - huge_ptep_get() * - set_huge_pte_at() + * - huge_pte_clear() */ pte_t huge_ptep_get(pte_t *ptep) @@ -102,3 +104,15 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, set_contptes(mm, addr, ptep, pte, ncontig, pgsize); } + +void huge_pte_clear(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, unsigned long sz) +{ + int i, ncontig; + size_t pgsize; + + ncontig = arch_contpte_get_num_contig(ptep, sz, &pgsize); + + for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) + __pte_clear(mm, addr, ptep); +}