From mboxrd@z Thu Jan 1 00:00:00 1970 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 2AFE6CD5BA2 for ; Tue, 19 Sep 2023 12:08:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F9686B0505; Tue, 19 Sep 2023 08:08:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 981736B0506; Tue, 19 Sep 2023 08:08:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 848CB6B0507; Tue, 19 Sep 2023 08:08:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6F21A6B0505 for ; Tue, 19 Sep 2023 08:08:20 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 17619160BCC for ; Tue, 19 Sep 2023 12:08:20 +0000 (UTC) X-FDA: 81253224360.23.1171AE5 Received: from mail-vk1-f181.google.com (mail-vk1-f181.google.com [209.85.221.181]) by imf16.hostedemail.com (Postfix) with ESMTP id 4EF1B18002B for ; Tue, 19 Sep 2023 12:08:18 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EI8F0wXM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of prabhakar.csengg@gmail.com designates 209.85.221.181 as permitted sender) smtp.mailfrom=prabhakar.csengg@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695125298; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r2iPmpjEwyRg01FPSaJcAL+Fk1h/zdCL91gxz6OrpHQ=; b=xNMWMWLAXcBmLqJDI85GbrS0lg+km+MbsXVJdzxJXcM6KdOKIPdL50CRGmRgMT398siXgp ZnY+L+VtOIqembB0qNfr6PYST65NcX4MAsTnnSy4R0Tm5Ys90SEoVGNe0b2ZoHbBKDqJBX t0ULKaSYMBo4f2AHJkLJafQ0kxdr9Tw= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EI8F0wXM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of prabhakar.csengg@gmail.com designates 209.85.221.181 as permitted sender) smtp.mailfrom=prabhakar.csengg@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695125298; a=rsa-sha256; cv=none; b=i0miwYywldyt95fscjbI+gNLV5/Fohpl2NnK0wX4I8+LmNHEwxV+54ARiWZeAxYxUm/PxE 1T+RCi+5dLhrdw3T1aLK9wDeLhK6F6+D1hyQe5Cp5QUXTvWCcb9iCc5m12324COpkY6yu9 X7bbpi3Y/J8+DG87j05CgyTrkIFFDPg= Received: by mail-vk1-f181.google.com with SMTP id 71dfb90a1353d-4908d8f7263so2333350e0c.2 for ; Tue, 19 Sep 2023 05:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695125297; x=1695730097; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=r2iPmpjEwyRg01FPSaJcAL+Fk1h/zdCL91gxz6OrpHQ=; b=EI8F0wXMrAn5+X33hg32R6ImuSvcCZdARXDbwrQpn5ewdKlcwRjobtUaMC9fch5SDG MWJ4GxRtuXa/pR2fSFAIs+uxjFcKTA7qRNuwP170dzL6hihekdMhO8NHMvDnQs6MnmXV K6Q/ub1aNAwwP7J9IXtUS7pAIB0Fd9/GvbBDGsoGtsHY4FTneAnoVNJVEbRZuDGs/bJK AHY/7Ht42Z6AiZmRenrxy1woJ7Jx4/LrwGcCELIqyBY+tCzVW2rOsB25FAgNBYqjSuB7 jWciVVZlMTi8hpN0nADbUP/KC60fIsSszWtXM8I4RMWrUaRGx0Jm/Vdpvezrau2koOpb 5hfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695125297; x=1695730097; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r2iPmpjEwyRg01FPSaJcAL+Fk1h/zdCL91gxz6OrpHQ=; b=UxlBR/BI9j0MFJcaZNlAJNYh3froCeWUswBl3a6waOruAxW13dgdwM3EWv+Zs5EmwZ K0RtWaCRaElZltTQpZVRVdedNK1GH3Qm1FLy+d/6fjs22Hp8y8qjJ8PbyMg7OksxJ3LA 4H+b13ll6nwU8tqRtMqqr/YQnvoXXVkxbYwLmulIlwuahUwsujrIdwnG2WIslVZzuzkg pUu+VYBLaU12WtkKNe0HVQGmyrhEdXZudWABxEo41K9wOpSyEcJqtpVc8jRs5OFZ3yA0 O489BDLR5TFMDB8nnSa1b+m0pVrkjfjYXseJ72OXT064Bx/eQISwYsehnIWB9a6PNmOs a9Fg== X-Gm-Message-State: AOJu0YxsIqeQtd63dkwqUkTqJ6GT5XbuxQPY0ntWdFBhQ3hkTnqz8fdu tova4kJSWXKCFD1KpP36ZL7E6l1BZecbWDv0LdE= X-Google-Smtp-Source: AGHT+IH7TN3P7HJQ05oem8BOcqLZTDht3nkk5RIet6AG+k4/cvg4jSeSddT/b2QnHf7bMT6zLQnkiWr6pF/YfiLXevU= X-Received: by 2002:a1f:cc01:0:b0:48f:e2eb:6dd9 with SMTP id c1-20020a1fcc01000000b0048fe2eb6dd9mr8987999vkg.8.1695125297222; Tue, 19 Sep 2023 05:08:17 -0700 (PDT) MIME-Version: 1.0 References: <20230911131224.61924-1-alexghiti@rivosinc.com> <20230911131224.61924-3-alexghiti@rivosinc.com> In-Reply-To: <20230911131224.61924-3-alexghiti@rivosinc.com> From: "Lad, Prabhakar" Date: Tue, 19 Sep 2023 13:07:51 +0100 Message-ID: Subject: Re: [PATCH v4 2/4] riscv: Improve flush_tlb_range() for hugetlb pages To: Alexandre Ghiti Cc: Will Deacon , "Aneesh Kumar K . V" , Andrew Morton , Nick Piggin , Peter Zijlstra , Mayuresh Chitale , Vincent Chen , Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Samuel Holland , Andrew Jones Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4EF1B18002B X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: dhyyq4hkj9fkh8cos5tyh86hpx6g7ug7 X-HE-Tag: 1695125298-900156 X-HE-Meta: U2FsdGVkX18nDdUnqimDkr4vbS7HpanzvF3ylch7lJIroWYSG9ploQd2zYjhX4NphyZ8wt6MNGlB1/fM5s5zMS+Ul9upECBIPQQuGMeGPvlc5jJ1FrCjU7KH+CA+7hvwXOSgjhHqgeTtaJfr8CIaN+y2qRh8M/gyH7QbVkiCrmvUS98nUYEq/4ITqA6vaDcedPKCNKw3KBKHtuTCUPZ41d3mvjhfLETHfPvYUdEAd3bK4J9zqCDgAcSwdbwCw2RyXsP93Q/D5gTt20iZbaUsRFROAYCi+ZPbyERTFE2129NPNkUnF5dY8I5wrv+yzlqtKLZs52iCnb+ozuI0zIa6jkmAgvrlorq4iWMFzF0xVXYHON4dHczW2tWPVVfYO5kHEDZeNBSK5dW3OfKxM0v6tggH7hMhbqJeiFWn09baWsDaCCs8Bi93pXaQQzMgAGx0AgC9zsk6PUB40G2xEKiqhYYK6hpRLoELVdn80GbHCV1NAR0dgYYwuru+EDcdXaxW+rBYgMT/8aPEGX3+hYiJu9tA3fdr6eBh4qO+TtXNWI6H9J+f51HJz6dwvEIkgaOBu0A3KO/hod1w8gfW/XoAiSnHEbXSoNPJuZFxElqKQuqT0zNKkyQUuipdVgD3xjcLVq4qW8UgSRmfM8czuYmrU/cl9SHs/xHgv5inP4sGH9H9r3/nyKMYAbMyeCyXpcDOSyamgPNP11hDWZkKxkql9JN9z+RpHkrZJ3+sYedeOa3pPK4dZJ5tceElrXIEctgEGcL8HKBrx66E5vgAWX1BEWfo6JcFrSiVVzm/J7W5mFsT1V5dUcdZkn8NzmJqhDUlBl4hS77FsbSTAW3XV9XOzLPPL/+juFhbwUR11uLTSywwYfR08vHIDh/qFNBynMByhRBevjhl2FSAJ9hkwHNPJv82p/qiGf/EFakIZ8+9rLBnqgNI0dpsBjmHPkvMJ9SHwBsnaWrXUZy5PSxqgX0 AMskfoQr 7ZVXniC3C22In2dWpGJ6gezPkFhdPhGaP8/26+2uCBhwTalvtIen+27nBKNUajDBIzEUoADpWfysjj4MKubYGvy3YnAWkywHh+hqtTB549zUxloih1DOYnA1nbQCRfHlmzckRPjw5Tp3bTi5kN45476PIVByu1tM0/G1YslB5tagWII7wW0EMhG6nDCabaQ0mOUsXAXm9uXMJV2YkbRZE+sytNttff96ntgpnMhBMxMZ6MPReu/5m4XLcpJkOE10filub1KcMxMs3j2B7OzlKo5R96sZLcJjHwB132Rpcg+UMv9LrhvE9HmifzwZHCayniqv715N0faFmmaecvqhdbmySjVpmAbRE63DxDMi8hTbhGK9qJDRor3KleZWwXGIc7V7LKk2W0HFDoqYuiRIxaecCBu4JcHm/Bd036Hm65tFF2ra3XrVhpoh0vEy0M7/lRpn6Hd4KbT+1Y40xkalkxplLhKLm1VhMA3Jc/ShaHbpjFjOdJkAfFHhSK+ANqRrluF9BYNZtYs2IMXJyNMcU5U1r/KdZw6CgQzogagS+Tqyds/vMmJBKXHyZble/XBQVRYFC 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: On Mon, Sep 11, 2023 at 2:14=E2=80=AFPM Alexandre Ghiti wrote: > > flush_tlb_range() uses a fixed stride of PAGE_SIZE and in its current for= m, > when a hugetlb mapping needs to be flushed, flush_tlb_range() flushes the > whole tlb: so set a stride of the size of the hugetlb mapping in order to > only flush the hugetlb mapping. However, if the hugepage is a NAPOT regio= n, > all PTEs that constitute this mapping must be invalidated, so the stride > size must actually be the size of the PTE. > > Note that THPs are directly handled by flush_pmd_tlb_range(). > > Signed-off-by: Alexandre Ghiti > Reviewed-by: Andrew Jones > --- > arch/riscv/mm/tlbflush.c | 39 ++++++++++++++++++++++++++++++++++++++- > 1 file changed, 38 insertions(+), 1 deletion(-) > Tested-by: Lad Prabhakar # On RZ/Five SMARC Cheers, Prabhakar > diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c > index fa03289853d8..5bda6d4fed90 100644 > --- a/arch/riscv/mm/tlbflush.c > +++ b/arch/riscv/mm/tlbflush.c > @@ -3,6 +3,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -147,7 +148,43 @@ void flush_tlb_page(struct vm_area_struct *vma, unsi= gned long addr) > void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, > unsigned long end) > { > - __flush_tlb_range(vma->vm_mm, start, end - start, PAGE_SIZE); > + unsigned long stride_size; > + > + stride_size =3D is_vm_hugetlb_page(vma) ? > + huge_page_size(hstate_vma(vma)) : > + PAGE_SIZE; > + > +#ifdef CONFIG_RISCV_ISA_SVNAPOT > + /* > + * As stated in the privileged specification, every PTE in a NAPO= T > + * region must be invalidated, so reset the stride in that case. > + */ > + if (has_svnapot()) { > + unsigned long order, napot_size; > + > + for_each_napot_order(order) { > + napot_size =3D napot_cont_size(order); > + > + if (stride_size !=3D napot_size) > + continue; > + > + if (napot_size >=3D PGDIR_SIZE) > + stride_size =3D PGDIR_SIZE; > + else if (napot_size >=3D P4D_SIZE) > + stride_size =3D P4D_SIZE; > + else if (napot_size >=3D PUD_SIZE) > + stride_size =3D PUD_SIZE; > + else if (napot_size >=3D PMD_SIZE) > + stride_size =3D PMD_SIZE; > + else > + stride_size =3D PAGE_SIZE; > + > + break; > + } > + } > +#endif > + > + __flush_tlb_range(vma->vm_mm, start, end - start, stride_size); > } > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start= , > -- > 2.39.2 >