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 DD434C47074 for ; Thu, 4 Jan 2024 12:15:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68B546B039D; Thu, 4 Jan 2024 07:15:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 63A8C6B039F; Thu, 4 Jan 2024 07:15:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 501D66B03AF; Thu, 4 Jan 2024 07:15:21 -0500 (EST) 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 3EBF76B039D for ; Thu, 4 Jan 2024 07:15:21 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 175AAA1AB0 for ; Thu, 4 Jan 2024 12:15:21 +0000 (UTC) X-FDA: 81641523642.15.A06A079 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) by imf04.hostedemail.com (Postfix) with ESMTP id 4669B40023 for ; Thu, 4 Jan 2024 12:15:19 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=JvmnxfoK; dmarc=none; spf=pass (imf04.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.41 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=1704370519; 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=Cr+6JCj5wYflPgWTMV3PjMKTTuzLUTwn0VcjXquQfIU=; b=Kox1PVMiesuE1fw601it3T861Tkcw5nlpBNMlJmLEMQq5kypjrpjLimUbeNGv2RUdmIGbp XgpSZ4Ce12tNGD5kEWPk1bZLpj6IpNS3sVht9mM8rW5ulp1nPexCim6QRu04Dvy6gge6PK TGAg9fA6iAohCVCeKSWNJi4xKugfybM= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=JvmnxfoK; dmarc=none; spf=pass (imf04.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.208.41 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704370519; a=rsa-sha256; cv=none; b=eva8Dzj1VhrS36tVLRDIp1yjQRRBUIpYNiQP2AwzD8M1znKyPLZo/+hd6b2HvQAz6ker9P /cpc0xRM0TQcojAMJwnaTNQkP7LJzbe4dGBd48b/EJ0daxWJzspVBXLA4vQ6K09IYmCmXf FPpamRF0iPyTcQ6D/WbU8jI7zqICeeE= Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-556c60c3f9aso595550a12.3 for ; Thu, 04 Jan 2024 04:15:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704370518; x=1704975318; 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=Cr+6JCj5wYflPgWTMV3PjMKTTuzLUTwn0VcjXquQfIU=; b=JvmnxfoKwjgmUGPgrZRrrDngb9AK3y4Rc7wvt7zxxHOThM7hbqzVN9TR8RmPB1RdfZ 2zF8c2ut8rU4qtrUpQWJ8wDTcS0JgYyA9xIxQHwfYl58SnVoMsQd0gu47OYhxyI7k1qj 5SLCuOGrc+PIkRA4lMPdfgqBOvfzaG85fXCTlNHVlG3CURvGnaOCU23lg+YjlbVT2PJO TyiGCgaEOg+w0GNE/5r3iUqETzTljpUkNdIxyX7JbxTTgM5I9CgLI+V88wA9oPZUR90V 5Y7kbEgQYycJtjO4+T+KQL8ABwxlOOKJYe+Qn5h+C2NV5ump2oVTFm2/zmKB5QpfGNou Uk0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704370518; x=1704975318; 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=Cr+6JCj5wYflPgWTMV3PjMKTTuzLUTwn0VcjXquQfIU=; b=U6e+52Vf+PyyRj77z5pRBy6+RjCLvDBy3w+pnQzEG9z+0BbOL+esITlk42OwmRPPWy 382lgyb+rYhlWg5Jm6Wplm+JFPxRapp1VlNnofYzvv5QbJtpW+fjnq9qJbmOjWIK3tII x4/FK9rXDUEyTjpaWpEVz1NVQ/aG1HPg0riYk70DabD9Wdrt7wCFkOPXQSvWxtkOpTr6 ZQPuzMc0CYWxrdgR4alRxYjTO3Cn9WNx3mWE4CkFLcfaDFxkH4I4VsHJrOcmyn9tk1p3 q/bhUX5tOcFhjtBsQbyAYs+XLQygdgsRcMc9PuTtgFrjd30+5NQkHUStIbKsxrn9AU3j bhlA== X-Gm-Message-State: AOJu0Yy4BWRddmPaovaTAsXTf7T+mzkimVCVwfnpKPQ23FVwzwjXgX6a 0T0FuDSC4Hqoht+w5nf8MbddhpVKIJOVKTubauSc2z0Xia0Sw/iRf72x71yfnyg= X-Google-Smtp-Source: AGHT+IF9Amr8wIXPEypRo0GIvsDglsBnqIGOchyL8FhWSlxQUjRa7UeZ2A4lWZZ/ocajCTpC9tPfEgqs7RAQB3z4QPc= X-Received: by 2002:a17:906:f807:b0:a23:7332:9258 with SMTP id kh7-20020a170906f80700b00a2373329258mr273790ejb.119.1704370517784; Thu, 04 Jan 2024 04:15:17 -0800 (PST) MIME-Version: 1.0 References: <20240102220134.3229156-1-samuel.holland@sifive.com> <20240102220134.3229156-4-samuel.holland@sifive.com> In-Reply-To: <20240102220134.3229156-4-samuel.holland@sifive.com> From: Alexandre Ghiti Date: Thu, 4 Jan 2024 13:15:06 +0100 Message-ID: Subject: Re: [PATCH v4 03/12] riscv: mm: Broadcast kernel TLB flushes only when needed 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-Rspamd-Queue-Id: 4669B40023 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: ztf8tmknoseff9ycamcem6m6ueiaoeco X-HE-Tag: 1704370519-194675 X-HE-Meta: U2FsdGVkX1+chyvWzUipPHSc190rbC21ix0zyfyUbcvaE77TObYwnEp+/U/c6ezpZba+X/xULQ8XnPcSLmEqBiSQ1oatenalZ1s7mMaAjDKISHjosQHGLjsUz+8r+TmTAK6fH7EU4D1U+BibvxJeMYLnZOlpoPmRQlstOZ2w7an2ZvRwTwXi2KjYFfyVSro5C8/H9T/0H4imYmUvo7e970ler+j39VSduSlJpWnJZeCKT7REe6xAgYdaXXaRQ37oZIcp6OjfI5PDOwGrsNZzJMrMQMAYjYRVLRjUMaXwNgdeTyw4u0e0/yMhZd9CvkGudNGJlVj/4YdJuMO4777qKi13JQc3GauT0eb5PkVGnK7K4gdjqdaCyyq48uDVga7gZ/nXEpS4sOeQKsNddp15zDKAjFLjkWy9zCxgjJaijahIfCHGp4dxPKbDYFkTNKqAaSud7yFCWbL9w5Z9XNCjAuCsaYGzIVoKauCl4NRlaXPt+JqyTVShv+Sa4wwHJe2NDDXNgJDmHpN4m1EWsqGmxG0NSk/v3biyWgitCUlumyNKuNWDkBQTqGQKASUS6d1cEVoeK//FV3WzDQTUs0J97pWXpDTMdHcDKy9XHV7E1Y0PXYsPi/HHgYtYiFRD4MxGy4nwo2W7CdRwCcOzplFIPl6lcMwERUdjBAq6+7EO+K0B9GJr6PDt1PJWtapiOYZV0qfBlio6PANNZZ78H0yUOT7ED2PS8gyIcNRdWSRlOaqSYNxer3LgoT69VjhvY5u7hGisCS2FTLgCJdJsYhI9IbbiyO28TPLlpR8vMe6VNduG81KT43br7d8W7MMN7vsiY4nG9EQ2VZxuq/BpUN6UhrBJ8ZCXLhyn0dT4n+JRzf1Pts6EBGbj6gpQngJuCX9UXYaDJYzLW8daoIYrGMk408itiPUetJRorCm76B6mp+wf23r8XfmOciOgG5iNtkUX2hbdZi4PCwrl+FunLEg jY9D0Q9x VPvS+cn529hm/wlV6+QbFm4j8DRTyykZMuYaeDlyQHqJ39DwnblNXEkvgipdAfP/cTmlMgnIpG6axS2Fx5Polwr8myZls586Opoi3SlR8J4kb9WaFsqSBUX9AgUIjjg4tYo5alNJg86doDmmAn4CmXPomXtRPfFzbXkZBwkY1UFeJebpflfoK6KmvnA9flwvWl5gLYCDcQ9FBPplk4lbdS5Abv/b/cAwj18sIkAfEVAIegEu0iguKxqB0Pk+X2ePF33KCfZDyxBbvbAAM37BoRFrvYYjusBAtuKbaQnRqXdB5u/EYuWDtI32+H8sSwJkkVd9iXzuf073MhnzjLM8N5e8gNxoFGz4tWETmE6GKen++/UHsU6J7XBJf+svSn2T7RYJrGEAHBXPQQbxGFeNc5/8Azwm35qHXN/ZMCODFuLnQCtU62uB8OziMxA== 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: On Tue, Jan 2, 2024 at 11:01=E2=80=AFPM Samuel Holland wrote: > > __flush_tlb_range() avoids broadcasting TLB flushes when an mm context > is only active on the local CPU. Apply this same optimization to TLB > flushes of kernel memory when only one CPU is online. This check can be > constant-folded when SMP is disabled. > > Signed-off-by: Samuel Holland > --- > > Changes in v4: > - New patch for v4 > > arch/riscv/mm/tlbflush.c | 17 ++++++----------- > 1 file changed, 6 insertions(+), 11 deletions(-) > > diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c > index 09b03bf71e6a..2f18fe6fc4f3 100644 > --- a/arch/riscv/mm/tlbflush.c > +++ b/arch/riscv/mm/tlbflush.c > @@ -98,27 +98,23 @@ static void __flush_tlb_range(struct mm_struct *mm, u= nsigned long start, > { > const struct cpumask *cmask; > unsigned long asid =3D FLUSH_TLB_NO_ASID; > - bool broadcast; > + unsigned int cpu; > > if (mm) { > - unsigned int cpuid; > - > cmask =3D mm_cpumask(mm); > if (cpumask_empty(cmask)) > return; > > - cpuid =3D get_cpu(); > - /* check if the tlbflush needs to be sent to other CPUs *= / > - broadcast =3D cpumask_any_but(cmask, cpuid) < nr_cpu_ids; > - > if (static_branch_unlikely(&use_asid_allocator)) > asid =3D atomic_long_read(&mm->context.id) & asid= _mask; > } else { > cmask =3D cpu_online_mask; > - broadcast =3D true; > } > > - if (!broadcast) { > + cpu =3D get_cpu(); > + > + /* Check if the TLB flush needs to be sent to other CPUs. */ > + if (cpumask_any_but(cmask, cpu) >=3D nr_cpu_ids) { > local_flush_tlb_range_asid(start, size, stride, asid); > } else if (riscv_use_sbi_for_rfence()) { > sbi_remote_sfence_vma_asid(cmask, start, size, asid); > @@ -132,8 +128,7 @@ static void __flush_tlb_range(struct mm_struct *mm, u= nsigned long start, > on_each_cpu_mask(cmask, __ipi_flush_tlb_range_asid, &ftd,= 1); > } > > - if (mm) > - put_cpu(); > + put_cpu(); > } > > void flush_tlb_mm(struct mm_struct *mm) > -- > 2.42.0 > You can add: Reviewed-by: Alexandre Ghiti Thanks, Alex