From: Conor Dooley <conor@kernel.org>
To: Jisheng Zhang <jszhang@kernel.org>
Cc: Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Alexandre Ghiti <alex@ghiti.fr>,
Andrey Ryabinin <ryabinin.a.a@gmail.com>,
Alexander Potapenko <glider@google.com>,
Andrey Konovalov <andreyknvl@gmail.com>,
Dmitry Vyukov <dvyukov@google.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org,
kasan-dev@googlegroups.com
Subject: Re: [PATCH v3 3/5] riscv: support early isa ext and use it to optimize pgtable_l4|l5_enabled
Date: Fri, 25 Sep 2026 16:01:24 +0100 [thread overview]
Message-ID: <20260925-hermit-unguided-6092dbf18a69@spud> (raw)
In-Reply-To: <20260909150158.9313-4-jszhang@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 2779 bytes --]
On Wed, Sep 09, 2026 at 11:01:56PM +0800, Jisheng Zhang wrote:
> The pgtable_l4|[l5]_enabled check sits at hot code path, performance
> is impacted a lot. Since pgtable_l4|[l5]_enabled isn't changed after
> boot, we can use alternative mechanism to optimize them.
>
> So the question is whether we can add RISCV_ISA_EXT_SV48/SV5 and use
> riscv_has_extension_*() or not. Per [1] and [2], SV48 and SV57 are ISA
> exensions too. From another side, riscv_has_extension_[un]likely() and
> other related functions report whether the extension is supported and
> enabled on the platform. So SV48 and SV57 can be supported with current
> isa extension alternative mechanism.
>
> However, to use it to optimize pgtable_l4|l5_enabled, we have support
> the "early" characteristic, I.E besides risc_isa bitmap setting, we
> need to support appling alternative early before MMU on.
>
> After that, use it to optimize pgtable_l4|l5_enabled.
>
> For the typical access_ok(addr, 1);
> before the patch:
>
> ...
> auipc a5,0xb43
> lbu a5,100(a5) # ffffffff80b51f68 <pgtable_l5_enabled>
> bnez a5,ffffffff8000ef46 <foo+0x56>
> auipc a5,0xb43
> lbu a5,91(a5) # ffffffff80b51f69 <pgtable_l4_enabled>
> beqz a5,ffffffff8000ef5a <foo+0x6a>
> ...
>
> after the patch:
> These memory load and test branch instructions are replaced with only
> two j or nop instructions.
>
> Initial test lmbench's lat_syscall write on TH1520 platforms shows that
> the write syscall latency is reduced by about 2.38%.
>
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> Link: https://github.com/riscv/riscv-isa-manual/blob/main/src/profiles/profiles.adoc [1]
> Link: https://riscv.atlassian.net/wiki/spaces/HOME/pages/16154732/Ratified+ISA+Extensions [2]
I don't love the early business at all, but I do prefer this diff to the
previous one.
> @@ -1147,6 +1159,8 @@ void __init riscv_fill_hwcap(void)
> isa2hwcap[RISCV_ISA_EXT_C] = COMPAT_HWCAP_ISA_C;
> isa2hwcap[RISCV_ISA_EXT_V] = COMPAT_HWCAP_ISA_V;
>
> + bitmap_zero(riscv_isa, RISCV_ISA_EXT_MAX);
> +
The only real gripe I have is that this should probably have a comment
explaining why it is being zeroed. I can see reasons to zero it (fresh
slate) and to keep it (otherwise nothing will set the sv48/sv57 bits in
the register, since we don't actually read the associated devicetree
properties after this point).
From my point of view, with this niggle resolved, I'm happy with the
code that's here but I have no opinion on whether or not this should be
done in the first place. Conditional on the comment,
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Thanks,
Conor.
> if (!acpi_disabled) {
> riscv_fill_hwcap_from_isa_string(isa2hwcap);
> } else {
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2026-09-25 15:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-09 15:01 [PATCH v3 0/5] " Jisheng Zhang
2026-09-09 15:01 ` [PATCH v3 1/5] riscv: remove RISCV_ALTERNATIVE Kconfig option Jisheng Zhang
2026-09-09 15:01 ` [PATCH v3 2/5] riscv: convert pgtable_l4|l5_enabled to inline function Jisheng Zhang
2026-09-09 15:01 ` [PATCH v3 3/5] riscv: support early isa ext and use it to optimize pgtable_l4|l5_enabled Jisheng Zhang
2026-09-25 15:01 ` Conor Dooley [this message]
2026-09-09 15:01 ` [PATCH v3 4/5] riscv: introduce RISCV_ISA_SV48 and RISCV_ISA_SV57 Jisheng Zhang
2026-09-25 14:43 ` Conor Dooley
2026-09-09 15:01 ` [PATCH v3 5/5] riscv: mm: unexport _pgtable_l4_enabled and _pgtable_l5_enabled Jisheng Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260925-hermit-unguided-6092dbf18a69@spud \
--to=conor@kernel.org \
--cc=alex@ghiti.fr \
--cc=andreyknvl@gmail.com \
--cc=aou@eecs.berkeley.edu \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=jszhang@kernel.org \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=ryabinin.a.a@gmail.com \
--cc=vincenzo.frascino@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®