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 8ABA0C10F05 for ; Thu, 7 Dec 2023 15:08:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21D446B0099; Thu, 7 Dec 2023 10:08:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A5D66B009A; Thu, 7 Dec 2023 10:08:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3B206B009B; Thu, 7 Dec 2023 10:07:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id DDABE6B0099 for ; Thu, 7 Dec 2023 10:07:59 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4B1C91C06DA for ; Thu, 7 Dec 2023 15:07:59 +0000 (UTC) X-FDA: 81540352278.20.94EAB43 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by imf19.hostedemail.com (Postfix) with ESMTP id 52E1D1A0043 for ; Thu, 7 Dec 2023 15:07:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=KCZItFAf; dmarc=none; spf=pass (imf19.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.167.44 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701961677; 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=Copp2ndGZ68t6KATBAuS2R34UMtC0q0chiu6mkWyRdw=; b=0fGw6pCOqm3UU5QoetjJbm/SnHUQ3/H3okgyKMM6Z3YHTHpDUTNzF1hdhKwj78ncPBJA97 E972/KAJ48mL1Q96xqp3Uxs9PY+kgpCKVq3dPy5jVIfIB2Pj1uHDJ3DcHNZAXRfm8bY/jR mfjph5fK2s4Vmcn5aAIQDN54n2F8wqc= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=KCZItFAf; dmarc=none; spf=pass (imf19.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.167.44 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701961677; a=rsa-sha256; cv=none; b=BrQd0rBdDoPulQP24tq5cH8Am6ipCuZkNHlV7i+BbUf5wxk66EaXdynkoA9vSFPORJXrjR khUDZQSbrL5Kiz3hP4p9QM07Zb3zkJgoUaiXtN4u5PE2kzMivIKrHzrXfikdOYNY9/e7ix 8KP7RfI6a9uxMkJuxoPV8vaoDfTSq/g= Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-50bf3efe2cbso964850e87.2 for ; Thu, 07 Dec 2023 07:07:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1701961675; x=1702566475; 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=Copp2ndGZ68t6KATBAuS2R34UMtC0q0chiu6mkWyRdw=; b=KCZItFAfcMedYUNMcDa9hIjmsIjQ0VJ3zmm3wDE//ZN383Io8sIz81bCrinEJEWPk1 ctn+L75qsOn+SmYkqj00O4exw5jH12mndlbDDLtCvVmIHuF5H3iUM4RRoK5/2HZLm/mt 4GjOOzqu2zuO/hg2MmFkx6BI2DQLGFSyIBKO5rfnsIy/Hl/hd8zBSXi62vkZb3XyVzUD BZ1pHnrqH7xWglQPuW2AUHgTKxJN7AzfiHWEK0kYl9XCO+9Yz98108ZIa9vVTrmYa/be Kc2jzt9pL2A4QUFlLWGH8I96tDWmz23jjLlLJ41oxR8TQ/KScSxjo+gXFuwEcdk1u/M/ 7AKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701961675; x=1702566475; 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=Copp2ndGZ68t6KATBAuS2R34UMtC0q0chiu6mkWyRdw=; b=U0A9RmiYrVuFnxEQFJRFJUwgFKc2wVWtLUnS/HS+m2nZx9yCSDuEUuhGh/tndZH25U NurKVWu3OkBNPOPPkgw+eEInMW04xSDfjK2PSVOlcS/Gfdzeu+slxl9MT4WvEemwQHrE PXGQzj002OSh2pVwaJ7BW/E+TuEmQH4vLFJnLWJy0TobZ6/ILjblaD9kQ++ueKwSTLu1 1knNn1LvtCfvIrcEfHs6olmAlUE1T5zMJKfOzTJsZoFnhE9ipVun/wLBnaw+honZlysK ZQA/TOGIC6HKOktYC3tH/T3im76xGV57KLtPBSAT+nDhK14YMO7QdaK+8uRXvs8mnTSP slqQ== X-Gm-Message-State: AOJu0YwBsusQVF/w2WMWrJS5p23q97Xy141RwOqOa8zzTmluAuiBnS/A IwxOp0SoShgakWv1zeMa1pGCpA== X-Google-Smtp-Source: AGHT+IF3ts9ek/mYmRNdXx3GxmP46nrPUW7Zl/dOKYDi965OgtHxqAPAmVkPP3Q02kKv6wkmHjBDJg== X-Received: by 2002:ac2:5147:0:b0:50b:debe:d35d with SMTP id q7-20020ac25147000000b0050bdebed35dmr702137lfd.133.1701961675502; Thu, 07 Dec 2023 07:07:55 -0800 (PST) Received: from alex-rivos.home (amontpellier-656-1-456-62.w92-145.abo.wanadoo.fr. [92.145.124.62]) by smtp.gmail.com with ESMTPSA id i11-20020a5d438b000000b003332ef77db4sm1647628wrq.44.2023.12.07.07.07.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 07:07:55 -0800 (PST) From: Alexandre Ghiti To: Catalin Marinas , Will Deacon , Thomas Bogendoerfer , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Paul Walmsley , Palmer Dabbelt , Albert Ou , Andrew Morton , Ved Shanbhogue , Matt Evans , Dylan Jhong , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH RFC/RFT 4/4] TEMP: riscv: Add debugfs interface to retrieve #sfence.vma Date: Thu, 7 Dec 2023 16:03:48 +0100 Message-Id: <20231207150348.82096-5-alexghiti@rivosinc.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231207150348.82096-1-alexghiti@rivosinc.com> References: <20231207150348.82096-1-alexghiti@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 52E1D1A0043 X-Stat-Signature: bsa97pbhhaei1sif6o68q788384g6a9a X-Rspam-User: X-HE-Tag: 1701961677-854697 X-HE-Meta: U2FsdGVkX19EWdfsyXJipTPQPfm0QE1V+SbijmFm031WX/1xF95wETeigsFNqOAKqxqPIGYJmwm6zFWku+yI9sYlkqXpDtwSeyY8Ki+N1K2rsO7zGbF08rBXwRq1BCwEtEmN8Xjxvth1NDAG6K6Np9BRIGBWea1/AVcQEh1u79Hb8AIk83twzFMt+qufXDpn21WkZ8ep3bGK0j4FVpmtWXpU2lsLzYYHBaBn2mNhG6TvMz3/6qe7bMztNzn072xclIWkFWg3MEFesma4l/fDBhx6ANkNMBPZwOSWLtYNAW/XXGMrrzuXm2PgwevPuhG9FsjKVW/3QqFVo/hvVIH8z7bxGyrloBrSYEs6Jv32hmyPbnfme9PDKI75YLHJPODRWL9ZdtyJ5bpQo4mSwcM89+bsd7FAzH/6o4Ae/C0ViiCu+AYD5beKHNsituSoF3wmKdaUr0hk83RmRF7oNTkfgE8zg07SepsUdNL8DoRFvJCVJWj72PVyKAzlMYb0nTiT2tXvdSK+PHhIUhxp1g5lEehuG76DeBJdM7v2G+rLSIH3Yhv12ZaVtqzmWagOCQa8eem9nF8hGKnAM0TWv1jNAe+PesiqI984Q/xQVnixy8X/2+5JR3/NN6r64ZEW+kiCZ3/SG7u3krOiwX304Uk+54Sn0kvVbBi7bXifgLCLQZQ24JAV2alBqzvnNJIdyF3J/CXvfuGYyra9E2r4sC85FxTzXHCf5iPXUKuvu/Q45C2svN6qyokFn2kBZ7/bTiWTE4ymassgvqN/GMk1bUTyQo04OOxSPVFmdu2++FJXW9y5TEiPUfq7MmO2vw2PPw0GsrpQ5DpJxrOo63acu14iLeJ/+GdEIk5q59wT2Hllx0mjosv9uqO/kCFQjyvfyYbP6nkAjmvOBTMjaRxpT0E1zNRO5MdcPXJV6sRYHxQdur1ciIbYa0tzb5/q7GZHa+y69AVGe56yXdFI5hL3HnJ p3roB1Ge Zi4WO0gq/B5ux7SKERlXoadPa5t7Oy9X52IP9IFe0Da5WE4dvMYfMueGjn7buaY8XurH8I+WLa29XKKIqX146OQBHU4u68n/IVbiNjp06+l6UcYmCUxe+74UQU1JQC+ZjQ9x1hNtGO0NRPBrYXFLnz2dELXBkp2X+9sD0iZSVhGEgNADb5v2r+J/XrX7TcnelsfhGspg/5QT38q1FKP34CyCKm17k5VYYLrgE7U1rsaWUvpdhERplhXeil1EmNysY4y9poZOXq9ycesJf8B0L7L4sBReZKeeWwxOosRxVbOUYtjS29ta9pifQRlTUNCaN4QmIVrD3/dhAxwGSeYnfanfJHGmNOXMQi1lWBgwalTChebEywk0c2M4X1MPm6Rkj1RnU+jfClFnd/Ien/AzqDbPB7zdqARxQUkfhbKW4+pmHZsexFA4hWUOazpGXZipeCt1ZbLqhwvrdRxDJ+1FvBprgbDyVnhlAy7Z2i3piUbYVg7Y= 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: This is useful for testing/benchmarking. Signed-off-by: Alexandre Ghiti --- arch/riscv/include/asm/pgtable.h | 6 ++++-- arch/riscv/include/asm/tlbflush.h | 4 ++++ arch/riscv/kernel/sbi.c | 12 ++++++++++++ arch/riscv/mm/tlbflush.c | 17 +++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 89aa5650f104..b0855a620cfd 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -550,7 +550,7 @@ static inline int ptep_set_access_flags(struct vm_area_struct *vma, return false; } -extern u64 nr_sfence_vma_handle_exception; +extern u64 nr_sfence_vma_spurious_read; extern bool tlb_caching_invalid_entries; #define flush_tlb_fix_spurious_read_fault flush_tlb_fix_spurious_read_fault @@ -558,8 +558,10 @@ static inline void flush_tlb_fix_spurious_read_fault(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) { - if (tlb_caching_invalid_entries) + if (tlb_caching_invalid_entries) { + __sync_fetch_and_add(&nr_sfence_vma_spurious_read, 1UL); flush_tlb_page(vma, address); + } } #define __HAVE_ARCH_PTEP_GET_AND_CLEAR diff --git a/arch/riscv/include/asm/tlbflush.h b/arch/riscv/include/asm/tlbflush.h index a09196f8de68..f419ec9d2207 100644 --- a/arch/riscv/include/asm/tlbflush.h +++ b/arch/riscv/include/asm/tlbflush.h @@ -14,14 +14,18 @@ #ifdef CONFIG_MMU extern unsigned long asid_mask; +extern u64 nr_sfence_vma, nr_sfence_vma_all, nr_sfence_vma_all_asid; + static inline void local_flush_tlb_all(void) { + __sync_fetch_and_add(&nr_sfence_vma_all, 1UL); __asm__ __volatile__ ("sfence.vma" : : : "memory"); } /* Flush one page from local TLB */ static inline void local_flush_tlb_page(unsigned long addr) { + __sync_fetch_and_add(&nr_sfence_vma, 1UL); ALT_FLUSH_TLB_PAGE(__asm__ __volatile__ ("sfence.vma %0" : : "r" (addr) : "memory")); } #else /* CONFIG_MMU */ diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index c672c8ba9a2a..ac1617759583 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -376,6 +376,8 @@ int sbi_remote_fence_i(const struct cpumask *cpu_mask) } EXPORT_SYMBOL(sbi_remote_fence_i); +extern u64 nr_sfence_vma, nr_sfence_vma_all, nr_sfence_vma_all_asid; + /** * sbi_remote_sfence_vma() - Execute SFENCE.VMA instructions on given remote * harts for the specified virtual address range. @@ -389,6 +391,11 @@ int sbi_remote_sfence_vma(const struct cpumask *cpu_mask, unsigned long start, unsigned long size) { + if (size == (unsigned long)-1) + __sync_fetch_and_add(&nr_sfence_vma_all, 1UL); + else + __sync_fetch_and_add(&nr_sfence_vma, ALIGN(size, PAGE_SIZE) / PAGE_SIZE); + return __sbi_rfence(SBI_EXT_RFENCE_REMOTE_SFENCE_VMA, cpu_mask, start, size, 0, 0); } @@ -410,6 +417,11 @@ int sbi_remote_sfence_vma_asid(const struct cpumask *cpu_mask, unsigned long size, unsigned long asid) { + if (size == (unsigned long)-1) + __sync_fetch_and_add(&nr_sfence_vma_all_asid, 1UL); + else + __sync_fetch_and_add(&nr_sfence_vma, ALIGN(size, PAGE_SIZE) / PAGE_SIZE); + return __sbi_rfence(SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID, cpu_mask, start, size, asid, 0); } diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c index 77be59aadc73..75a3e2dff16a 100644 --- a/arch/riscv/mm/tlbflush.c +++ b/arch/riscv/mm/tlbflush.c @@ -3,11 +3,16 @@ #include #include #include +#include #include #include +u64 nr_sfence_vma, nr_sfence_vma_all, nr_sfence_vma_all_asid, + nr_sfence_vma_handle_exception, nr_sfence_vma_spurious_read; + static inline void local_flush_tlb_all_asid(unsigned long asid) { + __sync_fetch_and_add(&nr_sfence_vma_all_asid, 1); __asm__ __volatile__ ("sfence.vma x0, %0" : : "r" (asid) @@ -17,6 +22,7 @@ static inline void local_flush_tlb_all_asid(unsigned long asid) static inline void local_flush_tlb_page_asid(unsigned long addr, unsigned long asid) { + __sync_fetch_and_add(&nr_sfence_vma, 1); __asm__ __volatile__ ("sfence.vma %0, %1" : : "r" (addr), "r" (asid) @@ -149,3 +155,14 @@ void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, __flush_tlb_range(vma->vm_mm, start, end - start, PMD_SIZE); } #endif + +static int debugfs_nr_sfence_vma(void) +{ + debugfs_create_u64("nr_sfence_vma", 0444, NULL, &nr_sfence_vma); + debugfs_create_u64("nr_sfence_vma_all", 0444, NULL, &nr_sfence_vma_all); + debugfs_create_u64("nr_sfence_vma_all_asid", 0444, NULL, &nr_sfence_vma_all_asid); + debugfs_create_u64("nr_sfence_vma_handle_exception", 0444, NULL, &nr_sfence_vma_handle_exception); + debugfs_create_u64("nr_sfence_vma_spurious_read", 0444, NULL, &nr_sfence_vma_spurious_read); + return 0; +} +device_initcall(debugfs_nr_sfence_vma); -- 2.39.2