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 1C4B6C47074 for ; Thu, 4 Jan 2024 12:34:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4281C6B03AD; Thu, 4 Jan 2024 07:34:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D8016B03AE; Thu, 4 Jan 2024 07:34:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 29EF46B03AF; Thu, 4 Jan 2024 07:34:12 -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 178A06B03AD for ; Thu, 4 Jan 2024 07:34:12 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id D9EB5120680 for ; Thu, 4 Jan 2024 12:34:11 +0000 (UTC) X-FDA: 81641571102.06.6A8AF1C Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by imf11.hostedemail.com (Postfix) with ESMTP id 135BB40010 for ; Thu, 4 Jan 2024 12:34:09 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=rCCHnV5E; dmarc=none; spf=pass (imf11.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704371650; a=rsa-sha256; cv=none; b=athJMdqHwH/sHS9dfYvHdEok0ePFELyaMQWiFa7D53G0iRmoejXDCHteziTTHHS4lHy5uj mt6aIB4HqQ9ZovXKzbznCKHQlY248Fx3som83nBxA00nwlPzxdaR6gXRuEjXmLWxN2nLFV VSLM/PIxceQ3s6XZh6vIrvOZY8MrPnc= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=rCCHnV5E; dmarc=none; spf=pass (imf11.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.51 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=1704371650; 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=Ik4uyCYv2TQarb31EWuXmmWrYINJlUytsNJyudVrGMk=; b=ATd9nWzTxVd/Rb7mkHU2azclJk8hCwQCx2gwvGLliQo7V9xWhrgz6/MED8fBEyuy65MihK 5bE7VQiIMWpAOqVy5Mhfz8FbZZL0oSMzrupfXhDSlfMLoxOcjVykN9I1rVuUODHMnuwR0U UQ4pgMPMfcLsfI732fsi13TW7rv/AKA= Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-552d39ac3ccso2536574a12.0 for ; Thu, 04 Jan 2024 04:34:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704371648; x=1704976448; 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=Ik4uyCYv2TQarb31EWuXmmWrYINJlUytsNJyudVrGMk=; b=rCCHnV5EPO/1rHEJouWG6KnTMLAhqLdjh8nBuWWxDdImnmxJnTh9OVtoEyVusWpOjI 2JWrLaHmT78J4YTcnm94SEH3HbuNectGyzQYEQa66XlLxBvv6npWId+7Y1T6rUkrCy4B hVUvmYnrDY09I1Wj8+9rU8paFlz4QhbYFAgp5RVBvwowzQ5PlDGT2WhwdcZvuOcvA5C/ n7dRT6SQEBujRzPKM/+KFLpYalD2w1VpdW6IKwDopTmCPr3Weh9j8g9Q18wCqj/SalIJ dJD3s0M0l3Lpq4B8axHNtXhuDNFiy3ORR1lQu2K3iAKLgiNyZKJERqccI39+hTrHtxVB Eb8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704371648; x=1704976448; 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=Ik4uyCYv2TQarb31EWuXmmWrYINJlUytsNJyudVrGMk=; b=KXDUyLjMmKuF/3ycClpV9AEXTVeTrdVLh2mbLCAtrN9VxLCb4tOlrVUPDZ6s6Dk2LT YVO0d0Rd7kbm8/hIkJ1ouxi8bxed7invQY6cwKJDugiG2MPv+xD4tyYWF3NwIHykCL+Q Vhm9oTMbwUbL8YhisuVRWtMaTse21uOoHkACl7rmzBEVvIRIKeAvL3AX3MjZIZSbAF3y yXfKDH7XleKXxEIp0a+pIDNw9akQV99eNpDTQWdqiRGPkemrNIBmYP/RRfaKEWO5r8gT EuKUUMqvv8c6ubkc4j0TvvAon2trO69WmpRI0ysav2AQYlbRY3k4GJOGHqy3U5S3JUry npnA== X-Gm-Message-State: AOJu0Yy8YV6JaskJDEFD8LagrkQGITXY+b4H9FBXh2HpVANin9kEAApB ZyPna1Z+8mYhIHibL5sFwEy2WyIOOMxv8CRHToL5Bz363Gh8Kg== X-Google-Smtp-Source: AGHT+IERCr09H6KSLmfFQXyDrlFQIYorvDwOvmuf00b1qBW8NX0+J9jeWqyUIre3qPyVI8Wbm7Z5IHlV/zHPZA4aVyk= X-Received: by 2002:a17:906:56d3:b0:a23:5893:1ac8 with SMTP id an19-20020a17090656d300b00a2358931ac8mr587088ejc.27.1704371648530; Thu, 04 Jan 2024 04:34:08 -0800 (PST) MIME-Version: 1.0 References: <20240102220134.3229156-1-samuel.holland@sifive.com> <20240102220134.3229156-5-samuel.holland@sifive.com> In-Reply-To: <20240102220134.3229156-5-samuel.holland@sifive.com> From: Alexandre Ghiti Date: Thu, 4 Jan 2024 13:33:57 +0100 Message-ID: Subject: Re: [PATCH v4 04/12] riscv: Only send remote fences when some other CPU is online To: Samuel Holland Cc: Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 135BB40010 X-Stat-Signature: d7r8ekw7ubsgschfkwbxppod8pcb3x6s X-HE-Tag: 1704371649-96140 X-HE-Meta: U2FsdGVkX18SVAnW2V5q74PCfKcQc7qrvg7Ht9xlS8/nKsd5dirWadK8KBQeI1tktkKyoAlAQXNK04pV2WeagW4OaBNn7iKCIRJ6eg8lkNloabPQ7XoT6D+diR5L4nhm6ub0p73TGCl16QdO/bysnuj/Ba5Iq/RfcDUmKOmv/Hlibfec7xLOnQzds6oj6tO+JnF269VCg2JlloYrogocdAaPVIMeH3+GJvcbwYl/kGdllqaJ7XvMrBmLdplgTfoYerxA7qZlY+BvfenxbvDUpJSZ6pJELuWVZSbLcMoSOL8jHLJeWccJtqn/LXl4qkI64k27SN3QYdYKDsryKRqKij7mE0ccSFOFuN10gtWFNC9hQjgsuSx5bhghK9oNx6YcHK0RjN9LcUJ6I/OMUwKFFrMfhkygvBoEq9UyoGScYc49CCO9mKSUScFW9ueuVVrcoSB/dhOU1UHJchdUXnkJet0gkyffYLbB7mM+Ui7M2VWaoV3h4IRTAQv8H+PE9MY+HwtPT8hY2aWAecmhIhDiyDoel9ueQcu49viRj/PHqMlegwxI1fFomz4YXtMOpXE2vK3rhbjJuybtdCGN4UHy1a1AIZd+AyQR1i6mgcxIDxigqfXbGgh1nyJzXzL7q0d2cgruGq87wKjoBJwn/5+BXPJbzgfuCGsDxc2hoXkhi6g1FGG59sI1aRPkNZ7aiarFhfCEs/00S7QXkSdF5KTuFafaBwS+0NkHE0U8uL5V8WogjEUyf6Ks3VJkbTauUO1sQpt9V/FmNa0o6o+BinWsjO1jtD0VBsggH/NzrR4ejqkSVV/vGdlPuX4JWoNg+VLtC9JOIf6eGRXXx+dqHFp52E2/tcbilxgzlLXEG6YLrfWoNMnRt7ixcfbJmB1HBuwY/cFkTNYA6Ag9gLgnI2qHO+DNG20aM9kY0H5TDs+qDXsXWIjpG9v69LjAKrmFYoatp5pxJGhcSVG8XPSOgGQ dIvvvIYP z4ahVO4ke1/RfrAi1QzC/jMD4FTPTRyvHbhIa+qMNT8+uescQ+wfHXSxOE13ddEpzlxPMVV8PtVSSxz6DHIpvaerhTXVM3KVHtKharV9ZUtc4Wby9n6rYkxbSLRroCthshUrAyJiOp85oj23incCEj+/7Xu98jla7fab8q8SrgQU1TlVV/0klM+WwVGAaZAoWwICce3OoWMParI5tkarZM5vcqMftNShARB3bPiTFw4epyQb1kQew0F+LfQodwVA+CXJU74RqL3thMD76fhlsRAXXwWcVZAPXRFWomnj5cIbwnzfg34HH2j51EMAc2rJyhds5fGg/y2jka2JkqlLmpyLJsljjefpY5mrBDBeooQLxa26cPrVYtxgXdA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.026502, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jan 2, 2024 at 11:01=E2=80=AFPM Samuel Holland wrote: > > If no other CPU is online, a local cache or TLB flush is sufficient. > These checks can be constant-folded when SMP is disabled. > > Signed-off-by: Samuel Holland > --- > > Changes in v4: > - New patch for v4 > > arch/riscv/mm/cacheflush.c | 4 +++- > arch/riscv/mm/tlbflush.c | 4 +++- > 2 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c > index 47c485bc7df0..f7933ae88a55 100644 > --- a/arch/riscv/mm/cacheflush.c > +++ b/arch/riscv/mm/cacheflush.c > @@ -21,7 +21,9 @@ void flush_icache_all(void) > { > local_flush_icache_all(); > > - if (riscv_use_sbi_for_rfence()) > + if (num_online_cpus() < 2) > + return; > + else if (riscv_use_sbi_for_rfence()) > sbi_remote_fence_i(NULL); > else > on_each_cpu(ipi_remote_fence_i, NULL, 1); > diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c > index 2f18fe6fc4f3..37b3c93e3c30 100644 > --- a/arch/riscv/mm/tlbflush.c > +++ b/arch/riscv/mm/tlbflush.c > @@ -73,7 +73,9 @@ static void __ipi_flush_tlb_all(void *info) > > void flush_tlb_all(void) > { > - if (riscv_use_sbi_for_rfence()) > + if (num_online_cpus() < 2) > + local_flush_tlb_all(); > + else if (riscv_use_sbi_for_rfence()) > sbi_remote_sfence_vma_asid(NULL, 0, FLUSH_TLB_MAX_SIZE, F= LUSH_TLB_NO_ASID); > else > on_each_cpu(__ipi_flush_tlb_all, NULL, 1); > -- > 2.42.0 > on_each_cpu() already deals correctly with a single online cpu, the only thing to optimize here is the SBI rfence. So I'd move this new test in sbi_remote_sfence_vma_asid() and sbi_remote_fence_i() to avoid the superfluous M-mode entry when only one cpu is online by checking the cpumask. And since sbi_remote_fence_i() is used in another function (flush_icache_mm()), we could also take advantage of this optimization when only the local cpu must be flushed.