Re: [PATCH v5 00/13] riscv: improve boot time isa extensions handling

From: Guenter Roeck
Date: Sun Feb 12 2023 - 13:14:21 EST


On 2/12/23 10:06, Conor Dooley wrote:
On Sun, Feb 12, 2023 at 05:06:09PM +0000, Conor Dooley wrote:
On Sun, Feb 12, 2023 at 04:33:58PM +0000, Conor Dooley wrote:
On Sun, Feb 12, 2023 at 03:59:59PM +0000, Conor Dooley wrote:

So as not to lead anyone up the garden path, let me correct myself:

Hmm, so this appears to be us attempting to patch in alternatives where
none actually exists - seemingly F & D.

And of course that's not true, riscv_has_extension_likely() now uses
alternatives as of:
bdda5d554e43 ("riscv: introduce riscv_has_extension_[un]likely()")

From a quick look, it just happens that the only users are F & D.


Samuel pointed out that this is a lockdep splat on irc.
There's a patch on the list that removes the lockdep annotation
entirely:
https://patchwork.kernel.org/project/linux-riscv/patch/20230202114116.3695793-1-changbin.du@xxxxxxxxxx/

So ye, no surprises that it was config based!

Palmer posted a "better" fix for that lockdep warning a while ago:
https://lore.kernel.org/all/20220322022331.32136-1-palmer@xxxxxxxxxxxx/

So we'd have to duplicate/reuse that for cpufeature/errata patching.



This does not (only) happen in stop_machine().

[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: CPU: 0 PID: 0 at arch/riscv/kernel/patch.c:63 patch_insn_write+0x222/0x2f6
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.2.0-rc7-next-20230210 #1
[ 0.000000] Hardware name: riscv-virtio,qemu (DT)
[ 0.000000] epc : patch_insn_write+0x222/0x2f6
[ 0.000000] ra : patch_insn_write+0x21e/0x2f6
[ 0.000000] epc : ffffffff800068c6 ra : ffffffff800068c2 sp : ffffffff81803df0
[ 0.000000] gp : ffffffff81a1ab78 tp : ffffffff81814f80 t0 : ffffffffffffe000
[ 0.000000] t1 : fffffffffafdfb03 t2 : 4c45203a76637369 s0 : ffffffff81803e40
[ 0.000000] s1 : 0000000000000004 a0 : 0000000000000000 a1 : ffffffffffffffff
[ 0.000000] a2 : 0000000000000004 a3 : 0000000000000000 a4 : 0000000000000001
[ 0.000000] a5 : 0000000000000000 a6 : 0000000000000006 a7 : 0000000000000010
[ 0.000000] s2 : ffffffff8000431a s3 : 00000000000000b2 s4 : ffffffff800040ae
[ 0.000000] s5 : 00000000000000ae s6 : ffffffff8131a0a0 s7 : 0000000000000fff
[ 0.000000] s8 : 0000000008000200 s9 : ffffffff8131a520 s10: 0000000000000018
[ 0.000000] s11: 0000000000000008 t3 : 0000000022e125d2 t4 : 000000000000000d
[ 0.000000] t5 : ffffffffd8180000 t6 : ffffffff81803bc8
[ 0.000000] status: 0000000200000100 badaddr: 0000000000000000 cause: 0000000000000003
[ 0.000000] [<ffffffff800068c6>] patch_insn_write+0x222/0x2f6
[ 0.000000] [<ffffffff80006a36>] patch_text_nosync+0xc/0x2a
[ 0.000000] [<ffffffff80003b86>] riscv_cpufeature_patch_func+0x52/0x98
[ 0.000000] [<ffffffff80003348>] _apply_alternatives+0x46/0x86
[ 0.000000] [<ffffffff80c02d36>] apply_boot_alternatives+0x3c/0xfa
[ 0.000000] [<ffffffff80c03ad8>] setup_arch+0x584/0x5b8
[ 0.000000] [<ffffffff80c0075a>] start_kernel+0xa2/0x8f8
[ 0.000000] irq event stamp: 0
[ 0.000000] hardirqs last enabled at (0): [<0000000000000000>] 0x0
[ 0.000000] hardirqs last disabled at (0): [<0000000000000000>] 0x0
[ 0.000000] softirqs last enabled at (0): [<0000000000000000>] 0x0
[ 0.000000] softirqs last disabled at (0): [<0000000000000000>] 0x0
[ 0.000000] ---[ end trace 0000000000000000 ]---

Guenter