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 B89E2C47074 for ; Thu, 4 Jan 2024 12:39:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 42C7F6B00E1; Thu, 4 Jan 2024 07:39:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B6B26B00E6; Thu, 4 Jan 2024 07:39:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2563A6B00E4; Thu, 4 Jan 2024 07:39:35 -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 098DB6B03B0 for ; Thu, 4 Jan 2024 07:39:35 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D95BB1601FC for ; Thu, 4 Jan 2024 12:39:34 +0000 (UTC) X-FDA: 81641584668.10.988D44A Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by imf17.hostedemail.com (Postfix) with ESMTP id 166ED40011 for ; Thu, 4 Jan 2024 12:39:32 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=WixyZNHi; dmarc=none; spf=pass (imf17.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.218.54 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704371973; a=rsa-sha256; cv=none; b=4A199OQUeEC4C0n72FtDE2V32nCUj/Wck/ea2v9YtQH/XtcyQw0BavRxadyLS+33Qw7ydq WBFOQdZklWXZacQQTMyFDcQ+MHmgm0eE8XXDfLyyRueSPH4tqtKULlWHxrP8rX3cgno0XL xf/+2K7QqF/9TWk0Rqvq1dMjqu4CJTk= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=WixyZNHi; dmarc=none; spf=pass (imf17.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.218.54 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=1704371973; 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=VzvOTQrYsC64lRjX0Rt7BbitXgRl8QC6qZq6acvuD1g=; b=doIztJbi6ro4cBKvv3leMqPiR4Y2c/63Qm4Ai0Tkv6dgg2UDGLdW5yuYcu12fg4QSreH8f jQcgsaV9AovAWK7Qbf1/0lktRH/9s117RWImPObOSyBsuq3vrfaWo0IV+jDodh4JLjY85s ZgYfJwVmpbV7EH8BIArwPJ9CisE3vKo= Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a27cd5850d6so51158866b.1 for ; Thu, 04 Jan 2024 04:39:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704371971; x=1704976771; 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=VzvOTQrYsC64lRjX0Rt7BbitXgRl8QC6qZq6acvuD1g=; b=WixyZNHifADaNPyvwe8Zy7Eb59yanqgsQcFTxnLowX+EWqeOf8lPo2Zk5/2qdKfeb2 Q2ngtEcJ9aQIE7l8w/8sMjU8mk3EnAiIYKTLNM9pmuuOSJmyFrsBFyysckAOTg+4PhJf PFCufyNn1MttzUMWVaJlEWoB3+KUrJYdovuB8FnT3b6OISbKsmvy65SpEsgnZDnXfPvh z6daUNRHHrpKqjuFYQ12QoNYD1Idn2/R1jCmSbmMS5y/y02bZ4mJtn5a84PLXcMxH534 fuvPS1S79orepMIPehwI6hJZyKQNoULNryz4GKVYhvhryG6K5hVpa5cryitHLQSdo4tP M77w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704371971; x=1704976771; 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=VzvOTQrYsC64lRjX0Rt7BbitXgRl8QC6qZq6acvuD1g=; b=w7HG70iqoh/EM88euM02htKx+SK6sQnmO2Jgh42jNO6UuWwLg7gkmUsXbHJzuGFXf1 IlmaO5s7JEE2K9+NbjMkS4WONB6xY7K7WWbB/d/uvQoNqsdQL2dtuRaXg0MgVpGmHX9Q oktyTBV0+wo0/+N9Zv0+aj3FWf5BNM1skjurkYXeCrjOfrzSiLg2USs7++s6v55iPtry uFY9n9GpnzallfSPwjxujgUlhXi46isUeGXq6XOuaYC5OFvG0SC4CZ/OT6ztnqJ1d5Ui KW/gT1zIx585RAbiW5MKLuF8XGtjhCwdhB880xTxOgiir4RtJqJCHYzGrIAMYJUH36Zz KLNw== X-Gm-Message-State: AOJu0Yx8J+bU4pqyQj1m2BNchhJynhJc3WbMFX8l4K7tELNYIJ9UVc3P Kl2kNU7/UpE3GPuHTrzygC/ZXJdzaLvwsW6J5Baw7BFRghpGzg== X-Google-Smtp-Source: AGHT+IEeRR4I3uWL5TxDjZ3qrupVtXYMaBZuKr0o+l32Kjda9sN5IKWIaRFz0g22rzETebnGyfVZeFTdsQogwR+pnjM= X-Received: by 2002:a17:907:76a8:b0:a26:9916:a46b with SMTP id jw8-20020a17090776a800b00a269916a46bmr317729ejc.33.1704371971601; Thu, 04 Jan 2024 04:39:31 -0800 (PST) MIME-Version: 1.0 References: <20240102220134.3229156-1-samuel.holland@sifive.com> <20240102220134.3229156-9-samuel.holland@sifive.com> In-Reply-To: <20240102220134.3229156-9-samuel.holland@sifive.com> From: Alexandre Ghiti Date: Thu, 4 Jan 2024 13:39:20 +0100 Message-ID: Subject: Re: [PATCH v4 08/12] riscv: mm: Introduce cntx2asid/cntx2version helper macros 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: 166ED40011 X-Stat-Signature: mut1qrmyb4q19krmhs8nhbae13zgkxkz X-HE-Tag: 1704371972-760647 X-HE-Meta: U2FsdGVkX18IxPnRq0/6EnNVMrq3H370Hkxc3XyHu+AHVs3Ejppf+1aNAjKuTetHUMqpPDnyVEXYHv+3E26+5pRs6l3ZbBP7UB+3g1LaenCzT9VwtU3AETg1UbKVvRnPfpnj3t6g00/h/RehUnVzIHjKQRNNIa6rFbeuBV5sJWo3hhYymQ/jfR5FzDH9LzV+gXSpKJIJcxuWq1k2zxt/Z/Qj73Rvs9X7iGpLlPwO1Hp21Ciw2jbDgBWeiasLJ1QiotqPa6Gx5etbV5hr9hFYqu/FCNbkLA8+uW1g87RUX9ir4PljXzfGLBXpfTciqVp/ZjJ4MYNhU27u7Vu47el24tSYxp1RltsOEUGboQBq5jd4vyXQJh75XjYqV8Z4mNEA1/hVUIyB1e+69KEZMLnmlv/OmLPMb0WyE/aaT8IrD1fDKgmfGGn1/CMKnJNBFsPwku7fhFqadYj/bfAbEBRmM8UZjG20EHthR1J+m6GTy4x2oI7jnkWODDJsRU/RoilDvPPZDacx/tqvj3ha+MnmT6Ctw2WlTkQa/IrtwlQbP3+SFR+9Yhk8OWfKUnazovADeRexEq/+WiPJnubeX9BZD2bIHk/TTb+j272yLFyY74cpn59VjaMtd+p1k1/rdBopICBHfOPL3y4I2IGwW21KnOxQWfsyc34dKBzg5EuI/AvNCZUk15R7v/E44MXmDLb2ChWuCa/9paXl87/e4i7jW5vu2+0GQVqHAGJo8AxramdToxUS7h8qmt2YDTBS5mtipR+3oSvSQuB7M55UuPpcc58VBRMLiW6PQx4ROVhQ51gj0odBatPHCyYNzkRJcmQHeh/pGRi5OyfcvKyRILgLNPZed5rC+btbPGU+CkMK0WAUan9HU5IXOjT3vyB8OendP+XqxyOw1iK4NOUe1ITI7wIYD/kJCG15yEqkbu/OSvNm9k3jMCx5c8BB7Dj4Ic3fgnkWwrNHszP5OAtbAPz xGAOBiPn r/XIA4HOgB0IU0rr6U1FzQ56PzJnnRwcYD4cxum5vWDcgydJfhbJmChoM6GC6lliZQIxy+Dy6vhilYWZvjCuortyqIgNO3ly1xnTlOjautQcMrVu24jQdPaWLSqFghIu1tsdeyaQB64DBIsGxpjd+0cdnkD4QW3CXr1g/x5OKCcQuB6Y+JdadGfdtije6A55rmxjNd7Cg6G4jGOWneLi4w0KWYDtWaWx6DPZNX5rsEREqYEs5wSpt/k0J6Ij7gDNHSQRKm/meTANv35yheHPkisKLRV5mA89mfNmDF+whTbe+DBa75MTHMWatdzVn5b2E6vuvs1X3MLJ2OnSuZL63qEqAocH3JtrgvAPZ7J2a4vaQDusIGsLrkGElPeJc+3gIdutP 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: > > When using the ASID allocator, the MM context ID contains two values: > the ASID in the lower bits, and the allocator version number in the > remaining bits. Use macros to make this separation more obvious. > > Signed-off-by: Samuel Holland > --- > > (no changes since v1) > > arch/riscv/include/asm/mmu.h | 3 +++ > arch/riscv/mm/context.c | 12 ++++++------ > arch/riscv/mm/tlbflush.c | 2 +- > 3 files changed, 10 insertions(+), 7 deletions(-) > > diff --git a/arch/riscv/include/asm/mmu.h b/arch/riscv/include/asm/mmu.h > index 355504b37f8e..a550fbf770be 100644 > --- a/arch/riscv/include/asm/mmu.h > +++ b/arch/riscv/include/asm/mmu.h > @@ -26,6 +26,9 @@ typedef struct { > #endif > } mm_context_t; > > +#define cntx2asid(cntx) ((cntx) & asid_mask) > +#define cntx2version(cntx) ((cntx) & ~asid_mask) Not a big fan of the naming, I would have something like get_asid_from_context() and get_version_from_context() or something like that, but up to you of course. > + > void __init create_pgd_mapping(pgd_t *pgdp, uintptr_t va, phys_addr_t pa= , > phys_addr_t sz, pgprot_t prot); > #endif /* __ASSEMBLY__ */ > diff --git a/arch/riscv/mm/context.c b/arch/riscv/mm/context.c > index 217fd4de6134..43d005f63253 100644 > --- a/arch/riscv/mm/context.c > +++ b/arch/riscv/mm/context.c > @@ -81,7 +81,7 @@ static void __flush_context(void) > if (cntx =3D=3D 0) > cntx =3D per_cpu(reserved_context, i); > > - __set_bit(cntx & asid_mask, context_asid_map); > + __set_bit(cntx2asid(cntx), context_asid_map); > per_cpu(reserved_context, i) =3D cntx; > } > > @@ -102,7 +102,7 @@ static unsigned long __new_context(struct mm_struct *= mm) > lockdep_assert_held(&context_lock); > > if (cntx !=3D 0) { > - unsigned long newcntx =3D ver | (cntx & asid_mask); > + unsigned long newcntx =3D ver | cntx2asid(cntx); > > /* > * If our current CONTEXT was active during a rollover, w= e > @@ -115,7 +115,7 @@ static unsigned long __new_context(struct mm_struct *= mm) > * We had a valid CONTEXT in a previous life, so try to > * re-use it if possible. > */ > - if (!__test_and_set_bit(cntx & asid_mask, context_asid_ma= p)) > + if (!__test_and_set_bit(cntx2asid(cntx), context_asid_map= )) > return newcntx; > } > > @@ -168,7 +168,7 @@ static void set_mm_asid(struct mm_struct *mm, unsigne= d int cpu) > */ > old_active_cntx =3D atomic_long_read(&per_cpu(active_context, cpu= )); > if (old_active_cntx && > - ((cntx & ~asid_mask) =3D=3D atomic_long_read(¤t_version= )) && > + (cntx2version(cntx) =3D=3D atomic_long_read(¤t_version)= ) && > atomic_long_cmpxchg_relaxed(&per_cpu(active_context, cpu), > old_active_cntx, cntx)) > goto switch_mm_fast; > @@ -177,7 +177,7 @@ static void set_mm_asid(struct mm_struct *mm, unsigne= d int cpu) > > /* Check that our ASID belongs to the current_version. */ > cntx =3D atomic_long_read(&mm->context.id); > - if ((cntx & ~asid_mask) !=3D atomic_long_read(¤t_version)) = { > + if (cntx2version(cntx) !=3D atomic_long_read(¤t_version)) { > cntx =3D __new_context(mm); > atomic_long_set(&mm->context.id, cntx); > } > @@ -191,7 +191,7 @@ static void set_mm_asid(struct mm_struct *mm, unsigne= d int cpu) > > switch_mm_fast: > csr_write(CSR_SATP, virt_to_pfn(mm->pgd) | > - ((cntx & asid_mask) << SATP_ASID_SHIFT) | > + (cntx2asid(cntx) << SATP_ASID_SHIFT) | > satp_mode); > > if (need_flush_tlb) > diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c > index 76b24d4ed4ab..5ec621545c69 100644 > --- a/arch/riscv/mm/tlbflush.c > +++ b/arch/riscv/mm/tlbflush.c > @@ -85,7 +85,7 @@ static void __flush_tlb_range(struct mm_struct *mm, uns= igned long start, > return; > > if (static_branch_unlikely(&use_asid_allocator)) > - asid =3D atomic_long_read(&mm->context.id) & asid= _mask; > + asid =3D cntx2asid(atomic_long_read(&mm->context.= id)); > } else { > cmask =3D cpu_online_mask; > } > -- > 2.42.0 > You can add: Reviewed-by: Alexandre Ghiti Thanks, Alex