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 9D76CC47074 for ; Thu, 4 Jan 2024 15:42:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 158F86B038E; Thu, 4 Jan 2024 10:42:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0E25C6B0390; Thu, 4 Jan 2024 10:42:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9E2E6B0391; Thu, 4 Jan 2024 10:42:52 -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 D6CD46B038E for ; Thu, 4 Jan 2024 10:42:52 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A37171403FF for ; Thu, 4 Jan 2024 15:42:52 +0000 (UTC) X-FDA: 81642046584.01.7B0CBCC Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) by imf21.hostedemail.com (Postfix) with ESMTP id B42E81C0002 for ; Thu, 4 Jan 2024 15:42:50 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b=aaDROjZI; spf=pass (imf21.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.166.47 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com; dmarc=pass (policy=reject) header.from=sifive.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704382970; 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=bCy1i3Gb1NX5g0K1r9bUje/jgcenFppGeFwkwujTXi4=; b=gbT4lDYFlvlIw+Ep4he4JPW0z7NsSJzng1NtvQws8qNKh2i5NyZGOXbFHsJj8DP4BoaZA3 FQJq0lfUIa2WMs6pDBlRFBX0jq5CChwRp0Bx/MxAvQN8sSF6IeLQYymFrhg7zc94CFtjKH YLHioknzoE/Aj2T26gHEAdoAUg5yU7E= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704382970; a=rsa-sha256; cv=none; b=x47rj+8yijtecGHB7fHH7Aau4m9A8JOR3ex8NUX2aA7sQ8HiF3VgR1CYmkQcXAhA1dCAF9 poJcbXBnuD5G4PdmtFmwgpNl4i1M5Mf2vA7rczyNydCGMiDFjyK6w5mGCgVEVO/OqDe/6d +m54tQbfrU5GzqrDVtbonTbCMhFyqsU= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b=aaDROjZI; spf=pass (imf21.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.166.47 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com; dmarc=pass (policy=reject) header.from=sifive.com Received: by mail-io1-f47.google.com with SMTP id ca18e2360f4ac-7bafda3999cso24231039f.0 for ; Thu, 04 Jan 2024 07:42:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1704382970; x=1704987770; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=bCy1i3Gb1NX5g0K1r9bUje/jgcenFppGeFwkwujTXi4=; b=aaDROjZIeViMXZiSbywSYQL6c+i86W8UBj+LFVQeCxTkhwFxquhp5WLpJwWa/KRZWR CjhKMQWD8FdgOh49TL9+7A3l1HfDm5PLxCw+gXkOz8byD7csQBToWwzAH47APhgs4Avw 8Z9fCm80ddx8N5LRRwC84tUNvAfUxsg+afcpzpZeUEDsnV+V+RZneRnanD+wVsQTC1uS Wxpfwe5f9mc9b7SdIoCRIsCxc4YBUV+IXersa3wRkpdF8yCFeCkFIYC32KOFSwzDwUBQ 1Fzfjm1invmWM4VBuuMvDgItSDxhDGr1oI7iKoRLMDO90YQiklQYfRbHvKdlHvmNi2Fc 3IbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704382970; x=1704987770; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=bCy1i3Gb1NX5g0K1r9bUje/jgcenFppGeFwkwujTXi4=; b=bWDDLH3MzWLzS7qzt5SsdCuASLLL6fjkmlY13xDTXfXbCi7hq2EalkRhy1LYd9hUQR uM+1243SOKoSmYnxBwRSIrnM33YP9fEYRKLQyjPON95Z49pSseOvJAitFTxWfJlMQzec /zmkyfTSGF3UK7CBsLm8PWbRvR1Mb8WWw0qvwpL3QTFIa5L3un8QwKIPdp3hw1o652lP m7o2Iru0393vOHpY9kb0ILjwuvrVeeQmuAWO+sfcKkawiQSbxAilXdNIVNpd3HPsuljY V2IPaLAaKgRZy0YYgPy855+7IGqWhmZ27Q2SLQZ9WEwR8VbUJsqjz/FLOXZ0/57D9qyK 4HyQ== X-Gm-Message-State: AOJu0YxB1PKugSEi5RLo0Vmb8HdKVrF5gliQAmnR/ICGWWb1/HD/NSv1 r+IctIqG5Qa5R3BoKrg2EZ8wBLxMcHU2JQ== X-Google-Smtp-Source: AGHT+IGZEWXPVw7OSf05ViMeKZMnGrSiJ/PnLgklrDrsnQyuI8SeiKthsoOlG9HJPrpd9bUMwN9Ncw== X-Received: by 2002:a05:6602:218f:b0:79f:a25b:51c with SMTP id b15-20020a056602218f00b0079fa25b051cmr795113iob.11.1704382969798; Thu, 04 Jan 2024 07:42:49 -0800 (PST) Received: from ?IPV6:2605:a601:adae:4500:b86c:e734:b34:45c6? ([2605:a601:adae:4500:b86c:e734:b34:45c6]) by smtp.gmail.com with ESMTPSA id n7-20020a05663831c700b0046ceccc798asm7764042jav.6.2024.01.04.07.42.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Jan 2024 07:42:49 -0800 (PST) Message-ID: <057f7d38-08b7-4693-907c-b2efa6a75a22@sifive.com> Date: Thu, 4 Jan 2024 09:42:47 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 08/12] riscv: mm: Introduce cntx2asid/cntx2version helper macros Content-Language: en-US To: Alexandre Ghiti Cc: Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20240102220134.3229156-1-samuel.holland@sifive.com> <20240102220134.3229156-9-samuel.holland@sifive.com> From: Samuel Holland In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: B42E81C0002 X-Rspam-User: X-Stat-Signature: k3bdrnwatry4sq1pxt369ntcjeqfuod9 X-Rspamd-Server: rspam03 X-HE-Tag: 1704382970-184788 X-HE-Meta: U2FsdGVkX18MODshrjq4EJnXbQCfAUR/f/9Fc5IVNMqXIipcd/kQ7wiKsZUw4xqLt7VAH+VCy8z9pSKV0X2E5m9GNPKy5R0LgmfNjaI1RDR1Pj2D315HvcisftBeXIHAB+7cIpae3Bx8rBXw4ILIEd13czWGre3t/ZbhIwMjyd004EtyMeAjcu4VFVzAm24LR2HQbzfomN/f1haTa0de3rMo/MiJbEwqyKxeyuVIFeWVBV5ogcSsuC2gkxPWkv4Iu2y8HxPec7vlqYObncoDNJVJy+hNloApAoCPqzUGhDF1EP/D2Zv2NamuT/gpv5yb8W3XxK6oKFQNCjMdMpAHZlrv3s37xGEGJx7F0hMQZRB58EHITSNDpWaA6Axi/J1Bsjq2NHDMYjvtjgLFuDDKgQEAz6IE5C34gU6PwwnqwaQpqCSTPn3nMLLqFinc45qcbMalv/BSTs+5qMmczk70fZGykmRPtL48jIVOkuyURSMdB7mZNdgW8UdNrlkHRqArRkCnPSJhZrAyS/p/yTKJb92tNPbsq0J4DfO5u4RaW0qBB1Cy17ZFco36qWDQotED/MerU9QzatYnardYtE5kqSUS+d3Jf1xwmZQmvHNBcHd70CjCCWwYv9na6LR//Dc0wKhF2QumL2JF1qsmp6GmwyiDu0wv4f8J34i1F3DpHxwSI3YRSMStzFiO3eIuH2GCdZISG2EvotO0m2Qv19M6GqrNHttxHVGkW+l4WsfdIL1fJ60pBrtBuroLdCvSZbtXBeEhrt4vgH8FBr63D6y+RVD2IHtRcHrE4pRs3cbUZVuWLD7x7GReeQAZ/flC7763/O3+hwBs0P/UXCpwyqGwNRdsciU2b+fdwim+fG8km+yoDSZPHqSRxs5X7TWOj8aNv4P/uGDO9rI2vDB6avutWPzkKTxuDp6xeeFxdBMbp1bVMH6Codcmzo1yWZwFzzE2GcospUQbNWHVO16KAGX AlHy+12a 6Ip3flnHjBntqsbbcl7rM+Ry9du8ZPgHvfXs7HyrBJAfkSGj8B/JpGPCaF5Kb7X5BZjfcameXcWCIyfMJLWJvx+FEO1bWqa7oOCmLKZal23knmK/UM17MiySStaaBOfk7s1ddBVnZUK9ZAN91wwdQovQiw+53ad/qQDKy7xQ0L61KKn/5m12AbppkdxPq06xysIOkjXiV3Shj1WTDWpAjnBlMNEUpxf9cZ/WqMZ/FzIcy4j4v6EksFBEvJmTh2XYgcUNMO2Td4diKm55/2aDHSTsBPUgPoTdyRdNEsdZPAmVKyowGG8RZd7DVVf9+uoz53wZea75jRGy+SoRoqA3Td7WLb7xhUnO5ECNdLVccQhZVvAChLiLrGx5Aj3egkp2vW+F/jT4nq/6z01x7XRwAQwQFIRsHrOlGKC/MOQdMnPlTnnk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000031, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Alex, On 2024-01-04 6:39 AM, Alexandre Ghiti wrote: > On Tue, Jan 2, 2024 at 11:01 PM 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. Thanks for the review. I'm not really a fan of it either, but I tried to match precedent from other architectures. These loosely follow the naming of ctxid2asid() from arm64 and idx2asid() from csky. arm uses ASID(). Regards, Samuel >> + >> 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 == 0) >> cntx = 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) = cntx; >> } >> >> @@ -102,7 +102,7 @@ static unsigned long __new_context(struct mm_struct *mm) >> lockdep_assert_held(&context_lock); >> >> if (cntx != 0) { >> - unsigned long newcntx = ver | (cntx & asid_mask); >> + unsigned long newcntx = ver | cntx2asid(cntx); >> >> /* >> * If our current CONTEXT was active during a rollover, we >> @@ -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_map)) >> + 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, unsigned int cpu) >> */ >> old_active_cntx = atomic_long_read(&per_cpu(active_context, cpu)); >> if (old_active_cntx && >> - ((cntx & ~asid_mask) == atomic_long_read(¤t_version)) && >> + (cntx2version(cntx) == 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, unsigned int cpu) >> >> /* Check that our ASID belongs to the current_version. */ >> cntx = atomic_long_read(&mm->context.id); >> - if ((cntx & ~asid_mask) != atomic_long_read(¤t_version)) { >> + if (cntx2version(cntx) != atomic_long_read(¤t_version)) { >> cntx = __new_context(mm); >> atomic_long_set(&mm->context.id, cntx); >> } >> @@ -191,7 +191,7 @@ static void set_mm_asid(struct mm_struct *mm, unsigned 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, unsigned long start, >> return; >> >> if (static_branch_unlikely(&use_asid_allocator)) >> - asid = atomic_long_read(&mm->context.id) & asid_mask; >> + asid = cntx2asid(atomic_long_read(&mm->context.id)); >> } else { >> cmask = cpu_online_mask; >> } >> -- >> 2.42.0 >> > > You can add: > > Reviewed-by: Alexandre Ghiti > > Thanks, > > Alex