From patchwork Tue Aug 1 08:53:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 13335910 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 F41C1EB64DD for ; Tue, 1 Aug 2023 08:54:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5EDD88E0009; Tue, 1 Aug 2023 04:54:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 59D868E0002; Tue, 1 Aug 2023 04:54:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 465878E0009; Tue, 1 Aug 2023 04:54:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 372208E0002 for ; Tue, 1 Aug 2023 04:54:10 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 0215B16050E for ; Tue, 1 Aug 2023 08:54:09 +0000 (UTC) X-FDA: 81074923860.26.FA660D9 Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) by imf14.hostedemail.com (Postfix) with ESMTP id 1501B10001A for ; Tue, 1 Aug 2023 08:54:07 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=TGom4Wp+; spf=pass (imf14.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.179 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=1690880048; 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=FuFY+PU6PxR5OxRRJWZPtIcTMAd1Hge6WKSDMNvcYEM=; b=EKZn9vwLbnk+2x68+Seuj2Gl3AYlhJ5KOjpVfo85BK07mtMCpCMD4JHbEGOZ1Pfd/BLS3e VoYdkl0ktBNxS2ZvHFxLiLoYLMzeMpQeElcza4x2nP7pMA0k9E6G37RwjMpO+JS+lTPM+k BkhPFI4aL/UivS0lt31yzOGqIeNcsKY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690880048; a=rsa-sha256; cv=none; b=Wo2SxGk81GwmZS2qDgs06FH9pc832/z+CJlATpWSKvR4Dg9zVcICf7HQauOUZMZoHXyDQr 8GqALJpUzV+QLklw3Y+afsHAiQYNgPDDj5evWcXdUFS10oIJA2Zu1/er9jF7M9johPSmj5 c7R3gUz9tmkNyxIr82kq0Ipue5gKVWk= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=TGom4Wp+; spf=pass (imf14.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.179 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com; dmarc=none Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-2b9fa64db41so5499381fa.1 for ; Tue, 01 Aug 2023 01:54:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1690880046; x=1691484846; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=FuFY+PU6PxR5OxRRJWZPtIcTMAd1Hge6WKSDMNvcYEM=; b=TGom4Wp+0Jnfkmkgk7rmKJspecEM9eWKO0+p+TFJ5nr6xqU7LBDQ/rZzpgdTd8/n4G FGDmh+XTHh9ALXh5fsOpY0bKm5fLn4AExNOwOt/0z2eBJN7Vx4XFBvLOzfe708H7c8Kw tUqu7FExHnJLdQALNl/A9cDb+g4wGYflPZSTwD50mcCGFiN2ZGwFrBT9iJAblX/uLc6S 5lxRW9dFyOtjn0lCjIiBBPmwkd+hnXnThI+Z/VtDP0Zi+Qefnt9kuoGv9CMIpPsfE9KU W6mOuGjME8hAqZ4gmxEwlCviZqNHRpr5/uLTWHe9+04HmjRMjUsy4jAbU4J8BA/987EF DreA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690880046; x=1691484846; 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=FuFY+PU6PxR5OxRRJWZPtIcTMAd1Hge6WKSDMNvcYEM=; b=FxMO2xPI9x1ZcHy3Dwzqxd/0ctlbG6AcBU017lJF2jSR31ybdaDcpwfEB7/SjAC4tx 0eKfodIY2M6OMqowsSvaShty0YtQ4+LbnUX4F95pLnf7mxaIYxje2rOk2P9NnIw258yz 8/njNEJtSjQKEIg64/sHkkahyiXlkSCNPbyDaqSRa9nyoDtDSRRsOUia0MK1RpVwLlIX Wy4Hyuo3GWZCsxGe5LBhdB88cvYHQP8xQijetli4x1LLr7oMJY4HkhP1vORnlAHqLdkX SCVQCusyReT+kSZiMKrq2QsqsfmLelY+DIEKb3yJN/R1S2sAiFHa0RR6IP0BGagdnk6R r9tQ== X-Gm-Message-State: ABy/qLbHuvXMVAw+rssw/nMVmxIQvOyNpXTOW0Vkh3/QjLMstpgjhYd4 ltu7XRmXljjqKrOmugVUpDPL4A== X-Google-Smtp-Source: APBJJlHFJHk7dxJUGfF3nocomaie6wll22GTa1EEA2Nfjcr9TB9jb7ZOAYLSPe0NEAsx7q+L87fvVg== X-Received: by 2002:a2e:b048:0:b0:2b9:e230:25ce with SMTP id d8-20020a2eb048000000b002b9e23025cemr1743884ljl.12.1690880046138; Tue, 01 Aug 2023 01:54:06 -0700 (PDT) Received: from alex-rivos.ba.rivosinc.com (amontpellier-656-1-456-62.w92-145.abo.wanadoo.fr. [92.145.124.62]) by smtp.gmail.com with ESMTPSA id n7-20020a7bcbc7000000b003fe2120ad0bsm4869297wmi.41.2023.08.01.01.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Aug 2023 01:54:05 -0700 (PDT) From: Alexandre Ghiti To: 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 Cc: Alexandre Ghiti Subject: [PATCH v3 0/4] riscv: tlb flush improvements Date: Tue, 1 Aug 2023 10:53:58 +0200 Message-Id: <20230801085402.1168351-1-alexghiti@rivosinc.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Rspamd-Queue-Id: 1501B10001A X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: ksjgiutaz1tk7p6m17y4msq6u67i3dbj X-HE-Tag: 1690880047-725921 X-HE-Meta: U2FsdGVkX1/ERLsdgmkCTCCgAMH82Q7AjHNBIDAwOPvibCFH6V2LySWIlImAjp2JFe+R2TxDX87FvjnEHlveLNweEU+1HPi1TBne4ToCfc4lru0RdlSHpq7FsGCVy02ZbDN5ioYLtYakb/upyc+8tx4mk4vULo8h+7HtFnojCmDi6xgBQ5TcRl7lkL2I9N2FYEWI6MeNnujOcaYdVVgo8rJdF8SnqADVF473GihAuJLGv2DA9gfIpnCh1IN1TIiAgjBM3TmsvQY18xQARGE7LJEr+nH27EXQtPIFBhFcEo93gAIB7JXJNkf3LOTrdBYoZ5FKnGbPE0aXbuqOEgF+vy/5aYA7NdF78orgGQ5DCp0hLn4/iM0uK4pOjZvJY/T0PAHu9XbZMIr87SVcH1GOq0FiMJfYqKQTD0s+IlxHZDkOJMgX6VAlPTmn/EbxFYfTJmW90GXJe5G+iKaBkgXGARmauN/rFCqV2a/MYaUzSSZWm9lKkThlXLwBNi38/ruIidpncQy8Aifc1yfyERgilvf4qMjapeoPAfe3+lEiCoSxIwGfudRrNxoaDyXZ7grbXYERFG83ZK00SkS6xyfWhNL5+SDC0SweTL9IADKvdvHVD5lBEPjjetSbHbxj9EzY2hxqCXWN45ty2UVmgVfIVbx85SkrJAjboPdml87QhUdB7/NJDgqAoxGxgXFy366Oyyzl3gKcpbbc55iYP6VvBtAvXP3SNwyMkSzERAZt+16MWmkWuBpNCYgJ/a8JVjw7VQTNp9Jw4nXBWguW3J+rBZJKAlcDDXgGD2oSm6QE/Wdajgw4Llb6POYEsFr0NNJHeZh+ARJKAo/EDWmUoLz35W6GB/vJQjGB/eFaLUQQXi4KWZzz8GzRbwR3YRr7SLimpL64qholvQOIhYF4CVdCYsUIk/zO6x0UalLd0JMS8gAwAIzhN1qSSIJ/HTUtr1n9bRZ0X4QAmEy+8FNu7rx ESIrhbca R917i7qZYoOPvBrc/+nYowGottj271aWqyCy6BRQ+tEdDxzgl8ieBE0esGgWAqtJlYnpt5LD+ipU4qHdvfZpH3EPVdC0pSeed0CPcUFwDJePd2V0gqmz0Q0PrShtxBL3rqDdD04nCUmg1vS54LtKIvJOknss3NWOdMVFHl8hn3/4xb5TUwcAVW2x8kLUp/LKVkzUl5R2paZyi5tjEw1YXmgPo/+qOKPbCvfCN+67ZSbMmFiH/s2ZU1+1k7F9qCA7b34zpwd0prc+CV+BHWpPekfY9bS/7JLd7QVbwrruzlMthlazN8ahe7LFUcs746HWcsrhoklJZJ/6NQDy1QXBeWeEFxB0CEqNeaOiyOTwMXruGhoCnh6YPIvLa/i3ewxlyl9tV20wf1/1Aslaxwyk++bI9888xoqYluSmMmTKh2jSz/lDXfVBVupYLSm8bREGz5WaDtSl4Nhb467akiFdzRSUv8iYbRZcHZ+8wt9mojQfnOH3NZ/FPUDCMhmjjiadKvYxZ 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: This series optimizes the tlb flushes on riscv which used to simply flush the whole tlb whatever the size of the range to flush or the size of the stride. Patch 3 introduces a threshold that is microarchitecture specific and will very likely be modified by vendors, not sure though which mechanism we'll use to do that (dt? alternatives? vendor initialization code?). Next steps would be to implement: - svinval extension as Mayuresh did here [1] - BATCHED_UNMAP_TLB_FLUSH (I'll wait for arm64 patchset to land) - MMU_GATHER_RCU_TABLE_FREE - MMU_GATHER_MERGE_VMAS Any other idea welcome. [1] https://lore.kernel.org/linux-riscv/20230623123849.1425805-1-mchitale@ventanamicro.com/ Changes in v3: - Add RB from Andrew, thanks! - Unwrap a few lines, as suggested by Andrew - Introduce defines for -1 constants used in tlbflush.c, as suggested by Andrew and Conor - Use huge_page_size() directly instead of using the shift, as suggested by Andrew - Remove misleading comments as suggested by Conor Changes in v2: - Make static tlb_flush_all_threshold, we'll figure out later how to override this value on a vendor basis, as suggested by Conor and Palmer - Fix nommu build, as reported by Conor Alexandre Ghiti (4): riscv: Improve flush_tlb() riscv: Improve flush_tlb_range() for hugetlb pages riscv: Make __flush_tlb_range() loop over pte instead of flushing the whole tlb riscv: Improve flush_tlb_kernel_range() arch/riscv/include/asm/tlb.h | 8 ++- arch/riscv/include/asm/tlbflush.h | 12 ++-- arch/riscv/mm/tlbflush.c | 98 ++++++++++++++++++++++++++----- 3 files changed, 99 insertions(+), 19 deletions(-)